Skip to content

Commit 67695ef

Browse files
sukvvonmanudeli
andauthored
test(react-query/useIsFetching): remove 'vi.waitFor', add 'advanceTimersByTimeAsync' and replace 'findByText' with 'getByText' (#9358)
Co-authored-by: Jonghyeon Ko <[email protected]>
1 parent 03aca2e commit 67695ef

File tree

1 file changed

+27
-39
lines changed

1 file changed

+27
-39
lines changed

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

Lines changed: 27 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
22
import { fireEvent, render } from '@testing-library/react'
33
import * as React from 'react'
4-
import { queryKey } from '@tanstack/query-test-utils'
4+
import { queryKey, sleep } from '@tanstack/query-test-utils'
55
import { QueryCache, QueryClient, useIsFetching, useQuery } from '..'
66
import { renderWithClient, setActTimeout } from './utils'
77

@@ -31,7 +31,7 @@ describe('useIsFetching', () => {
3131
useQuery({
3232
queryKey: key,
3333
queryFn: async () => {
34-
await vi.advanceTimersByTimeAsync(50)
34+
await sleep(50)
3535
return 'test'
3636
},
3737
enabled: ready,
@@ -51,19 +51,15 @@ describe('useIsFetching', () => {
5151

5252
const { getByText, getByRole } = renderWithClient(queryClient, <Page />)
5353

54-
await vi.waitFor(() => {
55-
expect(getByText('isFetching: 0')).toBeInTheDocument()
56-
})
54+
expect(getByText('isFetching: 0')).toBeInTheDocument()
5755

5856
fireEvent.click(getByRole('button', { name: /setReady/i }))
5957

60-
await vi.waitFor(() => {
61-
expect(getByText('isFetching: 1')).toBeInTheDocument()
62-
})
58+
await vi.advanceTimersByTimeAsync(0)
59+
expect(getByText('isFetching: 1')).toBeInTheDocument()
6360

64-
await vi.waitFor(() => {
65-
expect(getByText('isFetching: 0')).toBeInTheDocument()
66-
})
61+
await vi.advanceTimersByTimeAsync(51)
62+
expect(getByText('isFetching: 0')).toBeInTheDocument()
6763
})
6864

6965
it('should not update state while rendering', async () => {
@@ -85,7 +81,7 @@ describe('useIsFetching', () => {
8581
useQuery({
8682
queryKey: key1,
8783
queryFn: async () => {
88-
await vi.advanceTimersByTimeAsync(100)
84+
await sleep(100)
8985
return 'data'
9086
},
9187
})
@@ -96,7 +92,7 @@ describe('useIsFetching', () => {
9692
useQuery({
9793
queryKey: key2,
9894
queryFn: async () => {
99-
await vi.advanceTimersByTimeAsync(100)
95+
await sleep(100)
10096
return 'data'
10197
},
10298
})
@@ -123,9 +119,8 @@ describe('useIsFetching', () => {
123119

124120
renderWithClient(queryClient, <Page />)
125121

126-
await vi.waitFor(() => {
127-
expect(isFetchingArray).toEqual([0, 1, 1, 2, 1, 0])
128-
})
122+
await vi.advanceTimersByTimeAsync(151)
123+
expect(isFetchingArray).toEqual([0, 1, 1, 2, 1, 0])
129124
})
130125

131126
it('should be able to filter', async () => {
@@ -139,7 +134,7 @@ describe('useIsFetching', () => {
139134
useQuery({
140135
queryKey: key1,
141136
queryFn: async () => {
142-
await vi.advanceTimersByTimeAsync(10)
137+
await sleep(10)
143138
return 'test'
144139
},
145140
})
@@ -150,7 +145,7 @@ describe('useIsFetching', () => {
150145
useQuery({
151146
queryKey: key2,
152147
queryFn: async () => {
153-
await vi.advanceTimersByTimeAsync(20)
148+
await sleep(20)
154149
return 'test'
155150
},
156151
})
@@ -177,21 +172,17 @@ describe('useIsFetching', () => {
177172
)
178173
}
179174

180-
const { findByText, getByRole } = renderWithClient(queryClient, <Page />)
175+
const { getByText, getByRole } = renderWithClient(queryClient, <Page />)
181176

182-
await vi.waitFor(() => {
183-
findByText('isFetching: 0')
184-
})
177+
getByText('isFetching: 0')
185178

186179
fireEvent.click(getByRole('button', { name: /setStarted/i }))
187180

188-
await vi.waitFor(() => {
189-
findByText('isFetching: 1')
190-
})
181+
await vi.advanceTimersByTimeAsync(0)
182+
getByText('isFetching: 1')
191183

192-
await vi.waitFor(() => {
193-
findByText('isFetching: 0')
194-
})
184+
await vi.advanceTimersByTimeAsync(11)
185+
getByText('isFetching: 0')
195186

196187
// at no point should we have isFetching: 2
197188
expect(isFetchingArray).toEqual(expect.not.arrayContaining([2]))
@@ -205,7 +196,7 @@ describe('useIsFetching', () => {
205196
useQuery({
206197
queryKey: key,
207198
queryFn: async () => {
208-
await vi.advanceTimersByTimeAsync(10)
199+
await sleep(10)
209200
return 'test'
210201
},
211202
})
@@ -221,13 +212,11 @@ describe('useIsFetching', () => {
221212

222213
const rendered = renderWithClient(queryClient, <Page />)
223214

224-
await vi.waitFor(() => {
225-
expect(rendered.getByText('isFetching: 1')).toBeInTheDocument()
226-
})
215+
await vi.advanceTimersByTimeAsync(0)
216+
expect(rendered.getByText('isFetching: 1')).toBeInTheDocument()
227217

228-
await vi.waitFor(() => {
229-
expect(rendered.getByText('isFetching: 0')).toBeInTheDocument()
230-
})
218+
await vi.advanceTimersByTimeAsync(11)
219+
expect(rendered.getByText('isFetching: 0')).toBeInTheDocument()
231220
})
232221

233222
it('should use provided custom queryClient', async () => {
@@ -239,7 +228,7 @@ describe('useIsFetching', () => {
239228
{
240229
queryKey: key,
241230
queryFn: async () => {
242-
await vi.advanceTimersByTimeAsync(10)
231+
await sleep(10)
243232
return 'test'
244233
},
245234
},
@@ -257,8 +246,7 @@ describe('useIsFetching', () => {
257246

258247
const rendered = render(<Page></Page>)
259248

260-
await vi.waitFor(() => {
261-
expect(rendered.getByText('isFetching: 1')).toBeInTheDocument()
262-
})
249+
await vi.advanceTimersByTimeAsync(0)
250+
expect(rendered.getByText('isFetching: 1')).toBeInTheDocument()
263251
})
264252
})

0 commit comments

Comments
 (0)