Skip to content

Commit 90b4d4f

Browse files
authored
Merge branch 'main' into test/react-query-usePrefetchQuery-add-advanceTimersByTimeAsync-remove-waitFor
2 parents a87696a + ed8cc23 commit 90b4d4f

File tree

4 files changed

+291
-304
lines changed

4 files changed

+291
-304
lines changed

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

Lines changed: 79 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { describe, expect, it, vi } from 'vitest'
2-
import { fireEvent, waitFor } from '@testing-library/react'
1+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
2+
import { act, fireEvent } from '@testing-library/react'
33
import { ErrorBoundary } from 'react-error-boundary'
44
import * as React from 'react'
55
import { queryKey, sleep } from '@tanstack/query-test-utils'
@@ -15,6 +15,14 @@ import {
1515
import { renderWithClient } from './utils'
1616

1717
describe('QueryErrorResetBoundary', () => {
18+
beforeEach(() => {
19+
vi.useFakeTimers()
20+
})
21+
22+
afterEach(() => {
23+
vi.useRealTimers()
24+
})
25+
1826
const queryCache = new QueryCache()
1927
const queryClient = new QueryClient({ queryCache })
2028

@@ -69,17 +77,13 @@ describe('QueryErrorResetBoundary', () => {
6977
</QueryErrorResetBoundary>,
7078
)
7179

72-
await waitFor(() =>
73-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
74-
)
75-
await waitFor(() =>
76-
expect(rendered.getByText('retry')).toBeInTheDocument(),
77-
)
80+
await vi.advanceTimersByTimeAsync(11)
81+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
82+
expect(rendered.getByText('retry')).toBeInTheDocument()
7883
succeed = true
7984
fireEvent.click(rendered.getByText('retry'))
80-
await waitFor(() =>
81-
expect(rendered.getByText('data')).toBeInTheDocument(),
82-
)
85+
await vi.advanceTimersByTimeAsync(11)
86+
expect(rendered.getByText('data')).toBeInTheDocument()
8387
consoleMock.mockRestore()
8488
})
8589

@@ -139,17 +143,13 @@ describe('QueryErrorResetBoundary', () => {
139143
</QueryErrorResetBoundary>,
140144
)
141145

142-
await waitFor(() =>
143-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
144-
)
145-
await waitFor(() =>
146-
expect(rendered.getByText('retry')).toBeInTheDocument(),
147-
)
146+
await vi.advanceTimersByTimeAsync(11)
147+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
148+
expect(rendered.getByText('retry')).toBeInTheDocument()
148149
succeed = true
149150
fireEvent.click(rendered.getByText('retry'))
150-
await waitFor(() =>
151-
expect(rendered.getByText('status: error')).toBeInTheDocument(),
152-
)
151+
await vi.advanceTimersByTimeAsync(11)
152+
expect(rendered.getByText('status: error')).toBeInTheDocument()
153153
consoleMock.mockRestore()
154154
})
155155

@@ -211,17 +211,13 @@ describe('QueryErrorResetBoundary', () => {
211211
</QueryErrorResetBoundary>,
212212
)
213213

214-
await waitFor(() =>
215-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
216-
)
217-
await waitFor(() =>
218-
expect(rendered.getByText('retry')).toBeInTheDocument(),
219-
)
214+
await vi.advanceTimersByTimeAsync(11)
215+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
216+
expect(rendered.getByText('retry')).toBeInTheDocument()
220217
succeed = true
221218
fireEvent.click(rendered.getByText('retry'))
222-
await waitFor(() =>
223-
expect(rendered.getByText('data')).toBeInTheDocument(),
224-
)
219+
await vi.advanceTimersByTimeAsync(11)
220+
expect(rendered.getByText('data')).toBeInTheDocument()
225221
consoleMock.mockRestore()
226222
})
227223

