1
1
/* eslint-disable react/prop-types */
2
2
import React from 'react' ;
3
- import { act } from 'react-dom/test-utils' ;
3
+ import { render , screen } from '@testing-library/react' ;
4
+ import userEvent from '@testing-library/user-event' ;
5
+
4
6
import { FormRenderer , componentTypes } from '@data-driven-forms/react-form-renderer' ;
5
- import { mount } from 'enzyme' ;
6
7
7
8
import DualListSelectCommon from '../../dual-list-select' ;
8
9
9
10
describe ( 'dual list select' , ( ) => {
10
11
let state ;
11
- let wrapper ;
12
12
13
13
const spyState = ( newState ) => {
14
14
state = newState ;
15
15
} ;
16
16
17
- const event = { preventDefault : jest . fn ( ) } ;
18
-
19
17
const Dummy = ( {
20
18
leftValues,
21
19
rightValues,
@@ -36,16 +34,24 @@ describe('dual list select', () => {
36
34
37
35
return (
38
36
< React . Fragment >
39
- < button id = "handleOptionsClick" onClick = { handleOptionsClick } />
40
- < button id = "handleValuesClick" onClick = { handleValuesClick } />
41
- < button id = "handleMoveRight" onClick = { handleMoveRight } />
42
- < button id = "handleMoveLeft" onClick = { handleMoveLeft } />
43
- < button id = "sortOptions" onClick = { sortOptions } />
44
- < button id = "sortValues" onClick = { sortValues } />
45
- < button id = "filterOptions" onClick = { filterOptions } />
46
- < button id = "filterValues" onClick = { filterValues } />
47
- < button id = "handleClearLeftValues" onClick = { handleClearLeftValues } />
48
- < button id = "handleClearRightValues" onClick = { handleClearRightValues } />
37
+ { leftValues . map ( ( { label, value } ) => (
38
+ < button key = { value } onClick = { ( event ) => handleOptionsClick ( event , value ) } >
39
+ { label }
40
+ </ button >
41
+ ) ) }
42
+ { rightValues . map ( ( { label, value } ) => (
43
+ < button key = { value } onClick = { ( event ) => handleValuesClick ( event , value ) } >
44
+ { label }
45
+ </ button >
46
+ ) ) }
47
+ < button aria-label = "handleMoveRight" onClick = { handleMoveRight } />
48
+ < button aria-label = "handleMoveLeft" onClick = { handleMoveLeft } />
49
+ < button aria-label = "sortOptions" onClick = { sortOptions } />
50
+ < button aria-label = "sortValues" onClick = { sortValues } />
51
+ < input type = "text" aria-label = "filterOptions" onChange = { ( e ) => filterOptions ( e . target . value ) } value = { state . filterOptions } />
52
+ < input type = "text" aria-label = "filterValues" onChange = { ( e ) => filterValues ( e . target . value ) } value = { state . filterValues } />
53
+ < button aria-label = "handleClearLeftValues" onClick = { handleClearLeftValues } />
54
+ < button aria-label = "handleClearRightValues" onClick = { handleClearRightValues } />
49
55
</ React . Fragment >
50
56
) ;
51
57
} ;
@@ -89,11 +95,7 @@ describe('dual list select', () => {
89
95
} ;
90
96
91
97
it ( 'move one left' , async ( ) => {
92
- await act ( async ( ) => {
93
- wrapper = mount ( < FormRenderer { ...rendererProps } initialValues = { { list : [ 'cats_2' ] } } /> ) ;
94
- } ) ;
95
- wrapper . update ( ) ;
96
-
98
+ render ( < FormRenderer { ...rendererProps } initialValues = { { list : [ 'cats_2' ] } } /> ) ;
97
99
expect ( state ) . toEqual ( {
98
100
filterOptions : '' ,
99
101
filterValue : '' ,
@@ -113,10 +115,7 @@ describe('dual list select', () => {
113
115
value : [ 'cats_2' ] ,
114
116
} ) ;
115
117
116
- await act ( async ( ) => {
117
- wrapper . find ( '#handleValuesClick' ) . props ( ) . onClick ( event , 'cats_2' ) ;
118
- } ) ;
119
- wrapper . update ( ) ;
118
+ userEvent . click ( screen . getByText ( 'cats_2' ) ) ;
120
119
121
120
expect ( state ) . toEqual ( {
122
121
filterOptions : '' ,
@@ -137,10 +136,7 @@ describe('dual list select', () => {
137
136
value : [ 'cats_2' ] ,
138
137
} ) ;
139
138
140
- await act ( async ( ) => {
141
- wrapper . find ( '#handleMoveLeft' ) . simulate ( 'click' ) ;
142
- } ) ;
143
- wrapper . update ( ) ;
139
+ userEvent . click ( screen . getByLabelText ( 'handleMoveLeft' ) ) ;
144
140
145
141
expect ( state ) . toEqual ( {
146
142
filterOptions : '' ,
@@ -164,10 +160,7 @@ describe('dual list select', () => {
164
160
} ) ;
165
161
166
162
it ( 'move one right' , async ( ) => {
167
- await act ( async ( ) => {
168
- wrapper = mount ( < FormRenderer { ...rendererProps } /> ) ;
169
- } ) ;
170
- wrapper . update ( ) ;
163
+ render ( < FormRenderer { ...rendererProps } /> ) ;
171
164
172
165
expect ( state ) . toEqual ( {
173
166
filterOptions : '' ,
@@ -189,10 +182,7 @@ describe('dual list select', () => {
189
182
value : '' ,
190
183
} ) ;
191
184
192
- await act ( async ( ) => {
193
- wrapper . find ( '#handleOptionsClick' ) . props ( ) . onClick ( event , 'cats_2' ) ;
194
- } ) ;
195
- wrapper . update ( ) ;
185
+ userEvent . click ( screen . getByText ( 'cats_2' ) ) ;
196
186
197
187
expect ( state ) . toEqual ( {
198
188
filterOptions : '' ,
@@ -214,10 +204,7 @@ describe('dual list select', () => {
214
204
value : '' ,
215
205
} ) ;
216
206
217
- await act ( async ( ) => {
218
- wrapper . find ( '#handleMoveRight' ) . simulate ( 'click' ) ;
219
- } ) ;
220
- wrapper . update ( ) ;
207
+ userEvent . click ( screen . getByLabelText ( 'handleMoveRight' ) ) ;
221
208
222
209
expect ( state ) . toEqual ( {
223
210
filterOptions : '' ,
@@ -240,28 +227,11 @@ describe('dual list select', () => {
240
227
} ) ;
241
228
242
229
it ( 'move two right with ctrl' , async ( ) => {
243
- await act ( async ( ) => {
244
- wrapper = mount ( < FormRenderer { ...rendererProps } /> ) ;
245
- } ) ;
246
- wrapper . update ( ) ;
247
-
248
- await act ( async ( ) => {
249
- wrapper . find ( '#handleOptionsClick' ) . props ( ) . onClick ( event , 'cats_2' ) ;
250
- } ) ;
251
- wrapper . update ( ) ;
252
-
253
- await act ( async ( ) => {
254
- wrapper
255
- . find ( '#handleOptionsClick' )
256
- . props ( )
257
- . onClick ( { ...event , ctrlKey : true } , 'cats_1' ) ;
258
- } ) ;
259
- wrapper . update ( ) ;
230
+ render ( < FormRenderer { ...rendererProps } /> ) ;
260
231
261
- await act ( async ( ) => {
262
- wrapper . find ( '#handleMoveRight' ) . simulate ( 'click' ) ;
263
- } ) ;
264
- wrapper . update ( ) ;
232
+ userEvent . click ( screen . getByText ( 'cats_2' ) ) ;
233
+ userEvent . click ( screen . getByText ( 'cats_1' ) , { ctrlKey : true } ) ;
234
+ userEvent . click ( screen . getByLabelText ( 'handleMoveRight' ) ) ;
265
235
266
236
expect ( state ) . toEqual ( {
267
237
filterOptions : '' ,
@@ -286,36 +256,11 @@ describe('dual list select', () => {
286
256
} ) ;
287
257
288
258
it ( 'unselect with ctrl' , async ( ) => {
289
- await act ( async ( ) => {
290
- wrapper = mount ( < FormRenderer { ...rendererProps } /> ) ;
291
- } ) ;
292
- wrapper . update ( ) ;
293
-
294
- await act ( async ( ) => {
295
- wrapper . find ( '#handleOptionsClick' ) . props ( ) . onClick ( event , 'cats_2' ) ;
296
- } ) ;
297
- wrapper . update ( ) ;
298
-
299
- await act ( async ( ) => {
300
- wrapper
301
- . find ( '#handleOptionsClick' )
302
- . props ( )
303
- . onClick ( { ...event , ctrlKey : true } , 'cats_1' ) ;
304
- } ) ;
305
- wrapper . update ( ) ;
306
-
307
- await act ( async ( ) => {
308
- wrapper
309
- . find ( '#handleOptionsClick' )
310
- . props ( )
311
- . onClick ( { ...event , ctrlKey : true } , 'cats_2' ) ;
312
- } ) ;
313
- wrapper . update ( ) ;
314
-
315
- await act ( async ( ) => {
316
- wrapper . find ( '#handleMoveRight' ) . simulate ( 'click' ) ;
317
- } ) ;
318
- wrapper . update ( ) ;
259
+ render ( < FormRenderer { ...rendererProps } /> ) ;
260
+ userEvent . click ( screen . getByText ( 'cats_2' ) ) ;
261
+ userEvent . click ( screen . getByText ( 'cats_1' ) , { ctrlKey : true } ) ;
262
+ userEvent . click ( screen . getByText ( 'cats_2' ) , { ctrlKey : true } ) ;
263
+ userEvent . click ( screen . getByLabelText ( 'handleMoveRight' ) ) ;
319
264
320
265
expect ( state ) . toEqual ( {
321
266
filterOptions : '' ,
@@ -338,28 +283,11 @@ describe('dual list select', () => {
338
283
} ) ;
339
284
340
285
it ( 'move three right with shift' , async ( ) => {
341
- await act ( async ( ) => {
342
- wrapper = mount ( < FormRenderer { ...rendererProps } /> ) ;
343
- } ) ;
344
- wrapper . update ( ) ;
286
+ render ( < FormRenderer { ...rendererProps } /> ) ;
345
287
346
- await act ( async ( ) => {
347
- wrapper . find ( '#handleOptionsClick' ) . props ( ) . onClick ( event , 'cats' ) ;
348
- } ) ;
349
- wrapper . update ( ) ;
350
-
351
- await act ( async ( ) => {
352
- wrapper
353
- . find ( '#handleOptionsClick' )
354
- . props ( )
355
- . onClick ( { ...event , shiftKey : true } , 'cats_2' ) ;
356
- } ) ;
357
- wrapper . update ( ) ;
358
-
359
- await act ( async ( ) => {
360
- wrapper . find ( '#handleMoveRight' ) . simulate ( 'click' ) ;
361
- } ) ;
362
- wrapper . update ( ) ;
288
+ userEvent . click ( screen . getByText ( 'cats' ) ) ;
289
+ userEvent . click ( screen . getByText ( 'cats_2' ) , { shiftKey : true } ) ;
290
+ userEvent . click ( screen . getByLabelText ( 'handleMoveRight' ) ) ;
363
291
364
292
expect ( state ) . toEqual ( {
365
293
filterOptions : '' ,
@@ -384,15 +312,9 @@ describe('dual list select', () => {
384
312
} ) ;
385
313
386
314
it ( 'move all left' , async ( ) => {
387
- await act ( async ( ) => {
388
- wrapper = mount ( < FormRenderer { ...rendererProps } initialValues = { { list : [ 'cats' , 'cats_1' , 'cats_2' , 'pigeons' , 'zebras' ] } } /> ) ;
389
- } ) ;
390
- wrapper . update ( ) ;
315
+ render ( < FormRenderer { ...rendererProps } initialValues = { { list : [ 'cats' , 'cats_1' , 'cats_2' , 'pigeons' , 'zebras' ] } } /> ) ;
391
316
392
- await act ( async ( ) => {
393
- wrapper . find ( '#handleClearRightValues' ) . simulate ( 'click' ) ;
394
- } ) ;
395
- wrapper . update ( ) ;
317
+ userEvent . click ( screen . getByLabelText ( 'handleClearRightValues' ) ) ;
396
318
397
319
expect ( state ) . toEqual ( {
398
320
filterOptions : '' ,
@@ -416,15 +338,9 @@ describe('dual list select', () => {
416
338
} ) ;
417
339
418
340
it ( 'move all right' , async ( ) => {
419
- await act ( async ( ) => {
420
- wrapper = mount ( < FormRenderer { ...rendererProps } /> ) ;
421
- } ) ;
422
- wrapper . update ( ) ;
341
+ render ( < FormRenderer { ...rendererProps } /> ) ;
423
342
424
- await act ( async ( ) => {
425
- wrapper . find ( '#handleClearLeftValues' ) . simulate ( 'click' ) ;
426
- } ) ;
427
- wrapper . update ( ) ;
343
+ userEvent . click ( screen . getByLabelText ( 'handleClearLeftValues' ) ) ;
428
344
429
345
expect ( state ) . toEqual ( {
430
346
filterOptions : '' ,
@@ -448,15 +364,9 @@ describe('dual list select', () => {
448
364
} ) ;
449
365
450
366
it ( 'filter options' , async ( ) => {
451
- await act ( async ( ) => {
452
- wrapper = mount ( < FormRenderer { ...rendererProps } /> ) ;
453
- } ) ;
454
- wrapper . update ( ) ;
367
+ render ( < FormRenderer { ...rendererProps } /> ) ;
455
368
456
- await act ( async ( ) => {
457
- wrapper . find ( '#filterOptions' ) . props ( ) . onClick ( 'cats_' ) ;
458
- } ) ;
459
- wrapper . update ( ) ;
369
+ userEvent . type ( screen . getByLabelText ( 'filterOptions' ) , 'cats_' ) ;
460
370
461
371
expect ( state ) . toEqual ( {
462
372
filterOptions : 'cats_' ,
@@ -477,15 +387,9 @@ describe('dual list select', () => {
477
387
} ) ;
478
388
479
389
it ( 'filter values' , async ( ) => {
480
- await act ( async ( ) => {
481
- wrapper = mount ( < FormRenderer { ...rendererProps } initialValues = { { list : [ 'cats' , 'cats_1' , 'cats_2' , 'pigeons' , 'zebras' ] } } /> ) ;
482
- } ) ;
483
- wrapper . update ( ) ;
390
+ render ( < FormRenderer { ...rendererProps } initialValues = { { list : [ 'cats' , 'cats_1' , 'cats_2' , 'pigeons' , 'zebras' ] } } /> ) ;
484
391
485
- await act ( async ( ) => {
486
- wrapper . find ( '#filterValues' ) . props ( ) . onClick ( 'cats_' ) ;
487
- } ) ;
488
- wrapper . update ( ) ;
392
+ userEvent . type ( screen . getByLabelText ( 'filterValues' ) , 'cats_' ) ;
489
393
490
394
expect ( state ) . toEqual ( {
491
395
filterOptions : '' ,
@@ -506,15 +410,9 @@ describe('dual list select', () => {
506
410
} ) ;
507
411
508
412
it ( 'sort options' , async ( ) => {
509
- await act ( async ( ) => {
510
- wrapper = mount ( < FormRenderer { ...rendererProps } /> ) ;
511
- } ) ;
512
- wrapper . update ( ) ;
413
+ render ( < FormRenderer { ...rendererProps } /> ) ;
513
414
514
- await act ( async ( ) => {
515
- wrapper . find ( '#sortOptions' ) . simulate ( 'click' ) ;
516
- } ) ;
517
- wrapper . update ( ) ;
415
+ userEvent . click ( screen . getByLabelText ( 'sortOptions' ) ) ;
518
416
519
417
expect ( state ) . toEqual ( {
520
418
filterOptions : '' ,
@@ -536,10 +434,7 @@ describe('dual list select', () => {
536
434
value : '' ,
537
435
} ) ;
538
436
539
- await act ( async ( ) => {
540
- wrapper . find ( '#sortOptions' ) . simulate ( 'click' ) ;
541
- } ) ;
542
- wrapper . update ( ) ;
437
+ userEvent . click ( screen . getByLabelText ( 'sortOptions' ) ) ;
543
438
544
439
expect ( state ) . toEqual ( {
545
440
filterOptions : '' ,
@@ -563,15 +458,9 @@ describe('dual list select', () => {
563
458
} ) ;
564
459
565
460
it ( 'sort values' , async ( ) => {
566
- await act ( async ( ) => {
567
- wrapper = mount ( < FormRenderer { ...rendererProps } initialValues = { { list : [ 'cats' , 'cats_1' , 'cats_2' , 'pigeons' , 'zebras' ] } } /> ) ;
568
- } ) ;
569
- wrapper . update ( ) ;
461
+ render ( < FormRenderer { ...rendererProps } initialValues = { { list : [ 'cats' , 'cats_1' , 'cats_2' , 'pigeons' , 'zebras' ] } } /> ) ;
570
462
571
- await act ( async ( ) => {
572
- wrapper . find ( '#sortValues' ) . simulate ( 'click' ) ;
573
- } ) ;
574
- wrapper . update ( ) ;
463
+ userEvent . click ( screen . getByLabelText ( 'sortValues' ) ) ;
575
464
576
465
expect ( state ) . toEqual ( {
577
466
filterOptions : '' ,
@@ -593,10 +482,7 @@ describe('dual list select', () => {
593
482
value : [ 'cats' , 'cats_1' , 'cats_2' , 'pigeons' , 'zebras' ] ,
594
483
} ) ;
595
484
596
- await act ( async ( ) => {
597
- wrapper . find ( '#sortValues' ) . simulate ( 'click' ) ;
598
- } ) ;
599
- wrapper . update ( ) ;
485
+ userEvent . click ( screen . getByLabelText ( 'sortValues' ) ) ;
600
486
601
487
expect ( state ) . toEqual ( {
602
488
filterOptions : '' ,
0 commit comments