Skip to content

Commit 36eca99

Browse files
authored
test(query-core): use fake timers for infiniteQueryObserver.test.tsx (#8775)
* test(query-core): use fake timers for infiniteQueryObserver.test.tsx * test(query-core): add sleep in queryFn like in real situation
1 parent 2c8cf3c commit 36eca99

File tree

1 file changed

+31
-23
lines changed

1 file changed

+31
-23
lines changed

‎packages/query-core/src/__tests__/infiniteQueryObserver.test.tsx

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,21 @@ describe('InfiniteQueryObserver', () => {
77
let queryClient: QueryClient
88

99
beforeEach(() => {
10+
vi.useFakeTimers()
1011
queryClient = createQueryClient()
1112
queryClient.mount()
1213
})
1314

1415
afterEach(() => {
1516
queryClient.clear()
17+
vi.useRealTimers()
1618
})
1719

1820
test('InfiniteQueryObserver should be able to fetch an infinite query with selector', async () => {
1921
const key = queryKey()
2022
const observer = new InfiniteQueryObserver(queryClient, {
2123
queryKey: key,
22-
queryFn: () => 1,
24+
queryFn: () => sleep(10).then(() => 1),
2325
select: (data) => ({
2426
pages: data.pages.map((x) => `${x}`),
2527
pageParams: data.pageParams,
@@ -31,7 +33,7 @@ describe('InfiniteQueryObserver', () => {
3133
const unsubscribe = observer.subscribe((result) => {
3234
observerResult = result
3335
})
34-
await sleep(1)
36+
await vi.advanceTimersByTimeAsync(10)
3537
unsubscribe()
3638
expect(observerResult).toMatchObject({
3739
data: { pages: ['1'], pageParams: [1] },
@@ -44,7 +46,7 @@ describe('InfiniteQueryObserver', () => {
4446
}
4547

4648
const key = queryKey()
47-
const queryFn = vi.fn(() => 1)
49+
const queryFn = vi.fn(() => sleep(10).then(() => 1))
4850
const observer = new InfiniteQueryObserver(queryClient, {
4951
meta,
5052
queryKey: key,
@@ -60,7 +62,7 @@ describe('InfiniteQueryObserver', () => {
6062
const unsubscribe = observer.subscribe((result) => {
6163
observerResult = result
6264
})
63-
await sleep(1)
65+
await vi.advanceTimersByTimeAsync(10)
6466
unsubscribe()
6567
expect(observerResult).toMatchObject({
6668
data: { pages: ['1'], pageParams: [1] },
@@ -74,7 +76,7 @@ describe('InfiniteQueryObserver', () => {
7476
let all: Array<string> = []
7577
const observer = new InfiniteQueryObserver(queryClient, {
7678
queryKey: key,
77-
queryFn: ({ pageParam }) => String(pageParam),
79+
queryFn: ({ pageParam }) => sleep(10).then(() => String(pageParam)),
7880
initialPageParam: 1,
7981
getNextPageParam: (_, __, lastPageParam, allPageParams) => {
8082
single.push('next' + lastPageParam)
@@ -87,17 +89,21 @@ describe('InfiniteQueryObserver', () => {
8789
return firstPageParam - 1
8890
},
8991
})
92+
await vi.advanceTimersByTimeAsync(10)
9093

91-
await observer.fetchNextPage()
92-
await observer.fetchPreviousPage()
94+
observer.fetchNextPage()
95+
await vi.advanceTimersByTimeAsync(10)
96+
observer.fetchPreviousPage()
97+
await vi.advanceTimersByTimeAsync(10)
9398

9499
expect(single).toEqual(['next1', 'prev1', 'prev1', 'next1', 'prev0'])
95100
expect(all).toEqual(['next1', 'prev1', 'prev1', 'next0,1', 'prev0,1'])
96101

97102
single = []
98103
all = []
99104

100-
await observer.refetch()
105+
observer.refetch()
106+
await vi.advanceTimersByTimeAsync(20)
101107

102108
expect(single).toEqual(['next0', 'next1', 'prev0'])
103109
expect(all).toEqual(['next0', 'next0,1', 'prev0,1'])
@@ -111,17 +117,13 @@ describe('InfiniteQueryObserver', () => {
111117

112118
const observer = new InfiniteQueryObserver(queryClient, {
113119
queryKey: key,
114-
queryFn: ({ pageParam }) => String(pageParam),
120+
queryFn: ({ pageParam }) => sleep(10).then(() => String(pageParam)),
115121
initialPageParam: 1,
116122
getNextPageParam: getNextPageParam.mockImplementation(
117-
(_, __, lastPageParam) => {
118-
return lastPageParam + 1
119-
},
123+
(_, __, lastPageParam) => lastPageParam + 1,
120124
),
121125
getPreviousPageParam: getPreviousPageParam.mockImplementation(
122-
(_, __, firstPageParam) => {
123-
return firstPageParam - 1
124-
},
126+
(_, __, firstPageParam) => firstPageParam - 1,
125127
),
126128
})
127129

@@ -142,7 +144,7 @@ describe('InfiniteQueryObserver', () => {
142144
const key = queryKey()
143145
let next: number | undefined = 2
144146
const queryFn = vi.fn<(...args: Array<any>) => any>(({ pageParam }) =>
145-
String(pageParam),
147+
sleep(10).then(() => String(pageParam)),
146148
)
147149
const observer = new InfiniteQueryObserver(queryClient, {
148150
queryKey: key,
@@ -151,16 +153,19 @@ describe('InfiniteQueryObserver', () => {
151153
getNextPageParam: () => next,
152154
})
153155

154-
await observer.fetchNextPage()
155-
await observer.fetchNextPage()
156+
observer.fetchNextPage()
157+
await vi.advanceTimersByTimeAsync(10)
158+
observer.fetchNextPage()
159+
await vi.advanceTimersByTimeAsync(10)
156160

157161
expect(observer.getCurrentResult().data?.pages).toEqual(['1', '2'])
158162
expect(queryFn).toBeCalledTimes(2)
159163
expect(observer.getCurrentResult().hasNextPage).toBe(true)
160164

161165
next = undefined
162166

163-
await observer.refetch()
167+
observer.refetch()
168+
await vi.advanceTimersByTimeAsync(10)
164169

165170
expect(observer.getCurrentResult().data?.pages).toEqual(['1'])
166171
expect(queryFn).toBeCalledTimes(3)
@@ -171,7 +176,7 @@ describe('InfiniteQueryObserver', () => {
171176
const key = queryKey()
172177
let next: number | null = 2
173178
const queryFn = vi.fn<(...args: Array<any>) => any>(({ pageParam }) =>
174-
String(pageParam),
179+
sleep(10).then(() => String(pageParam)),
175180
)
176181
const observer = new InfiniteQueryObserver(queryClient, {
177182
queryKey: key,
@@ -180,16 +185,19 @@ describe('InfiniteQueryObserver', () => {
180185
getNextPageParam: () => next,
181186
})
182187

183-
await observer.fetchNextPage()
184-
await observer.fetchNextPage()
188+
observer.fetchNextPage()
189+
await vi.advanceTimersByTimeAsync(10)
190+
observer.fetchNextPage()
191+
await vi.advanceTimersByTimeAsync(10)
185192

186193
expect(observer.getCurrentResult().data?.pages).toEqual(['1', '2'])
187194
expect(queryFn).toBeCalledTimes(2)
188195
expect(observer.getCurrentResult().hasNextPage).toBe(true)
189196

190197
next = null
191198

192-
await observer.refetch()
199+
observer.refetch()
200+
await vi.advanceTimersByTimeAsync(10)
193201

194202
expect(observer.getCurrentResult().data?.pages).toEqual(['1'])
195203
expect(queryFn).toBeCalledTimes(3)

0 commit comments

Comments
 (0)