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 { fireEvent } from '@testing-library/react'
3
3
import { ErrorBoundary } from 'react-error-boundary'
4
4
import * as React from 'react'
5
5
import { queryKey , sleep } from '@tanstack/query-test-utils'
@@ -15,6 +15,14 @@ import {
15
15
import { renderWithClient } from './utils'
16
16
17
17
describe ( 'QueryErrorResetBoundary' , ( ) => {
18
+ beforeEach ( ( ) => {
19
+ vi . useFakeTimers ( )
20
+ } )
21
+
22
+ afterEach ( ( ) => {
23
+ vi . useRealTimers ( )
24
+ } )
25
+
18
26
const queryCache = new QueryCache ( )
19
27
const queryClient = new QueryClient ( { queryCache } )
20
28
@@ -69,15 +77,15 @@ describe('QueryErrorResetBoundary', () => {
69
77
</ QueryErrorResetBoundary > ,
70
78
)
71
79
72
- await waitFor ( ( ) =>
80
+ await vi . waitFor ( ( ) =>
73
81
expect ( rendered . getByText ( 'error boundary' ) ) . toBeInTheDocument ( ) ,
74
82
)
75
- await waitFor ( ( ) =>
83
+ await vi . waitFor ( ( ) =>
76
84
expect ( rendered . getByText ( 'retry' ) ) . toBeInTheDocument ( ) ,
77
85
)
78
86
succeed = true
79
87
fireEvent . click ( rendered . getByText ( 'retry' ) )
80
- await waitFor ( ( ) =>
88
+ await vi . waitFor ( ( ) =>
81
89
expect ( rendered . getByText ( 'data' ) ) . toBeInTheDocument ( ) ,
82
90
)
83
91
consoleMock . mockRestore ( )
@@ -139,15 +147,15 @@ describe('QueryErrorResetBoundary', () => {
139
147
</ QueryErrorResetBoundary > ,
140
148
)
141
149
142
- await waitFor ( ( ) =>
150
+ await vi . waitFor ( ( ) =>
143
151
expect ( rendered . getByText ( 'error boundary' ) ) . toBeInTheDocument ( ) ,
144
152
)
145
- await waitFor ( ( ) =>
153
+ await vi . waitFor ( ( ) =>
146
154
expect ( rendered . getByText ( 'retry' ) ) . toBeInTheDocument ( ) ,
147
155
)
148
156
succeed = true
149
157
fireEvent . click ( rendered . getByText ( 'retry' ) )
150
- await waitFor ( ( ) =>
158
+ await vi . waitFor ( ( ) =>
151
159
expect ( rendered . getByText ( 'status: error' ) ) . toBeInTheDocument ( ) ,
152
160
)
153
161
consoleMock . mockRestore ( )
@@ -211,15 +219,15 @@ describe('QueryErrorResetBoundary', () => {
211
219
</ QueryErrorResetBoundary > ,
212
220
)
213
221
214
- await waitFor ( ( ) =>
222
+ await vi . waitFor ( ( ) =>
215
223
expect ( rendered . getByText ( 'error boundary' ) ) . toBeInTheDocument ( ) ,
216
224
)
217
- await waitFor ( ( ) =>
225
+ await vi . waitFor ( ( ) =>
218
226
expect ( rendered . getByText ( 'retry' ) ) . toBeInTheDocument ( ) ,
219
227
)
220
228
succeed = true
221
229
fireEvent . click ( rendered . getByText ( 'retry' ) )
222
- await waitFor ( ( ) =>
230
+ await vi . waitFor ( ( ) =>
223
231
expect ( rendered . getByText ( 'data' ) ) . toBeInTheDocument ( ) ,
224
232
)
225
233
consoleMock . mockRestore ( )
@@ -277,13 +285,13 @@ describe('QueryErrorResetBoundary', () => {
277
285
</ QueryErrorResetBoundary > ,
278
286
)
279
287
280
- await waitFor ( ( ) =>
288
+ await vi . waitFor ( ( ) =>
281
289
expect (
282
290
rendered . getByText ( 'status: pending, fetchStatus: idle' ) ,
283
291
) . toBeInTheDocument ( ) ,
284
292
)
285
293
fireEvent . click ( rendered . getByRole ( 'button' , { name : / r e f e t c h / i } ) )
286
- await waitFor ( ( ) =>
294
+ await vi . waitFor ( ( ) =>
287
295
expect ( rendered . getByText ( 'error boundary' ) ) . toBeInTheDocument ( ) ,
288
296
)
289
297
consoleMock . mockRestore ( )
@@ -339,15 +347,15 @@ describe('QueryErrorResetBoundary', () => {
339
347
</ QueryErrorResetBoundary > ,
340
348
)
341
349
342
- await waitFor ( ( ) =>
350
+ await vi . waitFor ( ( ) =>
343
351
expect ( rendered . getByText ( 'error boundary' ) ) . toBeInTheDocument ( ) ,
344
352
)
345
- await waitFor ( ( ) =>
353
+ await vi . waitFor ( ( ) =>
346
354
expect ( rendered . getByText ( 'retry' ) ) . toBeInTheDocument ( ) ,
347
355
)
348
356
succeed = true
349
357
fireEvent . click ( rendered . getByText ( 'retry' ) )
350
- await waitFor ( ( ) =>
358
+ await vi . waitFor ( ( ) =>
351
359
expect ( rendered . getByText ( 'error boundary' ) ) . toBeInTheDocument ( ) ,
352
360
)
353
361
consoleMock . mockRestore ( )
@@ -405,15 +413,15 @@ describe('QueryErrorResetBoundary', () => {
405
413
</ QueryErrorResetBoundary > ,
406
414
)
407
415
408
- await waitFor ( ( ) =>
416
+ await vi . waitFor ( ( ) =>
409
417
expect ( rendered . getByText ( 'error boundary' ) ) . toBeInTheDocument ( ) ,
410
418
)
411
- await waitFor ( ( ) =>
419
+ await vi . waitFor ( ( ) =>
412
420
expect ( rendered . getByText ( 'retry' ) ) . toBeInTheDocument ( ) ,
413
421
)
414
422
succeed = true
415
423
fireEvent . click ( rendered . getByText ( 'retry' ) )
416
- await waitFor ( ( ) =>
424
+ await vi . waitFor ( ( ) =>
417
425
expect ( rendered . getByText ( 'data' ) ) . toBeInTheDocument ( ) ,
418
426
)
419
427
consoleMock . mockRestore ( )
@@ -475,21 +483,21 @@ describe('QueryErrorResetBoundary', () => {
475
483
</ QueryErrorResetBoundary > ,
476
484
)
477
485
478
- await waitFor ( ( ) =>
486
+ await vi . waitFor ( ( ) =>
479
487
expect ( rendered . getByText ( 'error boundary' ) ) . toBeInTheDocument ( ) ,
480
488
)
481
- await waitFor ( ( ) =>
489
+ await vi . waitFor ( ( ) =>
482
490
expect ( rendered . getByText ( 'retry' ) ) . toBeInTheDocument ( ) ,
483
491
)
484
492
shouldReset = true
485
493
fireEvent . click ( rendered . getByText ( 'retry' ) )
486
- await waitFor ( ( ) =>
494
+ await vi . waitFor ( ( ) =>
487
495
expect ( rendered . getByText ( 'error boundary' ) ) . toBeInTheDocument ( ) ,
488
496
)
489
497
succeed = true
490
498
shouldReset = false
491
499
fireEvent . click ( rendered . getByText ( 'retry' ) )
492
- await waitFor ( ( ) => rendered . getByText ( 'error boundary' ) )
500
+ await vi . waitFor ( ( ) => rendered . getByText ( 'error boundary' ) )
493
501
consoleMock . mockRestore ( )
494
502
} )
495
503
@@ -540,13 +548,13 @@ describe('QueryErrorResetBoundary', () => {
540
548
</ QueryErrorResetBoundary > ,
541
549
)
542
550
543
- await waitFor ( ( ) => rendered . getByText ( 'error boundary' ) )
544
- await waitFor ( ( ) => rendered . getByText ( 'retry' ) )
551
+ await vi . waitFor ( ( ) => rendered . getByText ( 'error boundary' ) )
552
+ await vi . waitFor ( ( ) => rendered . getByText ( 'retry' ) )
545
553
fireEvent . click ( rendered . getByText ( 'retry' ) )
546
- await waitFor ( ( ) => rendered . getByText ( 'error boundary' ) )
547
- await waitFor ( ( ) => rendered . getByText ( 'retry' ) )
554
+ await vi . waitFor ( ( ) => rendered . getByText ( 'error boundary' ) )
555
+ await vi . waitFor ( ( ) => rendered . getByText ( 'retry' ) )
548
556
fireEvent . click ( rendered . getByText ( 'retry' ) )
549
- await waitFor ( ( ) => rendered . getByText ( 'error boundary' ) )
557
+ await vi . waitFor ( ( ) => rendered . getByText ( 'error boundary' ) )
550
558
expect ( fetchCount ) . toBe ( 3 )
551
559
consoleMock . mockRestore ( )
552
560
} )
@@ -605,13 +613,13 @@ describe('QueryErrorResetBoundary', () => {
605
613
</ QueryErrorResetBoundary > ,
606
614
)
607
615
608
- await waitFor ( ( ) => rendered . getByText ( 'error boundary' ) )
609
- await waitFor ( ( ) => rendered . getByText ( 'retry' ) )
616
+ await vi . waitFor ( ( ) => rendered . getByText ( 'error boundary' ) )
617
+ await vi . waitFor ( ( ) => rendered . getByText ( 'retry' ) )
610
618
fireEvent . click ( rendered . getByText ( 'retry' ) )
611
- await waitFor ( ( ) => rendered . getByText ( 'error boundary' ) )
612
- await waitFor ( ( ) => rendered . getByText ( 'retry' ) )
619
+ await vi . waitFor ( ( ) => rendered . getByText ( 'error boundary' ) )
620
+ await vi . waitFor ( ( ) => rendered . getByText ( 'retry' ) )
613
621
fireEvent . click ( rendered . getByText ( 'retry' ) )
614
- await waitFor ( ( ) => rendered . getByText ( 'data' ) )
622
+ await vi . waitFor ( ( ) => rendered . getByText ( 'data' ) )
615
623
expect ( fetchCount ) . toBe ( 3 )
616
624
expect ( renders ) . toBe ( 1 )
617
625
consoleMock . mockRestore ( )
@@ -692,20 +700,21 @@ describe('QueryErrorResetBoundary', () => {
692
700
</ QueryErrorResetBoundary > ,
693
701
)
694
702
695
- await waitFor ( ( ) =>
703
+ await vi . waitFor ( ( ) =>
696
704
expect ( rendered . getByText ( 'error boundary' ) ) . toBeInTheDocument ( ) ,
697
705
)
698
- await waitFor ( ( ) =>
706
+ await vi . waitFor ( ( ) =>
699
707
expect ( rendered . getByText ( 'retry' ) ) . toBeInTheDocument ( ) ,
700
708
)
701
709
succeed = true
702
710
fireEvent . click ( rendered . getByText ( 'retry' ) )
703
- await waitFor ( ( ) =>
711
+ await vi . waitFor ( ( ) =>
704
712
expect ( rendered . getByText ( 'data' ) ) . toBeInTheDocument ( ) ,
705
713
)
706
714
consoleMock . mockRestore ( )
707
715
} )
708
716
} )
717
+
709
718
describe ( 'useQueries' , ( ) => {
710
719
it ( 'should retry fetch if the reset error boundary has been reset' , async ( ) => {
711
720
const consoleMock = vi
@@ -762,15 +771,15 @@ describe('QueryErrorResetBoundary', () => {
762
771
</ QueryErrorResetBoundary > ,
763
772
)
764
773
765
- await waitFor ( ( ) =>
774
+ await vi . waitFor ( ( ) =>
766
775
expect ( rendered . getByText ( 'error boundary' ) ) . toBeInTheDocument ( ) ,
767
776
)
768
- await waitFor ( ( ) =>
777
+ await vi . waitFor ( ( ) =>
769
778
expect ( rendered . getByText ( 'retry' ) ) . toBeInTheDocument ( ) ,
770
779
)
771
780
succeed = true
772
781
fireEvent . click ( rendered . getByText ( 'retry' ) )
773
- await waitFor ( ( ) =>
782
+ await vi . waitFor ( ( ) =>
774
783
expect ( rendered . getByText ( 'data' ) ) . toBeInTheDocument ( ) ,
775
784
)
776
785
consoleMock . mockRestore ( )
@@ -832,15 +841,15 @@ describe('QueryErrorResetBoundary', () => {
832
841
</ QueryErrorResetBoundary > ,
833
842
)
834
843
835
- await waitFor ( ( ) =>
844
+ await vi . waitFor ( ( ) =>
836
845
expect ( rendered . getByText ( 'error boundary' ) ) . toBeInTheDocument ( ) ,
837
846
)
838
- await waitFor ( ( ) =>
847
+ await vi . waitFor ( ( ) =>
839
848
expect ( rendered . getByText ( 'retry' ) ) . toBeInTheDocument ( ) ,
840
849
)
841
850
succeed = true
842
851
fireEvent . click ( rendered . getByText ( 'retry' ) )
843
- await waitFor ( ( ) =>
852
+ await vi . waitFor ( ( ) =>
844
853
expect ( rendered . getByText ( 'data' ) ) . toBeInTheDocument ( ) ,
845
854
)
846
855
consoleMock . mockRestore ( )
0 commit comments