jest.setup.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import React from 'react';
  2. import '@testing-library/jest-dom/extend-expect';
  3. import { server } from '../../src/client/mocks/server';
  4. // Mock next/router
  5. // eslint-disable-next-line global-require
  6. jest.mock('next/router', () => require('next-router-mock'));
  7. jest.mock('react-markdown', () => ({
  8. __esModule: true,
  9. default: () => <div data-testid="markdown" />,
  10. }));
  11. jest.mock('remark-breaks', () => () => ({}));
  12. jest.mock('remark-gfm', () => () => ({}));
  13. jest.mock('rehype-raw', () => () => ({}));
  14. console.error = jest.fn();
  15. class ResizeObserver {
  16. observe() {}
  17. unobserve() {}
  18. disconnect() {}
  19. }
  20. // Mock localStorage
  21. const localStorageMock = (() => {
  22. let store: Record<string, string> = {};
  23. return {
  24. getItem(key: string) {
  25. return store[key] || null;
  26. },
  27. setItem(key: string, value: string) {
  28. store[key] = value.toString();
  29. },
  30. removeItem(key: string) {
  31. delete store[key];
  32. },
  33. clear() {
  34. store = {};
  35. },
  36. };
  37. })();
  38. Object.defineProperty(window, 'localStorage', { value: localStorageMock });
  39. Object.defineProperty(window, 'ResizeObserver', { value: ResizeObserver });
  40. Object.defineProperty(window, 'MutationObserver', { value: ResizeObserver });
  41. Object.defineProperty(window, 'matchMedia', {
  42. value: () => {
  43. return {
  44. matches: false,
  45. addListener: () => {},
  46. removeListener: () => {},
  47. };
  48. },
  49. });
  50. beforeAll(() => {
  51. // Enable the mocking in tests.
  52. server.listen();
  53. });
  54. beforeEach(async () => {});
  55. afterEach(() => {
  56. // Reset any runtime handlers tests may use.
  57. server.resetHandlers();
  58. });
  59. afterAll(() => {
  60. // Clean up once the tests are done.
  61. server.close();
  62. });