Skip to content

Commit c9daf2c

Browse files
sukvvonmanudeli
andauthored
test(react-query/usePrefetchQuery): remove 'vi.waitFor' and add 'advanceTimersByTimeAsync' (#9355)
Co-authored-by: Jonghyeon Ko <[email protected]>
1 parent fd7c655 commit c9daf2c

File tree

1 file changed

+25
-26
lines changed

1 file changed

+25
-26
lines changed

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

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
22
import React from 'react'
3-
import { fireEvent } from '@testing-library/react'
3+
import { act, fireEvent } from '@testing-library/react'
44
import { ErrorBoundary } from 'react-error-boundary'
5-
import { queryKey } from '@tanstack/query-test-utils'
5+
import { queryKey, sleep } from '@tanstack/query-test-utils'
66
import {
77
QueryCache,
88
QueryClient,
@@ -18,7 +18,7 @@ const generateQueryFn = (data: string) =>
1818
vi
1919
.fn<(...args: Array<any>) => Promise<string>>()
2020
.mockImplementation(async () => {
21-
await vi.advanceTimersByTimeAsync(10)
21+
await sleep(10)
2222

2323
return data
2424
})
@@ -72,7 +72,8 @@ describe('usePrefetchQuery', () => {
7272

7373
const rendered = renderWithClient(queryClient, <App />)
7474

75-
await vi.waitFor(() => rendered.getByText('data: prefetchQuery'))
75+
await act(() => vi.advanceTimersByTimeAsync(11))
76+
rendered.getByText('data: prefetchQuery')
7677
expect(queryOpts.queryFn).toHaveBeenCalledTimes(1)
7778
})
7879

@@ -92,14 +93,13 @@ describe('usePrefetchQuery', () => {
9293
)
9394
}
9495

95-
await queryClient.fetchQuery(queryOpts)
96+
queryClient.fetchQuery(queryOpts)
97+
await vi.advanceTimersByTimeAsync(10)
9698
queryOpts.queryFn.mockClear()
9799
const rendered = renderWithClient(queryClient, <App />)
98100

99101
expect(rendered.queryByText('fetching: true')).not.toBeInTheDocument()
100-
await vi.waitFor(() =>
101-
rendered.getByText('data: The usePrefetchQuery hook is smart!'),
102-
)
102+
rendered.getByText('data: The usePrefetchQuery hook is smart!')
103103
expect(queryOpts.queryFn).not.toHaveBeenCalled()
104104
})
105105

@@ -114,7 +114,7 @@ describe('usePrefetchQuery', () => {
114114
}
115115

116116
queryFn.mockImplementationOnce(async () => {
117-
await vi.advanceTimersByTimeAsync(10)
117+
await sleep(10)
118118

119119
throw new Error('Oops! Server error!')
120120
})
@@ -131,11 +131,12 @@ describe('usePrefetchQuery', () => {
131131
)
132132
}
133133

134-
await queryClient.prefetchQuery(queryOpts)
134+
queryClient.prefetchQuery(queryOpts)
135+
await vi.advanceTimersByTimeAsync(10)
135136
queryFn.mockClear()
136137
const rendered = renderWithClient(queryClient, <App />)
137138

138-
await vi.waitFor(() => rendered.getByText('Oops!'))
139+
rendered.getByText('Oops!')
139140
expect(rendered.queryByText('data: Not an error')).not.toBeInTheDocument()
140141
expect(queryOpts.queryFn).not.toHaveBeenCalled()
141142

@@ -166,7 +167,8 @@ describe('usePrefetchQuery', () => {
166167
}
167168

168169
const rendered = renderWithClient(queryClient, <App />)
169-
await vi.waitFor(() => rendered.getByText('data: prefetchedQuery'))
170+
await act(() => vi.advanceTimersByTimeAsync(11))
171+
rendered.getByText('data: prefetchedQuery')
170172
expect(queryOpts.queryFn).toHaveBeenCalledTimes(1)
171173
})
172174

@@ -181,7 +183,7 @@ describe('usePrefetchQuery', () => {
181183
}
182184

183185
queryFn.mockImplementationOnce(async () => {
184-
await vi.advanceTimersByTimeAsync(10)
186+
await sleep(10)
185187

186188
throw new Error('Oops! Server error!')
187189
})
@@ -207,16 +209,16 @@ describe('usePrefetchQuery', () => {
207209
)
208210
}
209211

210-
await queryClient.prefetchQuery(queryOpts)
212+
queryClient.prefetchQuery(queryOpts)
213+
await vi.advanceTimersByTimeAsync(10)
211214
queryFn.mockClear()
212215

213216
const rendered = renderWithClient(queryClient, <App />)
214217

215-
await vi.waitFor(() => rendered.getByText('Oops!'))
218+
rendered.getByText('Oops!')
216219
fireEvent.click(rendered.getByText('Try again'))
217-
await vi.waitFor(() =>
218-
rendered.getByText('data: This is fine :dog: :fire:'),
219-
)
220+
await act(() => vi.advanceTimersByTimeAsync(11))
221+
rendered.getByText('data: This is fine :dog: :fire:')
220222
expect(queryOpts.queryFn).toHaveBeenCalledTimes(1)
221223
consoleMock.mockRestore()
222224
})
@@ -265,14 +267,11 @@ describe('usePrefetchQuery', () => {
265267
expect(
266268
queryClient.getQueryState(thirdQueryOpts.queryKey)?.fetchStatus,
267269
).toBe('fetching')
268-
await vi.waitFor(() => rendered.getByText('Loading...'))
269-
await vi.waitFor(() => rendered.getByText('data: Prefetch is nice!'))
270-
await vi.waitFor(() =>
271-
rendered.getByText('data: Prefetch is really nice!!'),
272-
)
273-
await vi.waitFor(() =>
274-
rendered.getByText('data: Prefetch does not create waterfalls!!'),
275-
)
270+
rendered.getByText('Loading...')
271+
await act(() => vi.advanceTimersByTimeAsync(11))
272+
rendered.getByText('data: Prefetch is nice!')
273+
rendered.getByText('data: Prefetch is really nice!!')
274+
rendered.getByText('data: Prefetch does not create waterfalls!!')
276275
expect(Fallback).toHaveBeenCalledTimes(1)
277276
expect(firstQueryOpts.queryFn).toHaveBeenCalledTimes(1)
278277
expect(secondQueryOpts.queryFn).toHaveBeenCalledTimes(1)

0 commit comments

Comments
 (0)