diff --git a/packages/solid-query/src/__tests__/useIsFetching.test.tsx b/packages/solid-query/src/__tests__/useIsFetching.test.tsx index 313f74d7a3..a2eafa1400 100644 --- a/packages/solid-query/src/__tests__/useIsFetching.test.tsx +++ b/packages/solid-query/src/__tests__/useIsFetching.test.tsx @@ -1,5 +1,5 @@ -import { describe, expect, it } from 'vitest' -import { fireEvent, render, waitFor } from '@solidjs/testing-library' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { fireEvent, render } from '@solidjs/testing-library' import { Show, createEffect, createRenderEffect, createSignal } from 'solid-js' import { queryKey, sleep } from '@tanstack/query-test-utils' import { @@ -12,6 +12,14 @@ import { import { setActTimeout } from './utils' describe('useIsFetching', () => { + beforeEach(() => { + vi.useFakeTimers() + }) + + afterEach(() => { + vi.useRealTimers() + }) + // See https://github.com/tannerlinsley/react-query/issues/105 it('should update as queries start and stop fetching', async () => { const queryCache = new QueryCache() @@ -53,14 +61,14 @@ describe('useIsFetching', () => { )) - await waitFor(() => + await vi.waitFor(() => expect(rendered.getByText('isFetching: 0')).toBeInTheDocument(), ) fireEvent.click(rendered.getByRole('button', { name: /setReady/i })) - await waitFor(() => + await vi.waitFor(() => expect(rendered.getByText('isFetching: 1')).toBeInTheDocument(), ) - await waitFor(() => + await vi.waitFor(() => expect(rendered.getByText('isFetching: 0')).toBeInTheDocument(), ) }) @@ -130,7 +138,7 @@ describe('useIsFetching', () => { )) // unlike react, Updating renderSecond wont cause a rerender for FirstQuery - await waitFor(() => expect(isFetchingArray).toEqual([0, 1, 2, 1, 0])) + await vi.waitFor(() => expect(isFetchingArray).toEqual([0, 1, 2, 1, 0])) }) it('should be able to filter', async () => { @@ -192,10 +200,10 @@ describe('useIsFetching', () => { )) - await rendered.findByText('isFetching: 0') + await vi.waitFor(() => rendered.getByText('isFetching: 0')) fireEvent.click(rendered.getByRole('button', { name: /setStarted/i })) - await rendered.findByText('isFetching: 1') - await rendered.findByText('isFetching: 0') + await vi.waitFor(() => rendered.getByText('isFetching: 1')) + await vi.waitFor(() => rendered.getByText('isFetching: 0')) // at no point should we have isFetching: 2 expect(isFetchingArray).toEqual(expect.not.arrayContaining([2])) }) @@ -228,10 +236,10 @@ describe('useIsFetching', () => { )) - await waitFor(() => + await vi.waitFor(() => expect(rendered.getByText('isFetching: 1')).toBeInTheDocument(), ) - await waitFor(() => + await vi.waitFor(() => expect(rendered.getByText('isFetching: 0')).toBeInTheDocument(), ) }) @@ -263,7 +271,7 @@ describe('useIsFetching', () => { const rendered = render(() => ) - await waitFor(() => + await vi.waitFor(() => expect(rendered.getByText('isFetching: 1')).toBeInTheDocument(), ) })