Skip to content

Commit e5f57f6

Browse files
authored
test(react-query): use fakeTimers for usePrefetchQuery.test.tsx (#8983)
1 parent 403ebd4 commit e5f57f6

File tree

1 file changed

+28
-16
lines changed

1 file changed

+28
-16
lines changed

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

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
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 { fireEvent } from '@testing-library/react'
44
import { ErrorBoundary } from 'react-error-boundary'
55
import {
66
QueryCache,
77
usePrefetchQuery,
88
useQueryErrorResetBoundary,
99
useSuspenseQuery,
1010
} from '..'
11-
import { createQueryClient, queryKey, renderWithClient, sleep } from './utils'
11+
import { createQueryClient, queryKey, renderWithClient } from './utils'
1212

1313
import type { UseSuspenseQueryOptions } from '..'
1414

1515
const generateQueryFn = (data: string) =>
1616
vi
1717
.fn<(...args: Array<any>) => Promise<string>>()
1818
.mockImplementation(async () => {
19-
await sleep(10)
19+
await vi.advanceTimersByTimeAsync(10)
2020

2121
return data
2222
})
@@ -25,6 +25,14 @@ describe('usePrefetchQuery', () => {
2525
const queryCache = new QueryCache()
2626
const queryClient = createQueryClient({ queryCache })
2727

28+
beforeEach(() => {
29+
vi.useFakeTimers()
30+
})
31+
32+
afterEach(() => {
33+
vi.useRealTimers()
34+
})
35+
2836
function Suspended<TData = unknown>(props: {
2937
queryOpts: UseSuspenseQueryOptions<TData, Error, TData, Array<string>>
3038
children?: React.ReactNode
@@ -62,7 +70,7 @@ describe('usePrefetchQuery', () => {
6270

6371
const rendered = renderWithClient(queryClient, <App />)
6472

65-
await waitFor(() => rendered.getByText('data: prefetchQuery'))
73+
await vi.waitFor(() => rendered.getByText('data: prefetchQuery'))
6674
expect(queryOpts.queryFn).toHaveBeenCalledTimes(1)
6775
})
6876

@@ -87,7 +95,7 @@ describe('usePrefetchQuery', () => {
8795
const rendered = renderWithClient(queryClient, <App />)
8896

8997
expect(rendered.queryByText('fetching: true')).not.toBeInTheDocument()
90-
await waitFor(() =>
98+
await vi.waitFor(() =>
9199
rendered.getByText('data: The usePrefetchQuery hook is smart!'),
92100
)
93101
expect(queryOpts.queryFn).not.toHaveBeenCalled()
@@ -104,7 +112,7 @@ describe('usePrefetchQuery', () => {
104112
}
105113

106114
queryFn.mockImplementationOnce(async () => {
107-
await sleep(10)
115+
await vi.advanceTimersByTimeAsync(10)
108116

109117
throw new Error('Oops! Server error!')
110118
})
@@ -125,7 +133,7 @@ describe('usePrefetchQuery', () => {
125133
queryFn.mockClear()
126134
const rendered = renderWithClient(queryClient, <App />)
127135

128-
await waitFor(() => rendered.getByText('Oops!'))
136+
await vi.waitFor(() => rendered.getByText('Oops!'))
129137
expect(rendered.queryByText('data: Not an error')).not.toBeInTheDocument()
130138
expect(queryOpts.queryFn).not.toHaveBeenCalled()
131139

@@ -156,7 +164,7 @@ describe('usePrefetchQuery', () => {
156164
}
157165

158166
const rendered = renderWithClient(queryClient, <App />)
159-
await waitFor(() => rendered.getByText('data: prefetchedQuery'))
167+
await vi.waitFor(() => rendered.getByText('data: prefetchedQuery'))
160168
expect(queryOpts.queryFn).toHaveBeenCalledTimes(1)
161169
})
162170

@@ -171,7 +179,7 @@ describe('usePrefetchQuery', () => {
171179
}
172180

173181
queryFn.mockImplementationOnce(async () => {
174-
await sleep(10)
182+
await vi.advanceTimersByTimeAsync(10)
175183

176184
throw new Error('Oops! Server error!')
177185
})
@@ -202,9 +210,11 @@ describe('usePrefetchQuery', () => {
202210

203211
const rendered = renderWithClient(queryClient, <App />)
204212

205-
await waitFor(() => rendered.getByText('Oops!'))
213+
await vi.waitFor(() => rendered.getByText('Oops!'))
206214
fireEvent.click(rendered.getByText('Try again'))
207-
await waitFor(() => rendered.getByText('data: This is fine :dog: :fire:'))
215+
await vi.waitFor(() =>
216+
rendered.getByText('data: This is fine :dog: :fire:'),
217+
)
208218
expect(queryOpts.queryFn).toHaveBeenCalledTimes(1)
209219
consoleMock.mockRestore()
210220
})
@@ -253,10 +263,12 @@ describe('usePrefetchQuery', () => {
253263
expect(
254264
queryClient.getQueryState(thirdQueryOpts.queryKey)?.fetchStatus,
255265
).toBe('fetching')
256-
await waitFor(() => rendered.getByText('Loading...'))
257-
await waitFor(() => rendered.getByText('data: Prefetch is nice!'))
258-
await waitFor(() => rendered.getByText('data: Prefetch is really nice!!'))
259-
await waitFor(() =>
266+
await vi.waitFor(() => rendered.getByText('Loading...'))
267+
await vi.waitFor(() => rendered.getByText('data: Prefetch is nice!'))
268+
await vi.waitFor(() =>
269+
rendered.getByText('data: Prefetch is really nice!!'),
270+
)
271+
await vi.waitFor(() =>
260272
rendered.getByText('data: Prefetch does not create waterfalls!!'),
261273
)
262274
expect(Fallback).toHaveBeenCalledTimes(1)

0 commit comments

Comments
 (0)