Skip to content

Commit 357bafb

Browse files
authored
test(query-core/mutations): replace 'runAllTimersAsync' with 'advanceTimersByTimeAsync', and use precise time in 'advanceTimersByTimeAsync' (#9427)
1 parent f8a20ac commit 357bafb

File tree

1 file changed

+34
-27
lines changed

1 file changed

+34
-27
lines changed

packages/query-core/src/__tests__/mutations.test.tsx

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ describe('mutations', () => {
2929
},
3030
})
3131

32-
await mutation.mutate(null)
32+
mutation.mutate(null)
33+
await vi.advanceTimersByTimeAsync(0)
3334

3435
expect(variables).toBe(null)
3536
})
@@ -42,14 +43,15 @@ describe('mutations', () => {
4243
mutationFn: fn,
4344
})
4445

45-
await executeMutation(
46+
executeMutation(
4647
queryClient,
4748
{
4849
mutationKey: key,
4950
},
5051
'vars',
5152
)
5253

54+
await vi.advanceTimersByTimeAsync(0)
5355
expect(fn).toHaveBeenCalledTimes(1)
5456
expect(fn).toHaveBeenCalledWith('vars')
5557
})
@@ -106,7 +108,7 @@ describe('mutations', () => {
106108
submittedAt: expect.any(Number),
107109
})
108110

109-
await vi.advanceTimersByTimeAsync(5)
111+
await vi.advanceTimersByTimeAsync(0)
110112

