Skip to content

Commit 801cc2b

Browse files
authored
Merge branch 'main' into test/react-query-usePrefetchQuery-add-advanceTimersByTimeAsync-remove-waitFor
2 parents f266491 + 058c1eb commit 801cc2b

File tree

5 files changed

+66
-61
lines changed

5 files changed

+66
-61
lines changed

.github/workflows/autofix.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
- name: Setup Tools
2323
uses: tanstack/config/.github/setup@main
2424
- name: Fix formatting
25-
run: pnpm prettier:write
25+
run: pnpm run prettier:write
2626
- name: Apply fixes
2727
uses: autofix-ci/action@635ffb0c9798bd160680f18fd73371e355b85f27
2828
with:

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ describe('QueryClientProvider', () => {
4343
</QueryClientProvider>,
4444
)
4545

46-
await vi.waitFor(() => rendered.getByText('test'))
46+
await vi.advanceTimersByTimeAsync(11)
47+
rendered.getByText('test')
4748

4849
expect(queryCache.find({ queryKey: key })).toBeDefined()
4950
})
@@ -94,8 +95,9 @@ describe('QueryClientProvider', () => {
9495
</>,
9596
)
9697

97-
await vi.waitFor(() => rendered.getByText('test1'))
98-
await vi.waitFor(() => rendered.getByText('test2'))
98+
await vi.advanceTimersByTimeAsync(11)
99+
rendered.getByText('test1')
100+
rendered.getByText('test2')
99101

100102
expect(queryCache1.find({ queryKey: key1 })).toBeDefined()
101103
expect(queryCache1.find({ queryKey: key2 })).not.toBeDefined()
@@ -135,7 +137,8 @@ describe('QueryClientProvider', () => {
135137
</QueryClientProvider>,
136138
)
137139

138-
await vi.waitFor(() => rendered.getByText('test'))
140+
await vi.advanceTimersByTimeAsync(11)
141+
rendered.getByText('test')
139142

140143
expect(queryCache.find({ queryKey: key })).toBeDefined()
141144
expect(queryCache.find({ queryKey: key })?.options.gcTime).toBe(Infinity)

packages/react-query/src/__tests__/fine-grained-persister.test.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ describe('fine grained persister', () => {
6868

6969
const rendered = renderWithClient(queryClient, <Test />)
7070

71-
await vi.waitFor(() => rendered.getByText('Works from persister'))
71+
await vi.advanceTimersByTimeAsync(0)
72+
rendered.getByText('Works from persister')
7273
expect(spy).not.toHaveBeenCalled()
7374
})
7475

@@ -123,8 +124,10 @@ describe('fine grained persister', () => {
123124

124125
const rendered = renderWithClient(queryClient, <Test />)
125126

126-
await vi.waitFor(() => rendered.getByText('Works from persister'))
127-
await vi.waitFor(() => rendered.getByText('Works from queryFn'))
127+
await vi.advanceTimersByTimeAsync(5)
128+
rendered.getByText('Works from persister')
129+
await vi.advanceTimersByTimeAsync(1)
130+
rendered.getByText('Works from queryFn')
128131
expect(spy).toHaveBeenCalledTimes(1)
129132
})
130133

@@ -162,7 +165,8 @@ describe('fine grained persister', () => {
162165

163166
const rendered = renderWithClient(queryClient, <Test />)
164167

165-
await vi.waitFor(() => rendered.getByText('Works from queryFn'))
168+
await vi.advanceTimersByTimeAsync(0)
169+
rendered.getByText('Works from queryFn')
166170
expect(spy).toHaveBeenCalledTimes(1)
167171

168172
const storedItem = await storage.getItem(`${PERSISTER_KEY_PREFIX}-${hash}`)

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
})

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

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,12 @@ describe('useIsMutating', () => {
6262
// [ +0, 1, 2, 1, +0 ]
6363
// our batching strategy might yield different results
6464

65-
await vi.waitFor(() => expect(isMutatingArray[0]).toEqual(0))
66-
await vi.waitFor(() => expect(isMutatingArray[1]).toEqual(1))
67-
await vi.waitFor(() => expect(isMutatingArray[2]).toEqual(2))
68-
await vi.waitFor(() =>
69-
expect(isMutatingArray[isMutatingArray.length - 1]).toEqual(0),
70-
)
65+
await vi.advanceTimersByTimeAsync(40)
66+
expect(isMutatingArray[0]).toEqual(0)
67+
expect(isMutatingArray[1]).toEqual(1)
68+
expect(isMutatingArray[2]).toEqual(2)
69+
await vi.advanceTimersByTimeAsync(1)
70+
expect(isMutatingArray[isMutatingArray.length - 1]).toEqual(0)
7171
})
7272

7373
it('should filter correctly by mutationKey', async () => {
@@ -99,7 +99,8 @@ describe('useIsMutating', () => {
9999
}
100100

101101
renderWithClient(queryClient, <Page />)
102-
await vi.waitFor(() => expect(isMutatingArray).toEqual([0, 1, 0]))
102+
await vi.advanceTimersByTimeAsync(101)
103+
expect(isMutatingArray).toEqual([0, 1, 0])
103104
})
104105

105106
it('should filter correctly by predicate', async () => {
@@ -134,7 +135,8 @@ describe('useIsMutating', () => {
134135
}
135136

136137
renderWithClient(queryClient, <Page />)
137-
await vi.waitFor(() => expect(isMutatingArray).toEqual([0, 1, 0]))
138+
await vi.advanceTimersByTimeAsync(101)
139+
expect(isMutatingArray).toEqual([0, 1, 0])
138140
})
139141

140142
it('should use provided custom queryClient', async () => {
@@ -163,13 +165,20 @@ describe('useIsMutating', () => {
163165

164166
const rendered = render(<Page></Page>)
165167

166-
await vi.waitFor(() =>
167-
expect(rendered.getByText('mutating: 1')).toBeInTheDocument(),
168-
)
168+
await vi.advanceTimersByTimeAsync(0)
169+
expect(rendered.getByText('mutating: 1')).toBeInTheDocument()
169170
})
170171
})
171172

172173
describe('useMutationState', () => {
174+
beforeEach(() => {
175+
vi.useFakeTimers()
176+
})
177+
178+
afterEach(() => {
179+
vi.useRealTimers()
180+
})
181+
173182
it('should return variables after calling mutate', async () => {
174183
const queryClient = new QueryClient()
175184
const variables: Array<Array<unknown>> = []
@@ -211,11 +220,12 @@ describe('useMutationState', () => {
211220

212221
const rendered = renderWithClient(queryClient, <Page />)
213222

214-
await vi.waitFor(() => rendered.getByText('data: null'))
223+
rendered.getByText('data: null')
215224

216225
fireEvent.click(rendered.getByRole('button', { name: /mutate/i }))
217226

218-
await vi.waitFor(() => rendered.getByText('data: data1'))
227+
await vi.advanceTimersByTimeAsync(151)
228+
rendered.getByText('data: data1')
219229

220230
expect(variables).toEqual([[], [1], []])
221231
})

0 commit comments

Comments
 (0)