Skip to content

Commit 068b764

Browse files
authoredApr 12, 2025··
test(query-core): use fakeTimers for infiniteQueryBehavior.test.tsx (#8961)
* test(query-core): use fakeTimers for infiniteQueryBehavior.test.tsx * chore: update * chore: reflect review
1 parent 3bf217d commit 068b764

File tree

1 file changed

+23
-15
lines changed

1 file changed

+23
-15
lines changed
 

Diff for: ‎packages/query-core/src/__tests__/infiniteQueryBehavior.test.tsx

+23-15
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'
2-
import { waitFor } from '@testing-library/dom'
32
import { CancelledError, InfiniteQueryObserver } from '..'
43
import { createQueryClient, queryKey, sleep } from './utils'
54
import type {
@@ -14,13 +13,15 @@ describe('InfiniteQueryBehavior', () => {
1413
let queryCache: QueryCache
1514

1615
beforeEach(() => {
16+
vi.useFakeTimers()
1717
queryClient = createQueryClient()
1818
queryCache = queryClient.getQueryCache()
1919
queryClient.mount()
2020
})
2121

2222
afterEach(() => {
2323
queryClient.clear()
24+
vi.useRealTimers()
2425
})
2526

2627
test('InfiniteQueryBehavior should throw an error if the queryFn is not defined', async () => {
@@ -41,7 +42,7 @@ describe('InfiniteQueryBehavior', () => {
4142
observerResult = result
4243
})
4344

44-
await waitFor(() => {
45+
await vi.waitFor(() => {
4546
const query = queryCache.find({ queryKey: key })!
4647
return expect(observerResult).toMatchObject({
4748
isError: true,
@@ -79,7 +80,7 @@ describe('InfiniteQueryBehavior', () => {
7980
})
8081

8182
// Wait for the first page to be fetched
82-
await waitFor(() =>
83+
await vi.waitFor(() =>
8384
expect(observerResult).toMatchObject({
8485
isFetching: false,
8586
data: { pages: [1], pageParams: [1] },
@@ -231,7 +232,7 @@ describe('InfiniteQueryBehavior', () => {
231232
query.cancel()
232233

233234
// Wait for the first page to be cancelled
234-
await waitFor(() =>
235+
await vi.waitFor(() =>
235236
expect(observerResult).toMatchObject({
236237
isFetching: false,
237238
isError: true,
@@ -280,7 +281,7 @@ describe('InfiniteQueryBehavior', () => {
280281
})
281282

282283
// Wait for the first page to be fetched
283-
await waitFor(() =>
284+
await vi.waitFor(() =>
284285
expect(observerResult).toMatchObject({
285286
isFetching: false,
286287
data: { pages: [1], pageParams: [1] },
@@ -385,25 +386,32 @@ describe('InfiniteQueryBehavior', () => {
385386
})
386387

387388
// Fetch Page 1
388-
const page1Data = await observer.fetchNextPage()
389-
expect(page1Data.data?.pageParams).toEqual([1])
389+
await vi.waitFor(async () => {
390+
const page1Data = await observer.fetchNextPage()
391+
expect(page1Data.data?.pageParams).toEqual([1])
392+
})
390393

391394
// Fetch Page 2, as per the queryFn, this will reject 2 times then resolves
392-
const page2Data = await observer.fetchNextPage()
393-
expect(page2Data.data?.pageParams).toEqual([1, 2])
395+
await vi.waitFor(async () => {
396+
const page2Data = await observer.fetchNextPage()
397+
expect(page2Data.data?.pageParams).toEqual([1, 2])
398+
})
394399

395400
// Fetch Page 3
396-
const page3Data = await observer.fetchNextPage()
397-
expect(page3Data.data?.pageParams).toEqual([1, 2, 3])
401+
await vi.waitFor(async () => {
402+
const page3Data = await observer.fetchNextPage()
403+
expect(page3Data.data?.pageParams).toEqual([1, 2, 3])
404+
})
398405

399406
// Now the real deal; re-fetching this query **should not** stamp into an
400407
// infinite loop where the retryer every time restarts from page 1
401408
// once it reaches the page where it errors.
402409
// For this to work, we'd need to reset the error count so we actually retry
403410
errorCount = 0
404-
const reFetchedData = await observer.refetch()
405-
406-
expect(reFetchedData.data?.pageParams).toEqual([1, 2, 3])
411+
await vi.waitFor(async () => {
412+
const reFetchedData = await observer.refetch()
413+
expect(reFetchedData.data?.pageParams).toEqual([1, 2, 3])
414+
})
407415
})
408416

409417
test('should fetch even if initialPageParam is null', async () => {
@@ -424,7 +432,7 @@ describe('InfiniteQueryBehavior', () => {
424432
observerResult = result
425433
})
426434

427-
await waitFor(() =>
435+
await vi.waitFor(() =>
428436
expect(observerResult).toMatchObject({
429437
isFetching: false,
430438
data: { pages: ['data'], pageParams: [null] },

0 commit comments

Comments
 (0)
Please sign in to comment.