@@ -54,14 +54,10 @@ describe('useMutation', () => {
54
54
expect ( rendered . getByRole ( 'heading' ) . textContent ) . toBe ( 'empty' )
55
55
56
56
fireEvent . click ( rendered . getByRole ( 'button' , { name : / m u t a t e / i } ) )
57
-
58
- await vi . waitFor ( ( ) => {
59
- expect ( rendered . getByRole ( 'heading' ) . textContent ) . toBe ( 'mutation' )
60
- } )
57
+ await vi . advanceTimersByTimeAsync ( 0 )
58
+ expect ( rendered . getByRole ( 'heading' ) . textContent ) . toBe ( 'mutation' )
61
59
62
60
fireEvent . click ( rendered . getByRole ( 'button' , { name : / r e s e t / i } ) )
63
-
64
- await vi . waitFor ( ( ) => { } )
65
61
expect ( rendered . getByRole ( 'heading' ) . textContent ) . toBe ( 'empty' )
66
62
} )
67
63
@@ -97,18 +93,13 @@ describe('useMutation', () => {
97
93
expect ( rendered . queryByRole ( 'heading' ) ) . toBeNull ( )
98
94
99
95
fireEvent . click ( rendered . getByRole ( 'button' , { name : / m u t a t e / i } ) )
100
-
101
- await vi . waitFor ( ( ) => {
102
- expect ( rendered . getByRole ( 'heading' ) . textContent ) . toBe (
103
- 'Expected mock error. All is well!' ,
104
- )
105
- } )
96
+ await vi . advanceTimersByTimeAsync ( 0 )
97
+ expect ( rendered . getByRole ( 'heading' ) . textContent ) . toBe (
98
+ 'Expected mock error. All is well!' ,
99
+ )
106
100
107
101
fireEvent . click ( rendered . getByRole ( 'button' , { name : / r e s e t / i } ) )
108
-
109
- await vi . waitFor ( ( ) => {
110
- expect ( rendered . queryByRole ( 'heading' ) ) . toBeNull ( )
111
- } )
102
+ expect ( rendered . queryByRole ( 'heading' ) ) . toBeNull ( )
112
103
113
104
consoleMock . mockRestore ( )
114
105
} )
@@ -155,22 +146,16 @@ describe('useMutation', () => {
155
146
fireEvent . click ( rendered . getByRole ( 'button' , { name : / m u t a t e / i } ) )
156
147
fireEvent . click ( rendered . getByRole ( 'button' , { name : / m u t a t e / i } ) )
157
148
fireEvent . click ( rendered . getByRole ( 'button' , { name : / m u t a t e / i } ) )
149
+ await vi . advanceTimersByTimeAsync ( 0 )
150
+ expect ( rendered . getByRole ( 'heading' ) . textContent ) . toBe ( '3' )
158
151
159
- await vi . waitFor ( ( ) => {
160
- expect ( rendered . getByRole ( 'heading' ) . textContent ) . toBe ( '3' )
161
- } )
162
-
163
- await vi . waitFor ( ( ) => {
164
- expect ( onSuccessMock ) . toHaveBeenCalledTimes ( 3 )
165
- } )
152
+ expect ( onSuccessMock ) . toHaveBeenCalledTimes ( 3 )
166
153
167
154
expect ( onSuccessMock ) . toHaveBeenCalledWith ( 1 )
168
155
expect ( onSuccessMock ) . toHaveBeenCalledWith ( 2 )
169
156
expect ( onSuccessMock ) . toHaveBeenCalledWith ( 3 )
170
157
171
- await vi . waitFor ( ( ) => {
172
- expect ( onSettledMock ) . toHaveBeenCalledTimes ( 3 )
173
- } )
158
+ expect ( onSettledMock ) . toHaveBeenCalledTimes ( 3 )
174
159
175
160
expect ( onSettledMock ) . toHaveBeenCalledWith ( 1 )
176
161
expect ( onSettledMock ) . toHaveBeenCalledWith ( 2 )
@@ -222,34 +207,21 @@ describe('useMutation', () => {
222
207
223
208
fireEvent . click ( rendered . getByRole ( 'button' , { name : / m u t a t e / i } ) )
224
209
expect ( rendered . getByText ( 'Data' ) ) . toBeInTheDocument ( )
225
- await vi . waitFor ( ( ) =>
226
- expect ( rendered . getByText ( 'Status error' ) ) . toBeInTheDocument ( ) ,
227
- )
228
- await vi . waitFor ( ( ) =>
229
- expect ( rendered . getByText ( 'Failed 1 times' ) ) . toBeInTheDocument ( ) ,
230
- )
231
- await vi . waitFor ( ( ) =>
232
- expect (
233
- rendered . getByText ( 'Failed because Error test Jonas' ) ,
234
- ) . toBeInTheDocument ( ) ,
235
- )
210
+ await vi . advanceTimersByTimeAsync ( 0 )
211
+ expect ( rendered . getByText ( 'Status error' ) ) . toBeInTheDocument ( )
212
+ expect ( rendered . getByText ( 'Failed 1 times' ) ) . toBeInTheDocument ( )
213
+ expect (
214
+ rendered . getByText ( 'Failed because Error test Jonas' ) ,
215
+ ) . toBeInTheDocument ( )
236
216
237
217
fireEvent . click ( rendered . getByRole ( 'button' , { name : / m u t a t e / i } ) )
238
- await vi . waitFor ( ( ) =>
239
- expect ( rendered . getByText ( 'Status pending' ) ) . toBeInTheDocument ( ) ,
240
- )
241
- await vi . waitFor ( ( ) =>
242
- expect ( rendered . getByText ( 'Status success' ) ) . toBeInTheDocument ( ) ,
243
- )
244
- await vi . waitFor ( ( ) =>
245
- expect ( rendered . getByText ( 'Data 2' ) ) . toBeInTheDocument ( ) ,
246
- )
247
- await vi . waitFor ( ( ) =>
248
- expect ( rendered . getByText ( 'Failed 0 times' ) ) . toBeInTheDocument ( ) ,
249
- )
250
- await vi . waitFor ( ( ) =>
251
- expect ( rendered . getByText ( 'Failed because null' ) ) . toBeInTheDocument ( ) ,
252
- )
218
+ await vi . advanceTimersByTimeAsync ( 0 )
219
+ expect ( rendered . getByText ( 'Status pending' ) ) . toBeInTheDocument ( )
220
+ await vi . advanceTimersByTimeAsync ( 10 )
221
+ expect ( rendered . getByText ( 'Status success' ) ) . toBeInTheDocument ( )
222
+ expect ( rendered . getByText ( 'Data 2' ) ) . toBeInTheDocument ( )
223
+ expect ( rendered . getByText ( 'Failed 0 times' ) ) . toBeInTheDocument ( )
224
+ expect ( rendered . getByText ( 'Failed because null' ) ) . toBeInTheDocument ( )
253
225
} )
254
226
255
227
it ( 'should be able to call `onError` and `onSettled` after each failed mutate' , async ( ) => {
@@ -300,14 +272,10 @@ describe('useMutation', () => {
300
272
fireEvent . click ( rendered . getByRole ( 'button' , { name : / m u t a t e / i } ) )
301
273
fireEvent . click ( rendered . getByRole ( 'button' , { name : / m u t a t e / i } ) )
302
274
fireEvent . click ( rendered . getByRole ( 'button' , { name : / m u t a t e / i } ) )
275
+ await vi . advanceTimersByTimeAsync ( 0 )
276
+ expect ( rendered . getByRole ( 'heading' ) . textContent ) . toBe ( '3' )
303
277
304
- await vi . waitFor ( ( ) => {
305
- expect ( rendered . getByRole ( 'heading' ) . textContent ) . toBe ( '3' )
306
- } )
307
-
308
- await vi . waitFor ( ( ) => {
309
- expect ( onErrorMock ) . toHaveBeenCalledTimes ( 3 )
310
- } )
278
+ expect ( onErrorMock ) . toHaveBeenCalledTimes ( 3 )
311
279
expect ( onErrorMock ) . toHaveBeenCalledWith (
312
280
'Expected mock error. All is well! 1' ,
313
281
)
@@ -318,9 +286,7 @@ describe('useMutation', () => {
318
286
'Expected mock error. All is well! 3' ,
319
287
)
320
288
321
- await vi . waitFor ( ( ) => {
322
- expect ( onSettledMock ) . toHaveBeenCalledTimes ( 3 )
323
- } )
289
+ expect ( onSettledMock ) . toHaveBeenCalledTimes ( 3 )
324
290
expect ( onSettledMock ) . toHaveBeenCalledWith (
325
291
'Expected mock error. All is well! 1' ,
326
292
)
@@ -604,13 +570,17 @@ describe('useMutation', () => {
604
570
</ QueryClientProvider >
605
571
) )
606
572
607
- await rendered . findByText ( 'data: null, status: idle, isPaused: false' )
573
+ expect (
574
+ rendered . getByText ( 'data: null, status: idle, isPaused: false' ) ,
575
+ ) . toBeInTheDocument ( )
608
576
609
577
window . dispatchEvent ( new Event ( 'offline' ) )
610
578
611
579
fireEvent . click ( rendered . getByRole ( 'button' , { name : / m u t a t e / i } ) )
612
-
613
- await rendered . findByText ( 'data: null, status: pending, isPaused: true' )
580
+ await vi . advanceTimersByTimeAsync ( 0 )
581
+ expect (
582
+ rendered . getByText ( 'data: null, status: pending, isPaused: true' ) ,
583
+ ) . toBeInTheDocument ( )
614
584
615
585
expect ( onMutate ) . toHaveBeenCalledTimes ( 1 )
616
586
expect ( onMutate ) . toHaveBeenCalledWith ( 'todo' )
@@ -619,7 +589,9 @@ describe('useMutation', () => {
619
589
window . dispatchEvent ( new Event ( 'online' ) )
620
590
621
591
await vi . advanceTimersByTimeAsync ( 10 )
622
- await rendered . findByText ( 'data: 1, status: success, isPaused: false' )
592
+ expect (
593
+ rendered . getByText ( 'data: 1, status: success, isPaused: false' ) ,
594
+ ) . toBeInTheDocument ( )
623
595
624
596
expect ( onMutate ) . toHaveBeenCalledTimes ( 1 )
625
597
expect ( count ) . toBe ( 1 )
@@ -660,11 +632,11 @@ describe('useMutation', () => {
660
632
</ QueryClientProvider >
661
633
) )
662
634
663
- await rendered . findByText ( 'data: null, status: idle, isPaused: false' )
664
-
635
+ rendered . getByText ( 'data: null, status: idle, isPaused: false' )
665
636
fireEvent . click ( rendered . getByRole ( 'button' , { name : / m u t a t e / i } ) )
666
-
667
- await rendered . findByText ( 'data: null, status: pending, isPaused: true' )
637
+ expect (
638
+ rendered . getByText ( 'data: null, status: pending, isPaused: true' ) ,
639
+ ) . toBeInTheDocument ( )
668
640
669
641
// no intermediate 'pending, false' state is expected because we don't start mutating!
670
642
expect ( states [ 0 ] ) . toBe ( 'idle, false' )
@@ -674,7 +646,9 @@ describe('useMutation', () => {
674
646
window . dispatchEvent ( new Event ( 'online' ) )
675
647
676
648
await vi . advanceTimersByTimeAsync ( 10 )
677
- await rendered . findByText ( 'data: 1, status: success, isPaused: false' )
649
+ expect (
650
+ rendered . getByText ( 'data: 1, status: success, isPaused: false' ) ,
651
+ ) . toBeInTheDocument ( )
678
652
679
653
onlineMock . mockRestore ( )
680
654
} )
@@ -831,10 +805,8 @@ describe('useMutation', () => {
831
805
) )
832
806
833
807
fireEvent . click ( rendered . getByText ( 'mutate' ) )
834
-
835
- await vi . waitFor ( ( ) => {
836
- expect ( rendered . queryByText ( 'error' ) ) . not . toBeNull ( )
837
- } )
808
+ await vi . advanceTimersByTimeAsync ( 0 )
809
+ expect ( rendered . queryByText ( 'error' ) ) . not . toBeNull ( )
838
810
839
811
consoleMock . mockRestore ( )
840
812
} )
@@ -882,15 +854,13 @@ describe('useMutation', () => {
882
854
883
855
// first error goes to component
884
856
fireEvent . click ( rendered . getByText ( 'mutate' ) )
885
- await vi . waitFor ( ( ) => {
886
- expect ( rendered . queryByText ( 'mock error' ) ) . not . toBeNull ( )
887
- } )
857
+ await vi . advanceTimersByTimeAsync ( 0 )
858
+ expect ( rendered . queryByText ( 'mock error' ) ) . not . toBeNull ( )
888
859
889
860
// second error goes to boundary
890
861
fireEvent . click ( rendered . getByText ( 'mutate' ) )
891
- await vi . waitFor ( ( ) => {
892
- expect ( rendered . queryByText ( 'error boundary' ) ) . not . toBeNull ( )
893
- } )
862
+ await vi . advanceTimersByTimeAsync ( 0 )
863
+ expect ( rendered . queryByText ( 'error boundary' ) ) . not . toBeNull ( )
894
864
895
865
consoleMock . mockRestore ( )
896
866
} )
@@ -943,14 +913,13 @@ describe('useMutation', () => {
943
913
944
914
fireEvent . click ( rendered . getByText ( 'succeed' ) )
945
915
fireEvent . click ( rendered . getByText ( 'error' ) )
946
-
947
- await vi . waitFor ( ( ) => {
948
- expect ( rendered . queryByText ( 'successTest' ) ) . not . toBeNull ( )
949
- expect ( rendered . queryByText ( 'errorTest' ) ) . not . toBeNull ( )
950
- } )
916
+ await vi . advanceTimersByTimeAsync ( 0 )
917
+ expect ( rendered . queryByText ( 'successTest' ) ) . not . toBeNull ( )
918
+ expect ( rendered . queryByText ( 'errorTest' ) ) . not . toBeNull ( )
951
919
952
920
expect ( successMock ) . toHaveBeenCalledTimes ( 1 )
953
921
expect ( successMock ) . toHaveBeenCalledWith ( metaSuccessMessage )
922
+
954
923
expect ( errorMock ) . toHaveBeenCalledTimes ( 1 )
955
924
expect ( errorMock ) . toHaveBeenCalledWith ( metaErrorMessage )
956
925
} )
@@ -1016,13 +985,10 @@ describe('useMutation', () => {
1016
985
1017
986
fireEvent . click ( rendered . getByRole ( 'button' , { name : / m u t a t e / i } ) )
1018
987
fireEvent . click ( rendered . getByRole ( 'button' , { name : / h i d e / i } ) )
1019
-
1020
- await vi . waitFor ( ( ) => {
1021
- expect (
1022
- queryClient . getMutationCache ( ) . findAll ( { mutationKey : mutationKey } ) ,
1023
- ) . toHaveLength ( 0 )
1024
- } )
1025
-
988
+ await vi . advanceTimersByTimeAsync ( 10 )
989
+ expect (
990
+ queryClient . getMutationCache ( ) . findAll ( { mutationKey : mutationKey } ) ,
991
+ ) . toHaveLength ( 0 )
1026
992
expect ( count ) . toBe ( 1 )
1027
993
1028
994
expect ( onSuccess ) . toHaveBeenCalledTimes ( 1 )
@@ -1166,20 +1132,14 @@ describe('useMutation', () => {
1166
1132
</ QueryClientProvider >
1167
1133
) )
1168
1134
1169
- await vi . waitFor ( ( ) =>
1170
- expect (
1171
- rendered . getByText ( 'error: null, status: idle' ) ,
1172
- ) . toBeInTheDocument ( ) ,
1173
- )
1135
+ await vi . advanceTimersByTimeAsync ( 10 )
1136
+ expect ( rendered . getByText ( 'error: null, status: idle' ) ) . toBeInTheDocument ( )
1174
1137
1175
1138
rendered . getByRole ( 'button' , { name : / m u t a t e / i } ) . click ( )
1176
-
1177
1139
await vi . advanceTimersByTimeAsync ( 10 )
1178
- await vi . waitFor ( ( ) =>
1179
- expect (
1180
- rendered . getByText ( 'error: mutateFnError, status: error' ) ,
1181
- ) . toBeInTheDocument ( ) ,
1182
- )
1140
+ expect (
1141
+ rendered . getByText ( 'error: mutateFnError, status: error' ) ,
1142
+ ) . toBeInTheDocument ( )
1183
1143
} )
1184
1144
1185
1145
it ( 'should go to error state if onSettled callback errors' , async ( ) => {
@@ -1215,12 +1175,13 @@ describe('useMutation', () => {
1215
1175
</ QueryClientProvider >
1216
1176
) )
1217
1177
1218
- await rendered . findByText ( 'error: null, status: idle' )
1178
+ expect ( rendered . getByText ( 'error: null, status: idle' ) ) . toBeInTheDocument ( )
1219
1179
1220
1180
rendered . getByRole ( 'button' , { name : / m u t a t e / i } ) . click ( )
1221
-
1222
1181
await vi . advanceTimersByTimeAsync ( 10 )
1223
- await rendered . findByText ( 'error: mutateFnError, status: error' )
1182
+ expect (
1183
+ rendered . getByText ( 'error: mutateFnError, status: error' ) ,
1184
+ ) . toBeInTheDocument ( )
1224
1185
1225
1186
expect ( onError ) . toHaveBeenCalledWith ( mutateFnError , 'todo' , undefined )
1226
1187
} )
@@ -1250,18 +1211,12 @@ describe('useMutation', () => {
1250
1211
1251
1212
const rendered = render ( ( ) => < Page > </ Page > )
1252
1213
1253
- await vi . waitFor ( ( ) =>
1254
- expect (
1255
- rendered . getByText ( 'data: null, status: idle' ) ,
1256
- ) . toBeInTheDocument ( ) ,
1257
- )
1214
+ expect ( rendered . getByText ( 'data: null, status: idle' ) ) . toBeInTheDocument ( )
1258
1215
1259
1216
fireEvent . click ( rendered . getByRole ( 'button' , { name : / m u t a t e / i } ) )
1260
-
1261
- await vi . waitFor ( ( ) =>
1262
- expect (
1263
- rendered . getByText ( 'data: custom client, status: success' ) ,
1264
- ) . toBeInTheDocument ( ) ,
1265
- )
1217
+ await vi . advanceTimersByTimeAsync ( 0 )
1218
+ expect (
1219
+ rendered . getByText ( 'data: custom client, status: success' ) ,
1220
+ ) . toBeInTheDocument ( )
1266
1221
} )
1267
1222
} )
0 commit comments