1
1
import { afterEach , beforeEach , describe , expect , test , vi } from 'vitest'
2
- import { waitFor } from '@testing-library/dom'
3
2
import { CancelledError , InfiniteQueryObserver } from '..'
4
3
import { createQueryClient , queryKey , sleep } from './utils'
5
4
import type {
@@ -14,13 +13,15 @@ describe('InfiniteQueryBehavior', () => {
14
13
let queryCache : QueryCache
15
14
16
15
beforeEach ( ( ) => {
16
+ vi . useFakeTimers ( )
17
17
queryClient = createQueryClient ( )
18
18
queryCache = queryClient . getQueryCache ( )
19
19
queryClient . mount ( )
20
20
} )
21
21
22
22
afterEach ( ( ) => {
23
23
queryClient . clear ( )
24
+ vi . useRealTimers ( )
24
25
} )
25
26
26
27
test ( 'InfiniteQueryBehavior should throw an error if the queryFn is not defined' , async ( ) => {
@@ -41,7 +42,7 @@ describe('InfiniteQueryBehavior', () => {
41
42
observerResult = result
42
43
} )
43
44
44
- await waitFor ( ( ) => {
45
+ await vi . waitFor ( ( ) => {
45
46
const query = queryCache . find ( { queryKey : key } ) !
46
47
return expect ( observerResult ) . toMatchObject ( {
47
48
isError : true ,
@@ -79,7 +80,7 @@ describe('InfiniteQueryBehavior', () => {
79
80
} )
80
81
81
82
// Wait for the first page to be fetched
82
- await waitFor ( ( ) =>
83
+ await vi . waitFor ( ( ) =>
83
84
expect ( observerResult ) . toMatchObject ( {
84
85
isFetching : false ,
85
86
data : { pages : [ 1 ] , pageParams : [ 1 ] } ,
@@ -231,7 +232,7 @@ describe('InfiniteQueryBehavior', () => {
231
232
query . cancel ( )
232
233
233
234
// Wait for the first page to be cancelled
234
- await waitFor ( ( ) =>
235
+ await vi . waitFor ( ( ) =>
235
236
expect ( observerResult ) . toMatchObject ( {
236
237
isFetching : false ,
237
238
isError : true ,
@@ -280,7 +281,7 @@ describe('InfiniteQueryBehavior', () => {
280
281
} )
281
282
282
283
// Wait for the first page to be fetched
283
- await waitFor ( ( ) =>
284
+ await vi . waitFor ( ( ) =>
284
285
expect ( observerResult ) . toMatchObject ( {
285
286
isFetching : false ,
286
287
data : { pages : [ 1 ] , pageParams : [ 1 ] } ,
@@ -385,25 +386,32 @@ describe('InfiniteQueryBehavior', () => {
385
386
} )
386
387
387
388
// 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
+ } )
390
393
391
394
// 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
+ } )
394
399
395
400
// 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
+ } )
398
405
399
406
// Now the real deal; re-fetching this query **should not** stamp into an
400
407
// infinite loop where the retryer every time restarts from page 1
401
408
// once it reaches the page where it errors.
402
409
// For this to work, we'd need to reset the error count so we actually retry
403
410
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
+ } )
407
415
} )
408
416
409
417
test ( 'should fetch even if initialPageParam is null' , async ( ) => {
@@ -424,7 +432,7 @@ describe('InfiniteQueryBehavior', () => {
424
432
observerResult = result
425
433
} )
426
434
427
- await waitFor ( ( ) =>
435
+ await vi . waitFor ( ( ) =>
428
436
expect ( observerResult ) . toMatchObject ( {
429
437
isFetching : false ,
430
438
data : { pages : [ 'data' ] , pageParams : [ null ] } ,
0 commit comments