111113
expect(states[1]).toEqual({
112114
context: 'todo',
@@ -126,7 +128,7 @@ describe('mutations', () => {
126128
submittedAt: expect.any(Number),
127129
})
128130

129-
await vi.advanceTimersByTimeAsync(20)
131+
await vi.advanceTimersByTimeAsync(10)
130132

131133
expect(states[2]).toEqual({
132134
context: 'todo',
@@ -153,7 +155,7 @@ describe('mutations', () => {
153155
sleep(20).then(() => Promise.reject(new Error('err'))),
154156
onMutate: (text) => text,
155157
retry: 1,
156-
retryDelay: 1,
158+
retryDelay: 10,
157159
})
158160

159161
const states: Array<MutationState<string, unknown, string, string>> = []
@@ -184,7 +186,7 @@ describe('mutations', () => {
184186
submittedAt: expect.any(Number),
185187
})
186188

187-
await vi.advanceTimersByTimeAsync(10)
189+
await vi.advanceTimersByTimeAsync(0)
188190

189191
expect(states[1]).toEqual({
190192
context: 'todo',
@@ -292,7 +294,6 @@ describe('mutations', () => {
292294
})
293295

294296
void queryClient.resumePausedMutations()
295-
await vi.advanceTimersByTimeAsync(0)
296297

297298
// check that the mutation is correctly resumed
298299
expect(mutation.state).toEqual({
@@ -307,7 +308,7 @@ describe('mutations', () => {
307308
submittedAt: 1,
308309
})
309310

310-
await vi.advanceTimersByTimeAsync(20)
311+
await vi.advanceTimersByTimeAsync(10)
311312

312313
expect(mutation.state).toEqual({
313314
context: 'todo',
@@ -371,7 +372,9 @@ describe('mutations', () => {
371372
},
372373
})
373374

374-
await mutation.mutate(undefined, { onSuccess, onSettled })
375+
mutation.mutate(undefined, { onSuccess, onSettled })
376+
377+
await vi.advanceTimersByTimeAsync(0)
375378
expect(mutation.getCurrentResult().data).toEqual('update')
376379
expect(onSuccess).not.toHaveBeenCalled()
377380
expect(onSettled).not.toHaveBeenCalled()
@@ -387,7 +390,9 @@ describe('mutations', () => {
387390
},
388391
})
389392

390-
await mutation.mutate(undefined, { onSuccess, onSettled })
393+
mutation.mutate(undefined, { onSuccess, onSettled })
394+
395+
await vi.advanceTimersByTimeAsync(0)
391396
expect(mutation.getCurrentResult().data).toEqual('update')
392397
expect(onSuccess).not.toHaveBeenCalled()
393398
expect(onSettled).not.toHaveBeenCalled()
@@ -479,7 +484,7 @@ describe('mutations', () => {
479484
isPaused: true,
480485
})
481486

482-
await vi.runAllTimersAsync()
487+
await vi.advanceTimersByTimeAsync(20)
483488

484489
expect(results).toStrictEqual([
485490
'start-A',
@@ -524,7 +529,7 @@ describe('mutations', () => {
524529
'vars2',
525530
)
526531

527-
await vi.runAllTimersAsync()
532+
await vi.advanceTimersByTimeAsync(10)
528533

529534
expect(results).toStrictEqual([
530535
'start-A',
@@ -601,7 +606,7 @@ describe('mutations', () => {
601606
'vars2',
602607
)
603608

604-
await vi.runAllTimersAsync()
609+
await vi.advanceTimersByTimeAsync(20)
605610

606611
expect(results).toStrictEqual([
607612
'start-A1',
@@ -620,7 +625,7 @@ describe('mutations', () => {
620625
const key = queryKey()
621626
const results: Array<string> = []
622627

623-
await executeMutation(
628+
executeMutation(
624629
queryClient,
625630
{
626631
mutationKey: key,
@@ -645,6 +650,8 @@ describe('mutations', () => {
645650
'vars',
646651
)
647652

653+
await vi.advanceTimersByTimeAsync(0)
654+
648655
expect(results).toEqual([
649656
'onMutate-sync',
650657
'onSuccess-implicit-void',
@@ -663,12 +670,12 @@ describe('mutations', () => {
663670
mutationFn: () => Promise.resolve('success'),
664671
onMutate: async () => {
665672
results.push('onMutate-async')
666-
await sleep(1)
673+
await sleep(10)
667674
return { backup: 'async-data' }
668675
},
669676
onSuccess: async () => {
670677
results.push('onSuccess-async-start')
671-
await sleep(2)
678+
await sleep(20)
672679
results.push('onSuccess-async-end')
673680
// Implicit void return from async
674681
},
@@ -680,7 +687,7 @@ describe('mutations', () => {
680687
'vars',
681688
)
682689

683-
await vi.runAllTimersAsync()
690+
await vi.advanceTimersByTimeAsync(30)
684691

685692
expect(results).toEqual([
686693
'onMutate-async',
@@ -702,14 +709,14 @@ describe('mutations', () => {
702709
onSuccess: () => {
703710
results.push('onSuccess-start')
704711
return Promise.all([
705-
sleep(2).then(() => results.push('invalidate-queries')),
706-
sleep(1).then(() => results.push('track-analytics')),
712+
sleep(20).then(() => results.push('invalidate-queries')),
713+
sleep(10).then(() => results.push('track-analytics')),
707714
])
708715
},
709716
onSettled: () => {
710717
results.push('onSettled-start')
711718
return Promise.allSettled([
712-
sleep(1).then(() => results.push('cleanup-1')),
719+
sleep(10).then(() => results.push('cleanup-1')),
713720
Promise.reject('error').catch(() =>
714721
results.push('cleanup-2-failed'),
715722
),
@@ -719,7 +726,7 @@ describe('mutations', () => {
719726
'vars',
720727
)
721728

722-
await vi.runAllTimersAsync()
729+
await vi.advanceTimersByTimeAsync(30)
723730

724731
expect(results).toEqual([
725732
'onSuccess-start',
@@ -746,7 +753,7 @@ describe('mutations', () => {
746753
},
747754
onSuccess: async () => {
748755
results.push('async-onSuccess')
749-
await sleep(1)
756+
await sleep(10)
750757
return 'success-return-ignored'
751758
},
752759
onError: () => {
@@ -764,7 +771,7 @@ describe('mutations', () => {
764771
'vars',
765772
)
766773

767-
await vi.runAllTimersAsync()
774+
await vi.advanceTimersByTimeAsync(10)
768775

769776
const mutationResult = await mutationPromise
770777

@@ -798,11 +805,11 @@ describe('mutations', () => {
798805
},
799806
onError: async () => {
800807
results.push('onError-async')
801-
await sleep(1)
808+
await sleep(10)
802809
// Test Promise.all() in error callback
803810
return Promise.all([
804-
sleep(1).then(() => results.push('error-cleanup-1')),
805-
sleep(2).then(() => results.push('error-cleanup-2')),
811+
sleep(10).then(() => results.push('error-cleanup-1')),
812+
sleep(20).then(() => results.push('error-cleanup-2')),
806813
])
807814
},
808815
onSettled: (_data, _error, _variables, context) => {
@@ -818,7 +825,7 @@ describe('mutations', () => {
818825
mutationError = error
819826
})
820827

821-
await vi.runAllTimersAsync()
828+
await vi.advanceTimersByTimeAsync(30)
822829

823830
expect(results).toEqual([
824831
'onMutate',

0 commit comments

Comments
 (0)