Skip to content

Commit dfffe55

Browse files
committed
test(svelte-query/useMutationState): simplify 'queryFn' and replace 'queryByText' with 'getByText'
1 parent 552fe4b commit dfffe55

File tree

2 files changed

+39
-43
lines changed

2 files changed

+39
-43
lines changed

packages/svelte-query/tests/useMutationState/BaseExample.svelte

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,5 @@
2828
{JSON.stringify(statuses)}
2929
</div>
3030

31-
<button data-testid="success" on:click={() => $successMutation.mutate()}>
32-
Click
33-
</button>
34-
<button data-testid="error" on:click={() => $errorMutation.mutate()}>
35-
Click
36-
</button>
31+
<button on:click={() => $successMutation.mutate()}>success</button>
32+
<button on:click={() => $errorMutation.mutate()}>error</button>
Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'
22
import { fireEvent, render } from '@testing-library/svelte'
3+
import { sleep } from '@tanstack/query-test-utils'
34
import BaseExample from './BaseExample.svelte'
45

56
describe('useMutationState', () => {
@@ -12,105 +13,104 @@ describe('useMutationState', () => {
1213
})
1314

1415
test('Run few mutation functions and check from useMutationState', async () => {
15-
const successMutationFn = vi.fn()
16-
const errorMutationFn = vi.fn().mockImplementation(() => {
17-
throw 'error'
18-
})
16+
const successMutationFn = vi.fn(() => sleep(10).then(() => 'data'))
17+
const errorMutationFn = vi
18+
.fn()
19+
.mockImplementation(() =>
20+
sleep(20).then(() => Promise.reject(new Error('error'))),
21+
)
1922

2023
const rendered = render(BaseExample, {
2124
props: {
2225
successMutationOpts: {
2326
mutationKey: ['success'],
2427
mutationFn: successMutationFn,
2528
},
26-
2729
errorMutationOpts: {
2830
mutationKey: ['error'],
2931
mutationFn: errorMutationFn,
3032
},
3133
},
3234
})
3335

34-
fireEvent.click(rendered.getByTestId('success'))
35-
await vi.advanceTimersByTimeAsync(0)
36+
fireEvent.click(rendered.getByText('success'))
37+
await vi.advanceTimersByTimeAsync(11)
3638
expect(successMutationFn).toHaveBeenCalledTimes(1)
37-
expect(rendered.getByTestId('result').innerHTML).toEqual('["success"]')
39+
expect(rendered.getByText('["success"]')).toBeInTheDocument()
3840

39-
fireEvent.click(rendered.getByTestId('error'))
40-
await vi.advanceTimersByTimeAsync(0)
41+
fireEvent.click(rendered.getByText('error'))
42+
await vi.advanceTimersByTimeAsync(21)
4143
expect(errorMutationFn).toHaveBeenCalledTimes(1)
42-
expect(rendered.getByTestId('result').innerHTML).toEqual(
43-
'["success","error"]',
44-
)
44+
expect(rendered.getByText('["success","error"]')).toBeInTheDocument()
4545
})
4646

4747
test('Can select specific type of mutation ( i.e: error only )', async () => {
48-
const successMutationFn = vi.fn()
49-
const errorMutationFn = vi.fn().mockImplementation(() => {
50-
throw 'error'
51-
})
48+
const successMutationFn = vi.fn(() => sleep(10).then(() => 'data'))
49+
const errorMutationFn = vi
50+
.fn()
51+
.mockImplementation(() =>
52+
sleep(20).then(() => Promise.reject(new Error('error'))),
53+
)
5254

5355
const rendered = render(BaseExample, {
5456
props: {
5557
successMutationOpts: {
5658
mutationKey: ['success'],
5759
mutationFn: successMutationFn,
5860
},
59-
6061
errorMutationOpts: {
6162
mutationKey: ['error'],
6263
mutationFn: errorMutationFn,
6364
},
64-
6565
mutationStateOpts: {
6666
filters: { status: 'error' },
6767
},
6868
},
6969
})
7070

71-
fireEvent.click(rendered.getByTestId('success'))
72-
await vi.advanceTimersByTimeAsync(0)
71+
fireEvent.click(rendered.getByText('success'))
72+
await vi.advanceTimersByTimeAsync(11)
7373
expect(successMutationFn).toHaveBeenCalledTimes(1)
74-
expect(rendered.getByTestId('result').innerHTML).toEqual('[]')
74+
expect(rendered.getByText('[]')).toBeInTheDocument()
7575

76-
fireEvent.click(rendered.getByTestId('error'))
77-
await vi.advanceTimersByTimeAsync(0)
76+
fireEvent.click(rendered.getByText('error'))
77+
await vi.advanceTimersByTimeAsync(21)
7878
expect(errorMutationFn).toHaveBeenCalledTimes(1)
79-
expect(rendered.getByTestId('result').innerHTML).toEqual('["error"]')
79+
expect(rendered.getByText('["error"]')).toBeInTheDocument()
8080
})
8181

8282
test('Can select specific mutation using mutation key', async () => {
83-
const successMutationFn = vi.fn()
84-
const errorMutationFn = vi.fn().mockImplementation(() => {
85-
throw 'error'
86-
})
83+
const successMutationFn = vi.fn(() => sleep(10).then(() => 'data'))
84+
const errorMutationFn = vi
85+
.fn()
86+
.mockImplementation(() =>
87+
sleep(20).then(() => Promise.reject(new Error('error'))),
88+
)
8789

8890
const rendered = render(BaseExample, {
8991
props: {
9092
successMutationOpts: {
9193
mutationKey: ['success'],
9294
mutationFn: successMutationFn,
9395
},
94-
9596
errorMutationOpts: {
9697
mutationKey: ['error'],
9798
mutationFn: errorMutationFn,
9899
},
99-
100100
mutationStateOpts: {
101101
filters: { mutationKey: ['success'] },
102102
},
103103
},
104104
})
105105

106-
fireEvent.click(rendered.getByTestId('success'))
107-
await vi.advanceTimersByTimeAsync(0)
106+
fireEvent.click(rendered.getByText('success'))
107+
await vi.advanceTimersByTimeAsync(11)
108108
expect(successMutationFn).toHaveBeenCalledTimes(1)
109-
expect(rendered.getByTestId('result').innerHTML).toEqual('["success"]')
109+
expect(rendered.getByText('["success"]')).toBeInTheDocument()
110110

111-
fireEvent.click(rendered.getByTestId('error'))
112-
await vi.advanceTimersByTimeAsync(0)
111+
fireEvent.click(rendered.getByText('error'))
112+
await vi.advanceTimersByTimeAsync(21)
113113
expect(errorMutationFn).toHaveBeenCalledTimes(1)
114-
expect(rendered.getByTestId('result').innerHTML).toEqual('["success"]')
114+
expect(rendered.getByText('["success"]')).toBeInTheDocument()
115115
})
116116
})

0 commit comments

Comments
 (0)