import { describe, it, expect, vi, beforeAll, afterAll, beforeEach, afterEach, SpyInstanceFn, } from 'vitest'; import { main, PRESENTATION } 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('presenters', () => { let defaultConsole: typeof console; beforeAll(() => { defaultConsole = console; global.console = { log: () => { // noop }, } as unknown as typeof console; }); afterAll(() => { global.console = defaultConsole; }); describe.each(PRESENTATION)('%s', (presentation) => { let presenterFn: SpyInstanceFn<[], Promise>; beforeEach(() => { presenterFn = vi.fn(() => Promise.resolve()); vi.mocked(presenters[presentation]).mockReturnValueOnce(presenterFn); }); afterEach(() => { vi.mocked(presenters[presentation]).mockReset(); }); it('displays the card', async () => { await main({ presentation, formatted: false, cards: ['default'], }); expect(presenters[presentation]).toBeCalled(); expect(presenterFn).toBeCalled(); }); }); });