@@ -344,11 +344,31 @@ describe('Select test', () => {
344
344
wrapper . update ( ) ;
345
345
346
346
expect ( state . value ) . toEqual ( [
347
+ { label : 'Select all' , selectAll : true } ,
347
348
{ label : 'Dogs' , value : 'd' } ,
348
349
{ label : 'Cats' , value : 'c' } ,
349
350
{ label : 'Hamsters' , value : 'h' }
350
351
] ) ;
351
352
expect ( inputValue ) . toEqual ( [ 'd' , 'c' , 'h' ] ) ;
353
+
354
+ // remove hamsters
355
+ await act ( async ( ) => {
356
+ wrapper
357
+ . find ( '#onChange' )
358
+ . props ( )
359
+ . onClick ( [
360
+ { label : 'Select all' , selectAll : true } ,
361
+ { label : 'Dogs' , value : 'd' } ,
362
+ { label : 'Cats' , value : 'c' }
363
+ ] ) ;
364
+ } ) ;
365
+ wrapper . update ( ) ;
366
+
367
+ expect ( state . value ) . toEqual ( [
368
+ { label : 'Dogs' , value : 'd' } ,
369
+ { label : 'Cats' , value : 'c' }
370
+ ] ) ;
371
+ expect ( inputValue ) . toEqual ( [ 'd' , 'c' ] ) ;
352
372
} ) ;
353
373
354
374
it ( 'selects none' , async ( ) => {
@@ -380,8 +400,86 @@ describe('Select test', () => {
380
400
} ) ;
381
401
wrapper . update ( ) ;
382
402
383
- expect ( state . value ) . toEqual ( [ ] ) ;
403
+ expect ( state . value ) . toEqual ( [ { label : 'Select none' , selectNone : true } ] ) ;
384
404
expect ( inputValue ) . toEqual ( '' ) ;
405
+
406
+ // adds one
407
+ await act ( async ( ) => {
408
+ wrapper
409
+ . find ( '#onChange' )
410
+ . props ( )
411
+ . onClick ( [
412
+ { label : 'Select none' , selectNone : true } ,
413
+ { label : 'Dogs' , value : 'd' }
414
+ ] ) ;
415
+ } ) ;
416
+ wrapper . update ( ) ;
417
+
418
+ expect ( state . value ) . toEqual ( [ { label : 'Dogs' , value : 'd' } ] ) ;
419
+ expect ( inputValue ) . toEqual ( [ 'd' ] ) ;
420
+ } ) ;
421
+
422
+ it ( 'with select all and select none at that same time' , async ( ) => {
423
+ field = {
424
+ ...field ,
425
+ isMulti : true ,
426
+ options : [
427
+ { label : 'Select all' , selectAll : true , value : 'select-all' } ,
428
+ { label : 'Select none' , selectNone : true , value : 'select-none' } ,
429
+ ...field . options
430
+ ]
431
+ } ;
432
+
433
+ await act ( async ( ) => {
434
+ wrapper = mount (
435
+ < FormRenderer
436
+ { ...rendererProps }
437
+ schema = { {
438
+ fields : [
439
+ {
440
+ ...field ,
441
+ component : componentTypes . SELECT ,
442
+ name : 'select'
443
+ }
444
+ ]
445
+ } }
446
+ />
447
+ ) ;
448
+ } ) ;
449
+ wrapper . update ( ) ;
450
+
451
+ await act ( async ( ) => {
452
+ wrapper
453
+ . find ( '#onChange' )
454
+ . props ( )
455
+ . onClick ( [ { label : 'Select all' , selectAll : true , value : 'select-all' } ] ) ;
456
+ } ) ;
457
+ wrapper . update ( ) ;
458
+
459
+ expect ( state . value ) . toEqual ( [
460
+ { label : 'Select all' , selectAll : true , value : 'select-all' } ,
461
+ { label : 'Dogs' , value : 'd' } ,
462
+ { label : 'Cats' , value : 'c' } ,
463
+ { label : 'Hamsters' , value : 'h' }
464
+ ] ) ;
465
+ expect ( inputValue ) . toEqual ( [ 'd' , 'c' , 'h' ] ) ;
466
+
467
+ await act ( async ( ) => {
468
+ wrapper
469
+ . find ( '#onChange' )
470
+ . props ( )
471
+ . onClick ( [
472
+ { label : 'Select all' , selectAll : true } ,
473
+ { label : 'Dogs' , value : 'd' } ,
474
+ { label : 'Cats' , value : 'c' } ,
475
+ { label : 'Hamsters' , value : 'h' } ,
476
+ { label : 'Select none' , selectNone : true , value : 'select-none' }
477
+ ] ) ;
478
+ } ) ;
479
+ wrapper . update ( ) ;
480
+
481
+ expect ( state . value ) . toEqual ( [ { label : 'Select none' , selectNone : true , value : 'select-none' } ] ) ;
482
+ expect ( inputValue ) . toEqual ( [ ] ) ;
385
483
} ) ;
386
484
} ) ;
387
485
0 commit comments