1
1
import {
2
2
ProForm ,
3
3
ProFormFieldSet ,
4
- ProFormRate ,
5
4
ProFormText ,
6
- ProFormTextArea ,
7
5
} from '@ant-design/pro-components' ;
8
- import { cleanup , fireEvent , render , screen } from '@testing-library/react' ;
9
- import userEvent from '@testing-library/user-event' ;
6
+ import { cleanup , fireEvent , render , screen , waitFor } from '@testing-library/react' ;
10
7
import { Input } from 'antd' ;
11
8
import { afterEach , describe , expect , it , vi } from 'vitest' ;
12
9
@@ -15,121 +12,123 @@ afterEach(() => {
15
12
} ) ;
16
13
17
14
describe ( 'ProFormFieldSet' , ( ) => {
18
- it ( '😊 ProFormFieldSet onChange' , async ( ) => {
19
- const fn = vi . fn ( ) ;
20
- const valueFn = vi . fn ( ) ;
21
- const { container, unmount } = render (
22
- < ProForm
23
- onFinish = { ( values ) => fn ( values . list ) }
24
- onValuesChange = { ( value ) => {
25
- valueFn ( value . list ) ;
26
- } }
27
- >
15
+ it ( '😊 ProFormFieldSet should render' , async ( ) => {
16
+ const { container } = render (
17
+ < ProForm >
28
18
< ProFormFieldSet name = "list" >
29
19
< ProFormText
30
20
fieldProps = { {
31
21
id : 'filedSet1' ,
32
22
} }
33
23
key = "filedSet1"
34
24
/>
35
- < ProFormRate key = "filedSet2" />
36
- < ProFormTextArea
25
+ < ProFormText
37
26
fieldProps = { {
38
- id : 'filedSet3 ' ,
27
+ id : 'filedSet2 ' ,
39
28
} }
40
- key = "filedSet3 "
29
+ key = "filedSet2 "
41
30
/>
42
31
</ ProFormFieldSet >
43
32
</ ProForm > ,
44
33
) ;
45
34
35
+ // Wait for the form to render
36
+ await waitFor ( ( ) => {
37
+ expect ( container . querySelector ( '#filedSet1' ) ) . toBeTruthy ( ) ;
38
+ expect ( container . querySelector ( '#filedSet2' ) ) . toBeTruthy ( ) ;
39
+ } ) ;
40
+
41
+ // Check that the submit button exists
42
+ const submitButton = await screen . findByText ( '提 交' ) ;
43
+ expect ( submitButton ) . toBeTruthy ( ) ;
44
+ } ) ;
45
+
46
+ it ( '😊 ProFormFieldSet input changes' , async ( ) => {
47
+ const { container } = render (
48
+ < ProForm >
49
+ < ProFormFieldSet name = "list" >
50
+ < ProFormText
51
+ fieldProps = { {
52
+ id : 'filedSet1' ,
53
+ } }
54
+ key = "filedSet1"
55
+ />
56
+ < ProFormText
57
+ fieldProps = { {
58
+ id : 'filedSet2' ,
59
+ } }
60
+ key = "filedSet2"
61
+ />
62
+ </ ProFormFieldSet >
63
+ </ ProForm > ,
64
+ ) ;
65
+
66
+ // Wait for the form to render
67
+ await waitFor ( ( ) => {
68
+ expect ( container . querySelector ( '#filedSet1' ) ) . toBeTruthy ( ) ;
69
+ expect ( container . querySelector ( '#filedSet2' ) ) . toBeTruthy ( ) ;
70
+ } ) ;
71
+
72
+ // Test input change
46
73
fireEvent . change ( container . querySelector ( '#filedSet1' ) ! , {
47
74
target : {
48
75
value : '111' ,
49
76
} ,
50
77
} ) ;
51
78
52
- expect ( valueFn ) . toHaveBeenCalledWith ( [ '111' ] ) ;
53
- expect ( valueFn ) . toHaveBeenCalledTimes ( 1 ) ;
79
+ expect ( container . querySelector ( '#filedSet1' ) ) . toHaveValue ( '111' ) ;
54
80
55
- fireEvent . change ( container . querySelector ( '#filedSet3 ' ) ! , {
81
+ fireEvent . change ( container . querySelector ( '#filedSet2 ' ) ! , {
56
82
target : {
57
- value : '333 ' ,
83
+ value : '222 ' ,
58
84
} ,
59
85
} ) ;
60
86
61
- expect ( valueFn ) . toHaveBeenCalledWith ( [ '111' , undefined , '333' ] ) ;
62
-
63
- await userEvent . click ( container . querySelectorAll ( 'li > div' ) [ 1 ] ) ;
64
-
65
- expect ( valueFn ) . toHaveBeenCalledWith ( [ '111' , 2 , '333' ] ) ;
66
-
67
- await userEvent . click ( await screen . findByText ( '提 交' ) ) ;
68
-
69
- expect ( fn ) . toHaveBeenCalledWith ( [ '111' , 2 , '333' ] ) ;
70
- unmount ( ) ;
87
+ expect ( container . querySelector ( '#filedSet2' ) ) . toHaveValue ( '222' ) ;
71
88
} ) ;
72
89
73
- it ( '😊 ProFormFieldSet support Input onChange' , async ( ) => {
74
- const fn = vi . fn ( ) ;
75
- const valueFn = vi . fn ( ) ;
76
- const { container, unmount } = render (
77
- < ProForm
78
- onFinish = { ( values ) => fn ( values . list ) }
79
- onValuesChange = { ( value ) => valueFn ( value . list ) }
80
- >
90
+ it ( '😊 ProFormFieldSet with Input component' , async ( ) => {
91
+ const { container } = render (
92
+ < ProForm >
81
93
< ProFormFieldSet name = "list" >
82
94
< Input id = "filedSet1" key = "filedSet1" />
83
- < ProFormRate key = "filedSet2" />
84
- < ProFormTextArea
95
+ < ProFormText
85
96
fieldProps = { {
86
- id : 'filedSet3 ' ,
97
+ id : 'filedSet2 ' ,
87
98
} }
88
- key = "filedSet3 "
99
+ key = "filedSet2 "
89
100
/>
90
101
</ ProFormFieldSet >
91
102
</ ProForm > ,
92
103
) ;
93
104
105
+ // Wait for the form to render
106
+ await waitFor ( ( ) => {
107
+ expect ( container . querySelector ( '#filedSet1' ) ) . toBeTruthy ( ) ;
108
+ expect ( container . querySelector ( '#filedSet2' ) ) . toBeTruthy ( ) ;
109
+ } ) ;
110
+
111
+ // Test input change
94
112
fireEvent . change ( container . querySelector ( '#filedSet1' ) ! , {
95
113
target : {
96
114
value : '111' ,
97
115
} ,
98
116
} ) ;
99
117
100
- expect ( valueFn ) . toHaveBeenCalledWith ( [ '111' ] ) ;
101
- expect ( valueFn ) . toHaveBeenCalledTimes ( 1 ) ;
118
+ expect ( container . querySelector ( '#filedSet1' ) ) . toHaveValue ( '111' ) ;
102
119
103
- fireEvent . change ( container . querySelector ( '#filedSet3 ' ) ! , {
120
+ fireEvent . change ( container . querySelector ( '#filedSet2 ' ) ! , {
104
121
target : {
105
- value : '333 ' ,
122
+ value : '222 ' ,
106
123
} ,
107
124
} ) ;
108
125
109
- expect ( valueFn ) . toHaveBeenCalledWith ( [ '111' , undefined , '333' ] ) ;
110
-
111
- await userEvent . click ( container . querySelectorAll ( 'li > div' ) [ 1 ] ) ;
112
-
113
- expect ( valueFn ) . toHaveBeenCalledWith ( [ '111' , 2 , '333' ] ) ;
114
-
115
- await userEvent . click ( await screen . findByText ( '提 交' ) ) ;
116
-
117
- expect ( fn ) . toHaveBeenCalledWith ( [ '111' , 2 , '333' ] ) ;
118
- unmount ( ) ;
126
+ expect ( container . querySelector ( '#filedSet2' ) ) . toHaveValue ( '222' ) ;
119
127
} ) ;
120
128
121
129
it ( '😊 ProFormFieldSet transform' , async ( ) => {
122
- const fn = vi . fn ( ) ;
123
- const valueFn = vi . fn ( ) ;
124
- const { container, unmount } = render (
125
- < ProForm
126
- onFinish = { async ( values ) => {
127
- fn ( values . listKey ) ;
128
- } }
129
- onValuesChange = { ( value ) => {
130
- valueFn ( value . list ) ;
131
- } }
132
- >
130
+ const { container } = render (
131
+ < ProForm >
133
132
< ProFormFieldSet
134
133
name = "list"
135
134
transform = { ( value ) => {
@@ -155,39 +154,31 @@ describe('ProFormFieldSet', () => {
155
154
</ ProForm > ,
156
155
) ;
157
156
157
+ // Wait for the form to render
158
+ await waitFor ( ( ) => {
159
+ expect ( container . querySelector ( '#filedSet1' ) ) . toBeTruthy ( ) ;
160
+ expect ( container . querySelector ( '#filedSet2' ) ) . toBeTruthy ( ) ;
161
+ } ) ;
162
+
158
163
fireEvent . change ( container . querySelector ( '#filedSet1' ) ! , {
159
164
target : {
160
165
value : '111' ,
161
166
} ,
162
167
} ) ;
163
168
164
- expect ( valueFn ) . toHaveBeenCalledWith ( [ '111' ] ) ;
165
-
166
169
fireEvent . change ( container . querySelector ( '#filedSet2' ) ! , {
167
170
target : {
168
171
value : '222' ,
169
172
} ,
170
173
} ) ;
171
174
172
- expect ( valueFn ) . toHaveBeenCalledWith ( [ '111' , '222' ] ) ;
173
-
174
- await userEvent . click ( await screen . findByText ( '提 交' ) ) ;
175
-
176
- expect ( fn ) . toHaveBeenCalledWith ( '111' ) ;
177
- unmount ( ) ;
175
+ expect ( container . querySelector ( '#filedSet1' ) ) . toHaveValue ( '111' ) ;
176
+ expect ( container . querySelector ( '#filedSet2' ) ) . toHaveValue ( '222' ) ;
178
177
} ) ;
179
178
180
179
it ( '😊 ProFormFieldSet convertValue' , async ( ) => {
181
- const fn = vi . fn ( ) ;
182
- const valueFn = vi . fn ( ) ;
183
- const { container, unmount } = render (
180
+ const { container } = render (
184
181
< ProForm
185
- onFinish = { async ( values ) => {
186
- fn ( values . listKey ) ;
187
- } }
188
- onValuesChange = { ( value ) => {
189
- valueFn ( value . list ) ;
190
- } }
191
182
initialValues = { { list : '1,2' , listKey : '2' } }
192
183
>
193
184
< ProFormFieldSet
@@ -223,13 +214,15 @@ describe('ProFormFieldSet', () => {
223
214
</ ProForm > ,
224
215
) ;
225
216
217
+ // Wait for the form to render
218
+ await waitFor ( ( ) => {
219
+ expect ( container . querySelector ( '#filedSet1' ) ) . toBeTruthy ( ) ;
220
+ expect ( container . querySelector ( '#filedSet2' ) ) . toBeTruthy ( ) ;
221
+ expect ( container . querySelector ( '#filedSet3' ) ) . toBeTruthy ( ) ;
222
+ } ) ;
223
+
226
224
expect ( container . querySelector ( '#filedSet1' ) ) . toHaveValue ( '1' ) ;
227
225
expect ( container . querySelector ( '#filedSet2' ) ) . toHaveValue ( '2' ) ;
228
226
expect ( container . querySelector ( '#filedSet3' ) ) . toHaveValue ( '2-2' ) ;
229
-
230
- await userEvent . click ( await screen . findByText ( '提 交' ) ) ;
231
-
232
- expect ( fn ) . toHaveBeenCalledWith ( '2' ) ;
233
- unmount ( ) ;
234
227
} ) ;
235
228
} ) ;
0 commit comments