77 test ,
88 vi ,
99} from 'vitest'
10- import { waitFor } from '@testing-library/dom'
1110import { QueryObserver , focusManager } from '..'
1211import { createQueryClient , queryKey , sleep } from './utils'
1312import type { QueryClient , QueryObserverResult } from '..'
@@ -16,6 +15,7 @@ describe('queryObserver', () => {
1615 let queryClient : QueryClient
1716
1817 beforeEach ( ( ) => {
18+ vi . useFakeTimers ( )
1919 queryClient = createQueryClient ( {
2020 defaultOptions : {
2121 queries : {
@@ -28,6 +28,7 @@ describe('queryObserver', () => {
2828
2929 afterEach ( ( ) => {
3030 queryClient . clear ( )
31+ vi . useRealTimers ( )
3132 } )
3233
3334 test ( 'should trigger a fetch when subscribed' , async ( ) => {
@@ -37,7 +38,6 @@ describe('queryObserver', () => {
3738 . mockReturnValue ( 'data' )
3839 const observer = new QueryObserver ( queryClient , { queryKey : key , queryFn } )
3940 const unsubscribe = observer . subscribe ( ( ) => undefined )
40- await sleep ( 1 )
4141 unsubscribe ( )
4242 expect ( queryFn ) . toHaveBeenCalledTimes ( 1 )
4343 } )
@@ -109,7 +109,7 @@ describe('queryObserver', () => {
109109 fetchStatus : 'idle' ,
110110 data : undefined ,
111111 } )
112- await waitFor ( ( ) => expect ( count ) . toBe ( 0 ) )
112+ await vi . waitFor ( ( ) => expect ( count ) . toBe ( 0 ) )
113113
114114 unsubscribe ( )
115115 } )
@@ -128,7 +128,7 @@ describe('queryObserver', () => {
128128 data : undefined ,
129129 } )
130130
131- await waitFor ( ( ) => expect ( count ) . toBe ( 1 ) )
131+ await vi . waitFor ( ( ) => expect ( count ) . toBe ( 1 ) )
132132 expect ( observer . getCurrentResult ( ) ) . toMatchObject ( {
133133 status : 'success' ,
134134 fetchStatus : 'idle' ,
@@ -158,7 +158,7 @@ describe('queryObserver', () => {
158158 data : undefined ,
159159 } )
160160
161- await waitFor ( ( ) => expect ( count ) . toBe ( 1 ) )
161+ await vi . waitFor ( ( ) => expect ( count ) . toBe ( 1 ) )
162162
163163 unsubscribe ( )
164164 } )
@@ -194,7 +194,7 @@ describe('queryObserver', () => {
194194 fetchStatus : 'fetching' ,
195195 data : undefined ,
196196 } )
197- await waitFor ( ( ) => expect ( count ) . toBe ( 1 ) )
197+ await vi . waitFor ( ( ) => expect ( count ) . toBe ( 1 ) )
198198
199199 unsubscribe ( )
200200 } )
@@ -208,20 +208,20 @@ describe('queryObserver', () => {
208208 queryClient . invalidateQueries ( { queryKey : key , refetchType : 'inactive' } )
209209
210210 // should not refetch since it was active and we only refetch inactive
211- await waitFor ( ( ) => expect ( count ) . toBe ( 0 ) )
211+ await vi . waitFor ( ( ) => expect ( count ) . toBe ( 0 ) )
212212
213213 queryClient . invalidateQueries ( { queryKey : key , refetchType : 'active' } )
214214
215215 // should refetch since it was active and we refetch active
216- await waitFor ( ( ) => expect ( count ) . toBe ( 1 ) )
216+ await vi . waitFor ( ( ) => expect ( count ) . toBe ( 1 ) )
217217
218218 // Toggle enabled
219219 enabled = false
220220
221221 // should not refetch since it is not active and we only refetch active
222222 queryClient . invalidateQueries ( { queryKey : key , refetchType : 'active' } )
223223
224- await waitFor ( ( ) => expect ( count ) . toBe ( 1 ) )
224+ await vi . waitFor ( ( ) => expect ( count ) . toBe ( 1 ) )
225225
226226 unsubscribe ( )
227227 } )
@@ -251,7 +251,7 @@ describe('queryObserver', () => {
251251 data : undefined ,
252252 } )
253253
254- await waitFor ( ( ) => expect ( count ) . toBe ( 1 ) )
254+ await vi . waitFor ( ( ) => expect ( count ) . toBe ( 1 ) )
255255
256256 // re-subscribe after data comes in
257257 unsubscribe = observer . subscribe ( vi . fn ( ) )
@@ -275,9 +275,9 @@ describe('queryObserver', () => {
275275 const unsubscribe = observer . subscribe ( ( result ) => {
276276 results . push ( result )
277277 } )
278- await sleep ( 1 )
278+ await vi . advanceTimersByTimeAsync ( 1 )
279279 observer . setOptions ( { queryKey : key2 , queryFn : ( ) => 2 } )
280- await sleep ( 1 )
280+ await vi . advanceTimersByTimeAsync ( 1 )
281281 unsubscribe ( )
282282 expect ( results . length ) . toBe ( 4 )
283283 expect ( results [ 0 ] ) . toMatchObject ( { data : undefined , status : 'pending' } )
@@ -300,7 +300,7 @@ describe('queryObserver', () => {
300300 > ( )
301301 observerResult = result
302302 } )
303- await sleep ( 1 )
303+ await vi . advanceTimersByTimeAsync ( 1 )
304304 unsubscribe ( )
305305 expect ( observerResult ) . toMatchObject ( { data : { myCount : 1 } } )
306306 } )
@@ -330,7 +330,7 @@ describe('queryObserver', () => {
330330 const unsubscribe = observer . subscribe ( ( result ) => {
331331 observerResult = result
332332 } )
333- await sleep ( 1 )
333+ await vi . advanceTimersByTimeAsync ( 1 )
334334 unsubscribe ( )
335335 expect ( observerResult ) . toMatchObject ( { data : { myCount : 1 } } )
336336 } )
@@ -374,13 +374,13 @@ describe('queryObserver', () => {
374374 const unsubscribe = observer . subscribe ( ( result ) => {
375375 results . push ( result )
376376 } )
377- await sleep ( 1 )
377+ await vi . advanceTimersByTimeAsync ( 1 )
378378 observer . setOptions ( {
379379 queryKey : key ,
380380 queryFn,
381381 select : select2 ,
382382 } )
383- await sleep ( 1 )
383+ await vi . advanceTimersByTimeAsync ( 1 )
384384 await observer . refetch ( )
385385 unsubscribe ( )
386386 expect ( count ) . toBe ( 2 )
@@ -429,13 +429,13 @@ describe('queryObserver', () => {
429429 const unsubscribe = observer . subscribe ( ( result ) => {
430430 results . push ( result )
431431 } )
432- await sleep ( 1 )
432+ await vi . advanceTimersByTimeAsync ( 1 )
433433 observer . setOptions ( {
434434 queryKey : key ,
435435 queryFn,
436436 select,
437437 } )
438- await sleep ( 1 )
438+ await vi . advanceTimersByTimeAsync ( 1 )
439439 await observer . refetch ( )
440440 unsubscribe ( )
441441 expect ( count ) . toBe ( 1 )
@@ -497,8 +497,9 @@ describe('queryObserver', () => {
497497 const unsubscribe = observer . subscribe ( ( result ) => {
498498 results . push ( result )
499499 } )
500- await sleep ( 50 )
501- await observer . refetch ( )
500+ await vi . advanceTimersByTimeAsync ( 50 )
501+ observer . refetch ( )
502+ await vi . advanceTimersByTimeAsync ( 10 )
502503 unsubscribe ( )
503504 expect ( results [ 0 ] ) . toMatchObject ( {
504505 status : 'pending' ,
@@ -546,8 +547,9 @@ describe('queryObserver', () => {
546547 const unsubscribe = observer . subscribe ( ( result ) => {
547548 results . push ( result )
548549 } )
549- await sleep ( 50 )
550- await observer . refetch ( )
550+ await vi . advanceTimersByTimeAsync ( 50 )
551+ observer . refetch ( )
552+ await vi . advanceTimersByTimeAsync ( 10 )
551553 unsubscribe ( )
552554
553555 expect ( results [ 0 ] ) . toMatchObject ( {
@@ -601,7 +603,7 @@ describe('queryObserver', () => {
601603 enabled : false ,
602604 } )
603605 const unsubscribe = observer . subscribe ( ( ) => undefined )
604- await sleep ( 1 )
606+ await vi . advanceTimersByTimeAsync ( 1 )
605607 unsubscribe ( )
606608 expect ( queryFn ) . toHaveBeenCalledTimes ( 0 )
607609 } )
@@ -617,7 +619,7 @@ describe('queryObserver', () => {
617619 enabled : ( ) => false ,
618620 } )
619621 const unsubscribe = observer . subscribe ( ( ) => undefined )
620- await sleep ( 1 )
622+ await vi . advanceTimersByTimeAsync ( 1 )
621623 unsubscribe ( )
622624 expect ( queryFn ) . toHaveBeenCalledTimes ( 0 )
623625 } )
@@ -628,7 +630,7 @@ describe('queryObserver', () => {
628630 . fn < ( ...args : Array < unknown > ) => string > ( )
629631 . mockReturnValue ( 'data' )
630632 new QueryObserver ( queryClient , { queryKey : key , queryFn } )
631- await sleep ( 1 )
633+ await vi . advanceTimersByTimeAsync ( 1 )
632634 expect ( queryFn ) . toHaveBeenCalledTimes ( 0 )
633635 } )
634636
@@ -664,7 +666,7 @@ describe('queryObserver', () => {
664666 } )
665667 observer . setOptions ( { queryKey : key , enabled : false , staleTime : 10 } )
666668 await queryClient . fetchQuery ( { queryKey : key , queryFn } )
667- await sleep ( 20 )
669+ await vi . advanceTimersByTimeAsync ( 20 )
668670 unsubscribe ( )
669671 expect ( queryFn ) . toHaveBeenCalledTimes ( 1 )
670672 expect ( results . length ) . toBe ( 2 )
@@ -690,7 +692,7 @@ describe('queryObserver', () => {
690692 results2 . push ( x )
691693 } )
692694 await queryClient . fetchQuery ( { queryKey : key , queryFn } )
693- await sleep ( 50 )
695+ await vi . advanceTimersByTimeAsync ( 50 )
694696 unsubscribe1 ( )
695697 unsubscribe2 ( )
696698 expect ( queryFn ) . toHaveBeenCalledTimes ( 1 )
@@ -715,9 +717,9 @@ describe('queryObserver', () => {
715717 retryDelay : 50 ,
716718 } )
717719 const unsubscribe = observer . subscribe ( ( ) => undefined )
718- await sleep ( 70 )
720+ await vi . advanceTimersByTimeAsync ( 70 )
719721 unsubscribe ( )
720- await sleep ( 200 )
722+ await vi . advanceTimersByTimeAsync ( 200 )
721723 expect ( count ) . toBe ( 2 )
722724 } )
723725
@@ -737,10 +739,10 @@ describe('queryObserver', () => {
737739 } )
738740 const unsubscribe = observer . subscribe ( ( ) => undefined )
739741 expect ( count ) . toBe ( 1 )
740- await sleep ( 15 )
742+ await vi . advanceTimersByTimeAsync ( 15 )
741743 expect ( count ) . toBe ( 2 )
742744 unsubscribe ( )
743- await sleep ( 10 )
745+ await vi . advanceTimersByTimeAsync ( 10 )
744746 expect ( queryClient . getQueryCache ( ) . find ( { queryKey : key } ) ) . toBeUndefined ( )
745747 expect ( count ) . toBe ( 2 )
746748 } )
@@ -764,7 +766,7 @@ describe('queryObserver', () => {
764766 results . push ( x )
765767 } )
766768
767- await sleep ( 10 )
769+ await vi . advanceTimersByTimeAsync ( 10 )
768770 unsubscribe ( )
769771
770772 expect ( results . length ) . toBe ( 2 )
@@ -849,7 +851,7 @@ describe('queryObserver', () => {
849851 } )
850852
851853 const unsubscribe = observer . subscribe ( ( ) => undefined )
852- await sleep ( 30 )
854+ await vi . advanceTimersByTimeAsync ( 30 )
853855
854856 expect ( queryFn ) . toHaveBeenCalledTimes ( 1 )
855857
@@ -872,7 +874,7 @@ describe('queryObserver', () => {
872874
873875 const unsubscribe = observer . subscribe ( ( ) => undefined )
874876
875- await sleep ( 10 )
877+ await vi . advanceTimersByTimeAsync ( 10 )
876878 expect ( observer . getCurrentResult ( ) . data ) . toBe ( data )
877879
878880 observer . setOptions ( {
@@ -949,7 +951,7 @@ describe('queryObserver', () => {
949951 results . push ( result )
950952 } )
951953
952- await sleep ( 1 )
954+ await vi . advanceTimersByTimeAsync ( 1 )
953955
954956 observer . setOptions ( {
955957 queryKey : key2 ,
@@ -961,7 +963,7 @@ describe('queryObserver', () => {
961963 select : ( data ) => data . value ,
962964 } )
963965
964- await sleep ( 1 )
966+ await vi . advanceTimersByTimeAsync ( 1 )
965967 unsubscribe ( )
966968 expect ( results . length ) . toBe ( 4 )
967969 expect ( keys . length ) . toBe ( 3 )
@@ -1016,7 +1018,7 @@ describe('queryObserver', () => {
10161018 results . push ( result )
10171019 } )
10181020
1019- await sleep ( 1 )
1021+ await vi . advanceTimersByTimeAsync ( 1 )
10201022
10211023 observer . setOptions ( {
10221024 queryKey : key2 ,
@@ -1028,7 +1030,7 @@ describe('queryObserver', () => {
10281030 } ,
10291031 } )
10301032
1031- await sleep ( 1 )
1033+ await vi . advanceTimersByTimeAsync ( 1 )
10321034 unsubscribe ( )
10331035
10341036 expect ( results . length ) . toBe ( 4 )
@@ -1079,7 +1081,7 @@ describe('queryObserver', () => {
10791081 results . push ( result )
10801082 } )
10811083
1082- await sleep ( 1 )
1084+ await vi . advanceTimersByTimeAsync ( 1 )
10831085
10841086 observer . setOptions ( {
10851087 queryKey : key2 ,
@@ -1088,7 +1090,7 @@ describe('queryObserver', () => {
10881090 select : stableSelect ,
10891091 } )
10901092
1091- await sleep ( 1 )
1093+ await vi . advanceTimersByTimeAsync ( 1 )
10921094 unsubscribe ( )
10931095
10941096 expect ( results . length ) . toBe ( 4 )
@@ -1170,8 +1172,8 @@ describe('queryObserver', () => {
11701172 }
11711173 } )
11721174
1173- await waitFor ( ( ) => expect ( results [ 0 ] ?. isStale ) . toBe ( false ) )
1174- await waitFor ( ( ) => expect ( results [ 1 ] ?. isStale ) . toBe ( true ) )
1175+ await vi . waitFor ( ( ) => expect ( results [ 0 ] ?. isStale ) . toBe ( false ) )
1176+ await vi . waitFor ( ( ) => expect ( results [ 1 ] ?. isStale ) . toBe ( true ) )
11751177
11761178 unsubscribe ( )
11771179 } )
@@ -1195,7 +1197,7 @@ describe('queryObserver', () => {
11951197 results . push ( observer . getCurrentResult ( ) )
11961198 } )
11971199
1198- await waitFor ( ( ) => {
1200+ await vi . waitFor ( ( ) => {
11991201 expect ( results . at ( - 1 ) ?. data ) . toBe ( 'data' )
12001202 } )
12011203
@@ -1228,7 +1230,7 @@ describe('queryObserver', () => {
12281230 results . push ( observer . getCurrentResult ( ) )
12291231 } )
12301232
1231- await waitFor ( ( ) => {
1233+ await vi . waitFor ( ( ) => {
12321234 expect ( results . at ( - 1 ) ?. status ) . toBe ( 'error' )
12331235 } )
12341236
@@ -1240,7 +1242,7 @@ describe('queryObserver', () => {
12401242 // fail again
12411243 const lengthBefore = results . length
12421244 observer . refetch ( )
1243- await waitFor ( ( ) => {
1245+ await vi . waitFor ( ( ) => {
12441246 expect ( results . length ) . toBeGreaterThan ( lengthBefore )
12451247 expect ( results . at ( - 1 ) ?. status ) . toBe ( 'error' )
12461248 } )
@@ -1256,7 +1258,7 @@ describe('queryObserver', () => {
12561258 succeeds = true
12571259 observer . refetch ( )
12581260
1259- await waitFor ( ( ) => {
1261+ await vi . waitFor ( ( ) => {
12601262 results . at ( - 1 ) ?. status === 'success'
12611263 } )
12621264
0 commit comments