CLI for Oblique Strategies.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.3 KiB

  1. import {
  2. describe,
  3. it,
  4. expect,
  5. vi, beforeAll, afterAll, beforeEach, afterEach, SpyInstanceFn,
  6. } from 'vitest';
  7. import { main, PRESENTATION } from '../app';
  8. import * as presenters from '../presenters';
  9. vi.mock('@theoryofnekomata/oblique-strategies-core');
  10. vi.mock('chalk');
  11. vi.mock('wrap-ansi');
  12. vi.mock('../readers/file');
  13. vi.mock('../readers/http');
  14. vi.mock('../readers/https');
  15. vi.mock('../readers/text');
  16. vi.mock('../presenters');
  17. describe('presenters', () => {
  18. let defaultConsole: typeof console;
  19. beforeAll(() => {
  20. defaultConsole = console;
  21. global.console = {
  22. log: () => {
  23. // noop
  24. },
  25. } as unknown as typeof console;
  26. });
  27. afterAll(() => {
  28. global.console = defaultConsole;
  29. });
  30. describe.each(PRESENTATION)('%s', (presentation) => {
  31. let presenterFn: SpyInstanceFn<[], Promise<void>>;
  32. beforeEach(() => {
  33. presenterFn = vi.fn(() => Promise.resolve());
  34. vi.mocked(presenters[presentation]).mockReturnValueOnce(presenterFn);
  35. });
  36. afterEach(() => {
  37. vi.mocked(presenters[presentation]).mockReset();
  38. });
  39. it('displays the card', async () => {
  40. await main({
  41. presentation,
  42. formatted: false,
  43. cards: ['default'],
  44. });
  45. expect(presenters[presentation]).toBeCalled();
  46. expect(presenterFn).toBeCalled();
  47. });
  48. });
  49. });