Skip to content

Commit 1b661b3

Browse files
test({react,preact}-query/useMutation): add single callback tests for 'mutateAsync' (#10488)
* test({react,preact}-query/useMutation): add single callback tests for 'mutateAsync' * ci: apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
1 parent eccac7c commit 1b661b3

2 files changed

Lines changed: 208 additions & 0 deletions

File tree

packages/preact-query/src/__tests__/useMutation.test.tsx

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,110 @@ describe('useMutation', () => {
369369
expect(callbacks).toEqual(['useMutation.onSettled', 'mutate.onSettled'])
370370
})
371371

372+
it('should be able to call `onSuccess` callback after successful mutateAsync', async () => {
373+
const callbacks: Array<string> = []
374+
375+
function Page() {
376+
const { mutateAsync } = useMutation({
377+
mutationFn: (text: string) => sleep(10).then(() => text),
378+
onSuccess: () => {
379+
callbacks.push('useMutation.onSuccess')
380+
},
381+
})
382+
383+
useEffect(() => {
384+
setActTimeout(async () => {
385+
await mutateAsync('todo', {
386+
onSuccess: () => {
387+
callbacks.push('mutateAsync.onSuccess')
388+
},
389+
})
390+
}, 0)
391+
}, [mutateAsync])
392+
393+
return null
394+
}
395+
396+
renderWithClient(queryClient, <Page />)
397+
398+
await vi.advanceTimersByTimeAsync(10)
399+
400+
expect(callbacks).toEqual([
401+
'useMutation.onSuccess',
402+
'mutateAsync.onSuccess',
403+
])
404+
})
405+
406+
it('should be able to call `onError` callback after failed mutateAsync', async () => {
407+
const callbacks: Array<string> = []
408+
409+
function Page() {
410+
const { mutateAsync } = useMutation({
411+
mutationFn: async (_text: string) =>
412+
sleep(10).then(() => {
413+
throw new Error('oops')
414+
}),
415+
onError: () => {
416+
callbacks.push('useMutation.onError')
417+
},
418+
})
419+
420+
useEffect(() => {
421+
setActTimeout(async () => {
422+
try {
423+
await mutateAsync('todo', {
424+
onError: () => {
425+
callbacks.push('mutateAsync.onError')
426+
},
427+
})
428+
} catch {}
429+
}, 0)
430+
}, [mutateAsync])
431+
432+
return null
433+
}
434+
435+
renderWithClient(queryClient, <Page />)
436+
437+
await vi.advanceTimersByTimeAsync(10)
438+
439+
expect(callbacks).toEqual(['useMutation.onError', 'mutateAsync.onError'])
440+
})
441+
442+
it('should be able to call `onSettled` callback after mutateAsync', async () => {
443+
const callbacks: Array<string> = []
444+
445+
function Page() {
446+
const { mutateAsync } = useMutation({
447+
mutationFn: (text: string) => sleep(10).then(() => text),
448+
onSettled: () => {
449+
callbacks.push('useMutation.onSettled')
450+
},
451+
})
452+
453+
useEffect(() => {
454+
setActTimeout(async () => {
455+
await mutateAsync('todo', {
456+
onSettled: () => {
457+
callbacks.push('mutateAsync.onSettled')
458+
},
459+
})
460+
}, 0)
461+
}, [mutateAsync])
462+
463+
return null
464+
}
465+
466+
renderWithClient(queryClient, <Page />)
467+
468+
await vi.advanceTimersByTimeAsync(10)
469+
470+
expect(callbacks).toEqual([
471+
'useMutation.onSettled',
472+
'mutateAsync.onSettled',
473+
])
474+
})
475+
372476
it('should be able to override the useMutation success callbacks', async () => {
373477
const callbacks: Array<string> = []
374478

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

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,110 @@ describe('useMutation', () => {
368368
expect(callbacks).toEqual(['useMutation.onSettled', 'mutate.onSettled'])
369369
})
370370

371+
it('should be able to call `onSuccess` callback after successful mutateAsync', async () => {
372+
const callbacks: Array<string> = []
373+
374+
function Page() {
375+
const { mutateAsync } = useMutation({
376+
mutationFn: (text: string) => sleep(10).then(() => text),
377+
onSuccess: () => {
378+
callbacks.push('useMutation.onSuccess')
379+
},
380+
})
381+
382+
React.useEffect(() => {
383+
setActTimeout(async () => {
384+
await mutateAsync('todo', {
385+
onSuccess: () => {
386+
callbacks.push('mutateAsync.onSuccess')
387+
},
388+
})
389+
}, 0)
390+
}, [mutateAsync])
391+
392+
return null
393+
}
394+
395+
renderWithClient(queryClient, <Page />)
396+
397+
await vi.advanceTimersByTimeAsync(10)
398+
399+
expect(callbacks).toEqual([
400+
'useMutation.onSuccess',
401+
'mutateAsync.onSuccess',
402+
])
403+
})
404+
405+
it('should be able to call `onError` callback after failed mutateAsync', async () => {
406+
const callbacks: Array<string> = []
407+
408+
function Page() {
409+
const { mutateAsync } = useMutation({
410+
mutationFn: async (_text: string) =>
411+
sleep(10).then(() => {
412+
throw new Error('oops')
413+
}),
414+
onError: () => {
415+
callbacks.push('useMutation.onError')
416+
},
417+
})
418+
419+
React.useEffect(() => {
420+
setActTimeout(async () => {
421+
try {
422+
await mutateAsync('todo', {
423+
onError: () => {
424+
callbacks.push('mutateAsync.onError')
425+
},
426+
})
427+
} catch {}
428+
}, 0)
429+
}, [mutateAsync])
430+
431+
return null
432+
}
433+
434+
renderWithClient(queryClient, <Page />)
435+
436+
await vi.advanceTimersByTimeAsync(10)
437+
438+
expect(callbacks).toEqual(['useMutation.onError', 'mutateAsync.onError'])
439+
})
440+
441+
it('should be able to call `onSettled` callback after mutateAsync', async () => {
442+
const callbacks: Array<string> = []
443+
444+
function Page() {
445+
const { mutateAsync } = useMutation({
446+
mutationFn: (text: string) => sleep(10).then(() => text),
447+
onSettled: () => {
448+
callbacks.push('useMutation.onSettled')
449+
},
450+
})
451+
452+
React.useEffect(() => {
453+
setActTimeout(async () => {
454+
await mutateAsync('todo', {
455+
onSettled: () => {
456+
callbacks.push('mutateAsync.onSettled')
457+
},
458+
})
459+
}, 0)
460+
}, [mutateAsync])
461+
462+
return null
463+
}
464+
465+
renderWithClient(queryClient, <Page />)
466+
467+
await vi.advanceTimersByTimeAsync(10)
468+
469+
expect(callbacks).toEqual([
470+
'useMutation.onSettled',
471+
'mutateAsync.onSettled',
472+
])
473+
})
474+
371475
it('should be able to override the useMutation success callbacks', async () => {
372476
const callbacks: Array<string> = []
373477

0 commit comments

Comments
 (0)