1- import { afterEach , describe , expect , expectTypeOf , it , vi } from 'vitest'
1+ import {
2+ afterEach ,
3+ beforeEach ,
4+ describe ,
5+ expect ,
6+ expectTypeOf ,
7+ it ,
8+ vi ,
9+ } from 'vitest'
210import { render } from '@testing-library/svelte'
311import { sleep } from '@tanstack/query-test-utils'
412import { QueryClient , createQueries } from '../../src/index.js'
@@ -14,9 +22,15 @@ import type {
1422} from '../../src/index.js'
1523
1624describe ( 'createQueries' , ( ) => {
17- const queryClient = new QueryClient ( )
25+ let queryClient : QueryClient
26+
27+ beforeEach ( ( ) => {
28+ vi . useFakeTimers ( )
29+ queryClient = new QueryClient ( )
30+ } )
1831
1932 afterEach ( ( ) => {
33+ vi . useRealTimers ( )
2034 queryClient . clear ( )
2135 } )
2236
@@ -50,11 +64,12 @@ describe('createQueries', () => {
5064 } )
5165
5266 resolve1 ( 1 )
53-
54- await vi . waitFor ( ( ) => expect ( result [ 0 ] . data ) . toBe ( 1 ) )
67+ await vi . advanceTimersByTimeAsync ( 0 )
68+ expect ( result [ 0 ] . data ) . toBe ( 1 )
5569
5670 resolve2 ( 2 )
57- await vi . waitFor ( ( ) => expect ( result [ 1 ] . data ) . toBe ( 2 ) )
71+ await vi . advanceTimersByTimeAsync ( 0 )
72+ expect ( result [ 1 ] . data ) . toBe ( 2 )
5873
5974 expect ( results . length ) . toBe ( 3 )
6075 expect ( results [ 0 ] ) . toMatchObject ( [
@@ -755,7 +770,8 @@ describe('createQueries', () => {
755770 results . push ( [ result [ 0 ] ] )
756771 } )
757772
758- await vi . waitFor ( ( ) => expect ( result [ 0 ] . data ) . toBe ( 1 ) )
773+ await vi . advanceTimersByTimeAsync ( 0 )
774+ expect ( result [ 0 ] . data ) . toBe ( 1 )
759775
760776 expect ( results . length ) . toBe ( 2 )
761777 expect ( results [ 0 ] ) . toMatchObject ( [ { data : undefined } ] )
@@ -764,7 +780,8 @@ describe('createQueries', () => {
764780 // Trigger refetch
765781 result [ 0 ] . refetch ( )
766782
767- await vi . waitFor ( ( ) => expect ( result [ 0 ] . data ) . toBe ( 2 ) )
783+ await vi . advanceTimersByTimeAsync ( 0 )
784+ expect ( result [ 0 ] . data ) . toBe ( 2 )
768785
769786 // Only one render for data update, no render for isFetching transition
770787 expect ( results . length ) . toBe ( 3 )
@@ -815,13 +832,13 @@ describe('createQueries', () => {
815832
816833 // Resolve the first query
817834 resolve1 ( 'first result' )
818- await vi . waitFor ( ( ) => expect ( queries . res ) . toBe ( 'first result' ) )
835+ await vi . advanceTimersByTimeAsync ( 0 )
836+ expect ( queries . res ) . toBe ( 'first result' )
819837
820838 // Resolve the second query
821839 resolve2 ( 'second result' )
822- await vi . waitFor ( ( ) =>
823- expect ( queries . res ) . toBe ( 'first result,second result' ) ,
824- )
840+ await vi . advanceTimersByTimeAsync ( 0 )
841+ expect ( queries . res ) . toBe ( 'first result,second result' )
825842
826843 expect ( queries ) . toEqual ( {
827844 combined : true ,
@@ -878,17 +895,17 @@ describe('createQueries', () => {
878895 } )
879896
880897 // Initially both queries are loading
881- await vi . waitFor ( ( ) =>
882- expect ( results [ 0 ] ) . toStrictEqual ( {
883- combined : true ,
884- refetch : expect . any ( Function ) ,
885- res : '' ,
886- } ) ,
887- )
898+ await vi . advanceTimersByTimeAsync ( 0 )
899+ expect ( results [ 0 ] ) . toStrictEqual ( {
900+ combined : true ,
901+ refetch : expect . any ( Function ) ,
902+ res : '' ,
903+ } )
888904
889905 // Resolve the first query
890906 resolve1 ( 'first result ' + count )
891- await vi . waitFor ( ( ) => expect ( queries . res ) . toBe ( 'first result 0' ) )
907+ await vi . advanceTimersByTimeAsync ( 0 )
908+ expect ( queries . res ) . toBe ( 'first result 0' )
892909
893910 expect ( results [ 1 ] ) . toStrictEqual ( {
894911 combined : true ,
@@ -898,9 +915,8 @@ describe('createQueries', () => {
898915
899916 // Resolve the second query
900917 resolve2 ( 'second result ' + count )
901- await vi . waitFor ( ( ) =>
902- expect ( queries . res ) . toBe ( 'first result 0,second result 0' ) ,
903- )
918+ await vi . advanceTimersByTimeAsync ( 0 )
919+ expect ( queries . res ) . toBe ( 'first result 0,second result 0' )
904920
905921 expect ( results [ 2 ] ) . toStrictEqual ( {
906922 combined : true ,
@@ -916,9 +932,8 @@ describe('createQueries', () => {
916932 resolve3 ( 'first result ' + count )
917933 resolve4 ( 'second result ' + count )
918934
919- await vi . waitFor ( ( ) =>
920- expect ( queries . res ) . toBe ( 'first result 1,second result 1' ) ,
921- )
935+ await vi . advanceTimersByTimeAsync ( 0 )
936+ expect ( queries . res ) . toBe ( 'first result 1,second result 1' )
922937
923938 const length = results . length
924939 expect ( results . at ( - 1 ) ) . toStrictEqual ( {
@@ -936,8 +951,6 @@ describe('createQueries', () => {
936951 )
937952
938953 it ( 'should not fetch for the duration of the restoring period when isRestoring is true' , async ( ) => {
939- vi . useFakeTimers ( )
940-
941954 const queryFn1 = vi . fn ( ( ) => sleep ( 10 ) . then ( ( ) => 'data1' ) )
942955 const queryFn2 = vi . fn ( ( ) => sleep ( 10 ) . then ( ( ) => 'data2' ) )
943956
@@ -966,13 +979,9 @@ describe('createQueries', () => {
966979 expect ( rendered . getByTestId ( 'data2' ) ) . toHaveTextContent ( 'undefined' )
967980 expect ( queryFn1 ) . toHaveBeenCalledTimes ( 0 )
968981 expect ( queryFn2 ) . toHaveBeenCalledTimes ( 0 )
969-
970- vi . useRealTimers ( )
971982 } )
972983
973984 it ( 'should not fetch queries with different durations for the duration of the restoring period when isRestoring is true' , async ( ) => {
974- vi . useFakeTimers ( )
975-
976985 const queryFn1 = vi . fn ( ( ) => sleep ( 10 ) . then ( ( ) => 'data1' ) )
977986 const queryFn2 = vi . fn ( ( ) => sleep ( 20 ) . then ( ( ) => 'data2' ) )
978987
@@ -1012,7 +1021,5 @@ describe('createQueries', () => {
10121021 expect ( rendered . getByTestId ( 'data2' ) ) . toHaveTextContent ( 'undefined' )
10131022 expect ( queryFn1 ) . toHaveBeenCalledTimes ( 0 )
10141023 expect ( queryFn2 ) . toHaveBeenCalledTimes ( 0 )
1015-
1016- vi . useRealTimers ( )
10171024 } )
10181025} )
0 commit comments