@@ -277,15 +273,12 @@ describe('QueryErrorResetBoundary', () => {
277273
</QueryErrorResetBoundary>,
278274
)
279275

280-
await waitFor(() =>
281-
expect(
282-
rendered.getByText('status: pending, fetchStatus: idle'),
283-
).toBeInTheDocument(),
284-
)
276+
expect(
277+
rendered.getByText('status: pending, fetchStatus: idle'),
278+
).toBeInTheDocument()
285279
fireEvent.click(rendered.getByRole('button', { name: /refetch/i }))
286-
await waitFor(() =>
287-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
288-
)
280+
await vi.advanceTimersByTimeAsync(0)
281+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
289282
consoleMock.mockRestore()
290283
})
291284

@@ -339,17 +332,13 @@ describe('QueryErrorResetBoundary', () => {
339332
</QueryErrorResetBoundary>,
340333
)
341334

342-
await waitFor(() =>
343-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
344-
)
345-
await waitFor(() =>
346-
expect(rendered.getByText('retry')).toBeInTheDocument(),
347-
)
335+
await vi.advanceTimersByTimeAsync(11)
336+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
337+
expect(rendered.getByText('retry')).toBeInTheDocument()
348338
succeed = true
349339
fireEvent.click(rendered.getByText('retry'))
350-
await waitFor(() =>
351-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
352-
)
340+
await vi.advanceTimersByTimeAsync(11)
341+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
353342
consoleMock.mockRestore()
354343
})
355344

@@ -405,17 +394,13 @@ describe('QueryErrorResetBoundary', () => {
405394
</QueryErrorResetBoundary>,
406395
)
407396

408-
await waitFor(() =>
409-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
410-
)
411-
await waitFor(() =>
412-
expect(rendered.getByText('retry')).toBeInTheDocument(),
413-
)
397+
await vi.advanceTimersByTimeAsync(11)
398+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
399+
expect(rendered.getByText('retry')).toBeInTheDocument()
414400
succeed = true
415401
fireEvent.click(rendered.getByText('retry'))
416-
await waitFor(() =>
417-
expect(rendered.getByText('data')).toBeInTheDocument(),
418-
)
402+
await vi.advanceTimersByTimeAsync(11)
403+
expect(rendered.getByText('data')).toBeInTheDocument()
419404
consoleMock.mockRestore()
420405
})
421406

@@ -475,21 +460,18 @@ describe('QueryErrorResetBoundary', () => {
475460
</QueryErrorResetBoundary>,
476461
)
477462

478-
await waitFor(() =>
479-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
480-
)
481-
await waitFor(() =>
482-
expect(rendered.getByText('retry')).toBeInTheDocument(),
483-
)
463+
await vi.advanceTimersByTimeAsync(11)
464+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
465+
expect(rendered.getByText('retry')).toBeInTheDocument()
484466
shouldReset = true
485467
fireEvent.click(rendered.getByText('retry'))
486-
await waitFor(() =>
487-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
488-
)
468+
await vi.advanceTimersByTimeAsync(11)
469+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
489470
succeed = true
490471
shouldReset = false
491472
fireEvent.click(rendered.getByText('retry'))
492-
await waitFor(() => rendered.getByText('error boundary'))
473+
await vi.advanceTimersByTimeAsync(11)
474+
rendered.getByText('error boundary')
493475
consoleMock.mockRestore()
494476
})
495477

