@@ -7,19 +7,21 @@ describe('InfiniteQueryObserver', () => {
7
7
let queryClient : QueryClient
8
8
9
9
beforeEach ( ( ) => {
10
+ vi . useFakeTimers ( )
10
11
queryClient = createQueryClient ( )
11
12
queryClient . mount ( )
12
13
} )
13
14
14
15
afterEach ( ( ) => {
15
16
queryClient . clear ( )
17
+ vi . useRealTimers ( )
16
18
} )
17
19
18
20
test ( 'InfiniteQueryObserver should be able to fetch an infinite query with selector' , async ( ) => {
19
21
const key = queryKey ( )
20
22
const observer = new InfiniteQueryObserver ( queryClient , {
21
23
queryKey : key ,
22
- queryFn : ( ) => 1 ,
24
+ queryFn : ( ) => sleep ( 10 ) . then ( ( ) => 1 ) ,
23
25
select : ( data ) => ( {
24
26
pages : data . pages . map ( ( x ) => `${ x } ` ) ,
25
27
pageParams : data . pageParams ,
@@ -31,7 +33,7 @@ describe('InfiniteQueryObserver', () => {
31
33
const unsubscribe = observer . subscribe ( ( result ) => {
32
34
observerResult = result
33
35
} )
34
- await sleep ( 1 )
36
+ await vi . advanceTimersByTimeAsync ( 10 )
35
37
unsubscribe ( )
36
38
expect ( observerResult ) . toMatchObject ( {
37
39
data : { pages : [ '1' ] , pageParams : [ 1 ] } ,
@@ -44,7 +46,7 @@ describe('InfiniteQueryObserver', () => {
44
46
}
45
47
46
48
const key = queryKey ( )
47
- const queryFn = vi . fn ( ( ) => 1 )
49
+ const queryFn = vi . fn ( ( ) => sleep ( 10 ) . then ( ( ) => 1 ) )
48
50
const observer = new InfiniteQueryObserver ( queryClient , {
49
51
meta,
50
52
queryKey : key ,
@@ -60,7 +62,7 @@ describe('InfiniteQueryObserver', () => {
60
62
const unsubscribe = observer . subscribe ( ( result ) => {
61
63
observerResult = result
62
64
} )
63
- await sleep ( 1 )
65
+ await vi . advanceTimersByTimeAsync ( 10 )
64
66
unsubscribe ( )
65
67
expect ( observerResult ) . toMatchObject ( {
66
68
data : { pages : [ '1' ] , pageParams : [ 1 ] } ,
@@ -74,7 +76,7 @@ describe('InfiniteQueryObserver', () => {
74
76
let all : Array < string > = [ ]
75
77
const observer = new InfiniteQueryObserver ( queryClient , {
76
78
queryKey : key ,
77
- queryFn : ( { pageParam } ) => String ( pageParam ) ,
79
+ queryFn : ( { pageParam } ) => sleep ( 10 ) . then ( ( ) => String ( pageParam ) ) ,
78
80
initialPageParam : 1 ,
79
81
getNextPageParam : ( _ , __ , lastPageParam , allPageParams ) => {
80
82
single . push ( 'next' + lastPageParam )
@@ -87,17 +89,21 @@ describe('InfiniteQueryObserver', () => {
87
89
return firstPageParam - 1
88
90
} ,
89
91
} )
92
+ await vi . advanceTimersByTimeAsync ( 10 )
90
93
91
- await observer . fetchNextPage ( )
92
- await observer . fetchPreviousPage ( )
94
+ observer . fetchNextPage ( )
95
+ await vi . advanceTimersByTimeAsync ( 10 )
96
+ observer . fetchPreviousPage ( )
97
+ await vi . advanceTimersByTimeAsync ( 10 )
93
98
94
99
expect ( single ) . toEqual ( [ 'next1' , 'prev1' , 'prev1' , 'next1' , 'prev0' ] )
95
100
expect ( all ) . toEqual ( [ 'next1' , 'prev1' , 'prev1' , 'next0,1' , 'prev0,1' ] )
96
101
97
102
single = [ ]
98
103
all = [ ]
99
104
100
- await observer . refetch ( )
105
+ observer . refetch ( )
106
+ await vi . advanceTimersByTimeAsync ( 20 )
101
107
102
108
expect ( single ) . toEqual ( [ 'next0' , 'next1' , 'prev0' ] )
103
109
expect ( all ) . toEqual ( [ 'next0' , 'next0,1' , 'prev0,1' ] )
@@ -111,17 +117,13 @@ describe('InfiniteQueryObserver', () => {
111
117
112
118
const observer = new InfiniteQueryObserver ( queryClient , {
113
119
queryKey : key ,
114
- queryFn : ( { pageParam } ) => String ( pageParam ) ,
120
+ queryFn : ( { pageParam } ) => sleep ( 10 ) . then ( ( ) => String ( pageParam ) ) ,
115
121
initialPageParam : 1 ,
116
122
getNextPageParam : getNextPageParam . mockImplementation (
117
- ( _ , __ , lastPageParam ) => {
118
- return lastPageParam + 1
119
- } ,
123
+ ( _ , __ , lastPageParam ) => lastPageParam + 1 ,
120
124
) ,
121
125
getPreviousPageParam : getPreviousPageParam . mockImplementation (
122
- ( _ , __ , firstPageParam ) => {
123
- return firstPageParam - 1
124
- } ,
126
+ ( _ , __ , firstPageParam ) => firstPageParam - 1 ,
125
127
) ,
126
128
} )
127
129
@@ -142,7 +144,7 @@ describe('InfiniteQueryObserver', () => {
142
144
const key = queryKey ( )
143
145
let next : number | undefined = 2
144
146
const queryFn = vi . fn < ( ...args : Array < any > ) => any > ( ( { pageParam } ) =>
145
- String ( pageParam ) ,
147
+ sleep ( 10 ) . then ( ( ) => String ( pageParam ) ) ,
146
148
)
147
149
const observer = new InfiniteQueryObserver ( queryClient , {
148
150
queryKey : key ,
@@ -151,16 +153,19 @@ describe('InfiniteQueryObserver', () => {
151
153
getNextPageParam : ( ) => next ,
152
154
} )
153
155
154
- await observer . fetchNextPage ( )
155
- await observer . fetchNextPage ( )
156
+ observer . fetchNextPage ( )
157
+ await vi . advanceTimersByTimeAsync ( 10 )
158
+ observer . fetchNextPage ( )
159
+ await vi . advanceTimersByTimeAsync ( 10 )
156
160
157
161
expect ( observer . getCurrentResult ( ) . data ?. pages ) . toEqual ( [ '1' , '2' ] )
158
162
expect ( queryFn ) . toBeCalledTimes ( 2 )
159
163
expect ( observer . getCurrentResult ( ) . hasNextPage ) . toBe ( true )
160
164
161
165
next = undefined
162
166
163
- await observer . refetch ( )
167
+ observer . refetch ( )
168
+ await vi . advanceTimersByTimeAsync ( 10 )
164
169
165
170
expect ( observer . getCurrentResult ( ) . data ?. pages ) . toEqual ( [ '1' ] )
166
171
expect ( queryFn ) . toBeCalledTimes ( 3 )
@@ -171,7 +176,7 @@ describe('InfiniteQueryObserver', () => {
171
176
const key = queryKey ( )
172
177
let next : number | null = 2
173
178
const queryFn = vi . fn < ( ...args : Array < any > ) => any > ( ( { pageParam } ) =>
174
- String ( pageParam ) ,
179
+ sleep ( 10 ) . then ( ( ) => String ( pageParam ) ) ,
175
180
)
176
181
const observer = new InfiniteQueryObserver ( queryClient , {
177
182
queryKey : key ,
@@ -180,16 +185,19 @@ describe('InfiniteQueryObserver', () => {
180
185
getNextPageParam : ( ) => next ,
181
186
} )
182
187
183
- await observer . fetchNextPage ( )
184
- await observer . fetchNextPage ( )
188
+ observer . fetchNextPage ( )
189
+ await vi . advanceTimersByTimeAsync ( 10 )
190
+ observer . fetchNextPage ( )
191
+ await vi . advanceTimersByTimeAsync ( 10 )
185
192
186
193
expect ( observer . getCurrentResult ( ) . data ?. pages ) . toEqual ( [ '1' , '2' ] )
187
194
expect ( queryFn ) . toBeCalledTimes ( 2 )
188
195
expect ( observer . getCurrentResult ( ) . hasNextPage ) . toBe ( true )
189
196
190
197
next = null
191
198
192
- await observer . refetch ( )
199
+ observer . refetch ( )
200
+ await vi . advanceTimersByTimeAsync ( 10 )
193
201
194
202
expect ( observer . getCurrentResult ( ) . data ?. pages ) . toEqual ( [ '1' ] )
195
203
expect ( queryFn ) . toBeCalledTimes ( 3 )
0 commit comments