|
- import * as obliqueStrategiesCore from '@theoryofnekomata/oblique-strategies-core';
- import {
- afterAll, afterEach,
- beforeAll, beforeEach,
- describe,
- expect,
- it, vi,
- } from 'vitest';
- import * as file from '../readers/file';
- import * as text from '../readers/text';
- import * as http from '../readers/http';
- import * as https from '../readers/https';
- import { main } from '../app';
- import * as presenters from '../presenters';
-
- vi.mock('@theoryofnekomata/oblique-strategies-core');
- vi.mock('chalk');
- vi.mock('wrap-ansi');
- vi.mock('../readers/file');
- vi.mock('../readers/http');
- vi.mock('../readers/https');
- vi.mock('../readers/text');
- vi.mock('../presenters');
-
- describe('readers', () => {
- let defaultConsole: typeof console;
- beforeAll(() => {
- defaultConsole = console;
- global.console = {
- log: () => {
- // noop
- },
- } as unknown as typeof console;
- });
-
- afterAll(() => {
- global.console = defaultConsole;
- });
-
- beforeAll(() => {
- vi.mocked(presenters.plain).mockReturnValue(vi.fn());
- });
-
- afterAll(() => {
- vi.mocked(presenters.plain).mockReset();
- });
-
- describe('default reader', () => {
- it('reads from default source', async () => {
- await main({
- cards: ['default'],
- formatted: false,
- presentation: 'plain',
- });
-
- expect(obliqueStrategiesCore.getDefaultCards).toBeCalled();
- });
- });
-
- describe.each([
- { type: 'file', prefix: 'file:///', reader: file },
- { type: 'text', prefix: 'text:', reader: text },
- { type: 'http', prefix: 'http://', reader: http },
- { type: 'https', prefix: 'https://', reader: https },
- ])('%s', ({ reader, prefix }) => {
- it('reads from source', async () => {
- await main({
- cards: [`${prefix}foo`],
- formatted: false,
- presentation: 'plain',
- });
-
- expect(reader.read).toBeCalled();
- });
- });
-
- describe('unknown reader', () => {
- it('throws an error', async () => {
- await expect(() => main({
- cards: ['unknown'],
- formatted: false,
- presentation: 'plain',
- }))
- .rejects
- .toThrowError();
- });
- });
- });
|