1
1
import { afterEach , beforeEach , describe , expect , test , vi } from 'vitest'
2
2
import { fireEvent , render } from '@testing-library/svelte'
3
+ import { sleep } from '../../../query-core/src/utils'
3
4
import BaseExample from './BaseExample.svelte'
4
5
5
6
describe ( 'useMutationState' , ( ) => {
@@ -12,10 +13,12 @@ describe('useMutationState', () => {
12
13
} )
13
14
14
15
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
+ )
19
22
20
23
const rendered = render ( BaseExample , {
21
24
props : {
@@ -31,24 +34,24 @@ describe('useMutationState', () => {
31
34
} ,
32
35
} )
33
36
34
- fireEvent . click ( rendered . getByTestId ( 'success' ) )
35
- await vi . advanceTimersByTimeAsync ( 0 )
37
+ fireEvent . click ( rendered . getByText ( 'success' ) )
38
+ await vi . advanceTimersByTimeAsync ( 11 )
36
39
expect ( successMutationFn ) . toHaveBeenCalledTimes ( 1 )
37
- expect ( rendered . getByTestId ( 'result' ) . innerHTML ) . toEqual ( ' ["success"]')
40
+ expect ( rendered . getByText ( ' ["success"]') ) . toBeInTheDocument ( )
38
41
39
- fireEvent . click ( rendered . getByTestId ( 'error' ) )
40
- await vi . advanceTimersByTimeAsync ( 0 )
42
+ fireEvent . click ( rendered . getByText ( 'error' ) )
43
+ await vi . advanceTimersByTimeAsync ( 21 )
41
44
expect ( errorMutationFn ) . toHaveBeenCalledTimes ( 1 )
42
- expect ( rendered . getByTestId ( 'result' ) . innerHTML ) . toEqual (
43
- '["success","error"]' ,
44
- )
45
+ expect ( rendered . getByText ( '["success","error"]' ) ) . toBeInTheDocument ( )
45
46
} )
46
47
47
48
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
- } )
49
+ const successMutationFn = vi . fn ( ( ) => sleep ( 10 ) . then ( ( ) => 'data' ) )
50
+ const errorMutationFn = vi
51
+ . fn ( )
52
+ . mockImplementation ( ( ) =>
53
+ sleep ( 20 ) . then ( ( ) => Promise . reject ( new Error ( 'error' ) ) ) ,
54
+ )
52
55
53
56
const rendered = render ( BaseExample , {
54
57
props : {
@@ -68,22 +71,24 @@ describe('useMutationState', () => {
68
71
} ,
69
72
} )
70
73
71
- fireEvent . click ( rendered . getByTestId ( 'success' ) )
72
- await vi . advanceTimersByTimeAsync ( 0 )
74
+ fireEvent . click ( rendered . getByText ( 'success' ) )
75
+ await vi . advanceTimersByTimeAsync ( 11 )
73
76
expect ( successMutationFn ) . toHaveBeenCalledTimes ( 1 )
74
- expect ( rendered . getByTestId ( 'result' ) . innerHTML ) . toEqual ( '[]' )
77
+ expect ( rendered . getByText ( '[]' ) ) . toBeInTheDocument ( )
75
78
76
- fireEvent . click ( rendered . getByTestId ( 'error' ) )
77
- await vi . advanceTimersByTimeAsync ( 0 )
79
+ fireEvent . click ( rendered . getByText ( 'error' ) )
80
+ await vi . advanceTimersByTimeAsync ( 21 )
78
81
expect ( errorMutationFn ) . toHaveBeenCalledTimes ( 1 )
79
- expect ( rendered . getByTestId ( 'result' ) . innerHTML ) . toEqual ( ' ["error"]')
82
+ expect ( rendered . getByText ( ' ["error"]') ) . toBeInTheDocument ( )
80
83
} )
81
84
82
85
test ( 'Can select specific mutation using mutation key' , async ( ) => {
83
- const successMutationFn = vi . fn ( )
84
- const errorMutationFn = vi . fn ( ) . mockImplementation ( ( ) => {
85
- throw 'error'
86
- } )
86
+ const successMutationFn = vi . fn ( ( ) => sleep ( 10 ) . then ( ( ) => 'data' ) )
87
+ const errorMutationFn = vi
88
+ . fn ( )
89
+ . mockImplementation ( ( ) =>
90
+ sleep ( 20 ) . then ( ( ) => Promise . reject ( new Error ( 'error' ) ) ) ,
91
+ )
87
92
88
93
const rendered = render ( BaseExample , {
89
94
props : {
@@ -103,14 +108,14 @@ describe('useMutationState', () => {
103
108
} ,
104
109
} )
105
110
106
- fireEvent . click ( rendered . getByTestId ( 'success' ) )
107
- await vi . advanceTimersByTimeAsync ( 0 )
111
+ fireEvent . click ( rendered . getByText ( 'success' ) )
112
+ await vi . advanceTimersByTimeAsync ( 11 )
108
113
expect ( successMutationFn ) . toHaveBeenCalledTimes ( 1 )
109
- expect ( rendered . getByTestId ( 'result' ) . innerHTML ) . toEqual ( ' ["success"]')
114
+ expect ( rendered . getByText ( ' ["success"]') ) . toBeInTheDocument ( )
110
115
111
- fireEvent . click ( rendered . getByTestId ( 'error' ) )
112
- await vi . advanceTimersByTimeAsync ( 0 )
116
+ fireEvent . click ( rendered . getByText ( 'error' ) )
117
+ await vi . advanceTimersByTimeAsync ( 21 )
113
118
expect ( errorMutationFn ) . toHaveBeenCalledTimes ( 1 )
114
- expect ( rendered . getByTestId ( 'result' ) . innerHTML ) . toEqual ( ' ["success"]')
119
+ expect ( rendered . getByText ( ' ["success"]') ) . toBeInTheDocument ( )
115
120
} )
116
121
} )
0 commit comments