@@ -540,13 +522,16 @@ describe('QueryErrorResetBoundary', () => {
540522
</QueryErrorResetBoundary>,
541523
)
542524

543-
await waitFor(() => rendered.getByText('error boundary'))
544-
await waitFor(() => rendered.getByText('retry'))
525+
await vi.advanceTimersByTimeAsync(11)
526+
rendered.getByText('error boundary')
527+
rendered.getByText('retry')
545528
fireEvent.click(rendered.getByText('retry'))
546-
await waitFor(() => rendered.getByText('error boundary'))
547-
await waitFor(() => rendered.getByText('retry'))
529+
await vi.advanceTimersByTimeAsync(11)
530+
rendered.getByText('error boundary')
531+
rendered.getByText('retry')
548532
fireEvent.click(rendered.getByText('retry'))
549-
await waitFor(() => rendered.getByText('error boundary'))
533+
await vi.advanceTimersByTimeAsync(11)
534+
rendered.getByText('error boundary')
550535
expect(fetchCount).toBe(3)
551536
consoleMock.mockRestore()
552537
})
@@ -605,13 +590,16 @@ describe('QueryErrorResetBoundary', () => {
605590
</QueryErrorResetBoundary>,
606591
)
607592

608-
await waitFor(() => rendered.getByText('error boundary'))
609-
await waitFor(() => rendered.getByText('retry'))
593+
await act(() => vi.advanceTimersByTimeAsync(11))
594+
rendered.getByText('error boundary')
595+
rendered.getByText('retry')
610596
fireEvent.click(rendered.getByText('retry'))
611-
await waitFor(() => rendered.getByText('error boundary'))
612-
await waitFor(() => rendered.getByText('retry'))
597+
await act(() => vi.advanceTimersByTimeAsync(11))
598+
rendered.getByText('error boundary')
599+
rendered.getByText('retry')
613600
fireEvent.click(rendered.getByText('retry'))
614-
await waitFor(() => rendered.getByText('data'))
601+
await act(() => vi.advanceTimersByTimeAsync(11))
602+
rendered.getByText('data')
615603
expect(fetchCount).toBe(3)
616604
expect(renders).toBe(1)
617605
consoleMock.mockRestore()
@@ -692,20 +680,17 @@ describe('QueryErrorResetBoundary', () => {
692680
</QueryErrorResetBoundary>,
693681
)
694682

695-
await waitFor(() =>
696-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
697-
)
698-
await waitFor(() =>
699-
expect(rendered.getByText('retry')).toBeInTheDocument(),
700-
)
683+
await vi.advanceTimersByTimeAsync(11)
684+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
685+
expect(rendered.getByText('retry')).toBeInTheDocument()
701686
succeed = true
702687
fireEvent.click(rendered.getByText('retry'))
703-
await waitFor(() =>
704-
expect(rendered.getByText('data')).toBeInTheDocument(),
705-
)
688+
await vi.advanceTimersByTimeAsync(11)
689+
expect(rendered.getByText('data')).toBeInTheDocument()
706690
consoleMock.mockRestore()
707691
})
708692
})
693+
709694
describe('useQueries', () => {
710695
it('should retry fetch if the reset error boundary has been reset', async () => {
711696
const consoleMock = vi
@@ -762,17 +747,13 @@ describe('QueryErrorResetBoundary', () => {
762747
</QueryErrorResetBoundary>,
763748
)
764749

765-
await waitFor(() =>
766-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
767-
)
768-
await waitFor(() =>
769-
expect(rendered.getByText('retry')).toBeInTheDocument(),
770-
)
750+
await vi.advanceTimersByTimeAsync(11)
751+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
752+
expect(rendered.getByText('retry')).toBeInTheDocument()
771753
succeed = true
772754
fireEvent.click(rendered.getByText('retry'))
773-
await waitFor(() =>
774-
expect(rendered.getByText('data')).toBeInTheDocument(),
775-
)
755+
await vi.advanceTimersByTimeAsync(11)
756+
expect(rendered.getByText('data')).toBeInTheDocument()
776757
consoleMock.mockRestore()
777758
})
778759

@@ -832,17 +813,13 @@ describe('QueryErrorResetBoundary', () => {
832813
</QueryErrorResetBoundary>,
833814
)
834815

835-
await waitFor(() =>
836-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
837-
)
838-
await waitFor(() =>
839-
expect(rendered.getByText('retry')).toBeInTheDocument(),
840-
)
816+
await act(() => vi.advanceTimersByTimeAsync(11))
817+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
818+
expect(rendered.getByText('retry')).toBeInTheDocument()
841819
succeed = true
842820
fireEvent.click(rendered.getByText('retry'))
843-
await waitFor(() =>
844-
expect(rendered.getByText('data')).toBeInTheDocument(),
845-
)
821+
await act(() => vi.advanceTimersByTimeAsync(11))
822+
expect(rendered.getByText('data')).toBeInTheDocument()
846823
consoleMock.mockRestore()
847824
})
848825
})

0 commit comments

Comments
 (0)