11import { afterEach , beforeEach , describe , expect , test , vi } from 'vitest'
2- import { waitFor } from '@testing-library/dom'
32import { CancelledError , InfiniteQueryObserver } from '..'
43import { createQueryClient , queryKey , sleep } from './utils'
54import 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