diff options
Diffstat (limited to 'src/utils/hooks/use-thematic/use-thematic.test.ts')
| -rw-r--r-- | src/utils/hooks/use-thematic/use-thematic.test.ts | 56 | 
1 files changed, 56 insertions, 0 deletions
| diff --git a/src/utils/hooks/use-thematic/use-thematic.test.ts b/src/utils/hooks/use-thematic/use-thematic.test.ts new file mode 100644 index 0000000..43d0a57 --- /dev/null +++ b/src/utils/hooks/use-thematic/use-thematic.test.ts @@ -0,0 +1,56 @@ +import { +  afterEach, +  beforeEach, +  describe, +  expect, +  it, +  jest, +} from '@jest/globals'; +import { renderHook, waitFor } from '@testing-library/react'; +import { wpThematicsFixture } from '../../../../tests/fixtures'; +import { ROUTES } from '../../constants'; +import { useThematic } from './use-thematic'; + +describe('useThematic', () => { +  beforeEach(() => { +    /* Not sure why it is needed, but without it Jest was complaining with +     * `Jest worker encountered 4 child process exceptions`... Maybe because of +     * useSWR? */ +    jest.useFakeTimers({ +      doNotFake: ['queueMicrotask'], +    }); +  }); + +  afterEach(() => { +    jest.runOnlyPendingTimers(); +    jest.useRealTimers(); +  }); + +  /* eslint-disable max-statements */ +  it('fetch the requested thematic', async () => { +    const { result } = renderHook(() => +      useThematic(wpThematicsFixture[0].slug) +    ); + +    // Inaccurate assertions count because of waitFor... +    //expect.assertions(8); +    expect.hasAssertions(); + +    expect(result.current.thematic).toBeUndefined(); +    expect(result.current.isError).toBe(false); +    expect(result.current.isLoading).toBe(true); +    expect(result.current.isValidating).toBe(true); + +    jest.advanceTimersToNextTimer(); + +    await waitFor(() => +      expect(result.current.thematic?.slug).toBe( +        `${ROUTES.THEMATICS}/${wpThematicsFixture[0].slug}` +      ) +    ); +    expect(result.current.isError).toBe(false); +    expect(result.current.isLoading).toBe(false); +    expect(result.current.isValidating).toBe(false); +  }); +  /* eslint-enable max-statements */ +}); | 
