Skip to content

Commit d449f6f

Browse files
sukvvonmanudeli
andauthored
test(react-query/usePrefetchInfiniteQuery): switch to fake timers, remove 'waitFor' and add 'advanceTimersByTimeAsync' (#9354)
Co-authored-by: Jonghyeon Ko <[email protected]>
1 parent ac2fa17 commit d449f6f

File tree

1 file changed

+26
-15
lines changed

1 file changed

+26
-15
lines changed

packages/react-query/src/__tests__/usePrefetchInfiniteQuery.test.tsx

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { describe, expect, it, vi } from 'vitest'
1+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
22
import React from 'react'
3-
import { fireEvent, waitFor } from '@testing-library/react'
3+
import { act, fireEvent } from '@testing-library/react'
44
import { queryKey, sleep } from '@tanstack/query-test-utils'
55
import {
66
QueryCache,
@@ -40,6 +40,14 @@ const generateInfiniteQueryOptions = (
4040
}
4141

4242
describe('usePrefetchInfiniteQuery', () => {
43+
beforeEach(() => {
44+
vi.useFakeTimers()
45+
})
46+
47+
afterEach(() => {
48+
vi.useRealTimers()
49+
})
50+
4351
const queryCache = new QueryCache()
4452
const queryClient = new QueryClient({ queryCache })
4553

@@ -98,20 +106,19 @@ describe('usePrefetchInfiniteQuery', () => {
98106

99107
const rendered = renderWithClient(queryClient, <App />)
100108

101-
await waitFor(() => rendered.getByText('data: Do you fetch on render?'))
109+
await act(() => vi.advanceTimersByTimeAsync(31))
110+
rendered.getByText('data: Do you fetch on render?')
102111
fireEvent.click(rendered.getByText('Next Page'))
103-
await waitFor(() =>
104-
rendered.getByText('data: Or do you render as you fetch?'),
105-
)
112+
rendered.getByText('data: Or do you render as you fetch?')
106113
fireEvent.click(rendered.getByText('Next Page'))
107-
await waitFor(() =>
108-
rendered.getByText('data: Either way, Tanstack Query helps you!'),
109-
)
114+
rendered.getByText('data: Either way, Tanstack Query helps you!')
110115
expect(Fallback).toHaveBeenCalledTimes(1)
111116
expect(queryOpts.queryFn).toHaveBeenCalledTimes(3)
112117
})
113118

114119
it('should not display fallback if the query cache is already populated', async () => {
120+
vi.useRealTimers()
121+
115122
const queryOpts = {
116123
queryKey: queryKey(),
117124
...generateInfiniteQueryOptions([
@@ -139,11 +146,11 @@ describe('usePrefetchInfiniteQuery', () => {
139146

140147
const rendered = renderWithClient(queryClient, <App />)
141148

142-
await waitFor(() => rendered.getByText('data: Prefetch rocks!'))
149+
rendered.getByText('data: Prefetch rocks!')
143150
fireEvent.click(rendered.getByText('Next Page'))
144-
await waitFor(() => rendered.getByText('data: No waterfalls, boy!'))
151+
rendered.getByText('data: No waterfalls, boy!')
145152
fireEvent.click(rendered.getByText('Next Page'))
146-
await waitFor(() => rendered.getByText('data: Tanstack Query #ftw'))
153+
rendered.getByText('data: Tanstack Query #ftw')
147154
expect(queryOpts.queryFn).not.toHaveBeenCalled()
148155
expect(Fallback).not.toHaveBeenCalled()
149156
})
@@ -177,11 +184,15 @@ describe('usePrefetchInfiniteQuery', () => {
177184
}
178185

179186
const rendered = renderWithClient(queryClient, <App />)
180-
await waitFor(() => rendered.getByText('data: Infinite Page 1'))
187+
188+
await act(() => vi.advanceTimersByTimeAsync(11))
189+
rendered.getByText('data: Infinite Page 1')
181190
fireEvent.click(rendered.getByText('Next Page'))
182-
await waitFor(() => rendered.getByText('data: Infinite Page 2'))
191+
await vi.advanceTimersByTimeAsync(11)
192+
rendered.getByText('data: Infinite Page 2')
183193
fireEvent.click(rendered.getByText('Next Page'))
184-
await waitFor(() => rendered.getByText('data: Infinite Page 3'))
194+
await vi.advanceTimersByTimeAsync(11)
195+
rendered.getByText('data: Infinite Page 3')
185196
expect(queryOpts.queryFn).toHaveBeenCalledTimes(3)
186197
})
187198
})

0 commit comments

Comments
 (0)