@@ -347,20 +347,48 @@ describe('Bootstrap Field Inputs', () => {
347
347
expect ( option . innerHTML ) . to . equal ( 'Foo' ) ;
348
348
} ) ;
349
349
350
- it ( 'boolean options' , done => {
351
- data . model . test = false ;
352
- data . fields [ 0 ] . type = 'select' ;
353
- data . fields [ 0 ] . options = [
354
- { label : 'Foo' , value : true } ,
355
- { label : 'Foo' , value : false }
356
- ] ;
357
- createForm ( ) ;
358
- const select = vm . $el . querySelectorAll ( 'select' ) ;
359
- expect ( select [ 0 ] . selectedIndex ) . to . equal ( 1 ) ;
360
- vm . model . test = true ;
361
- setTimeout ( ( ) => {
362
- expect ( select [ 0 ] . selectedIndex ) . to . equal ( 0 ) ;
363
- done ( ) ;
350
+ describe ( 'boolean options' , ( ) => {
351
+ it ( 'sets boolean values' , done => {
352
+ data . model . test = '' ;
353
+ data . fields [ 0 ] . type = 'select' ;
354
+ data . fields [ 0 ] . options = [
355
+ { label : 'Foo' , value : true } ,
356
+ { label : 'Foo' , value : false }
357
+ ] ;
358
+ createForm ( ) ;
359
+ const select = vm . $el . querySelectorAll ( 'select' ) ;
360
+ select [ 0 ] . value = 'false' ;
361
+ trigger ( select [ 0 ] , 'change' ) ;
362
+ setTimeout ( ( ) => {
363
+ expect ( vm . model . test ) . to . be . false ;
364
+ select [ 0 ] . value = 'true' ;
365
+ trigger ( select [ 0 ] , 'change' ) ;
366
+ setTimeout ( ( ) => {
367
+ expect ( vm . model . test ) . to . be . true ;
368
+ done ( ) ;
369
+ } ) ;
370
+ } ) ;
371
+ } ) ;
372
+
373
+ it ( 'takes boolean values' , done => {
374
+ data . model . test = false ;
375
+ data . fields [ 0 ] . type = 'select' ;
376
+ data . fields [ 0 ] . options = [
377
+ { label : 'Foo' , value : true } ,
378
+ { label : 'Foo' , value : false }
379
+ ] ;
380
+ createForm ( ) ;
381
+ const select = vm . $el . querySelectorAll ( 'select' ) ;
382
+ expect ( select [ 0 ] . selectedIndex ) . to . equal ( 1 ) ;
383
+ vm . model . test = true ;
384
+ setTimeout ( ( ) => {
385
+ expect ( select [ 0 ] . selectedIndex ) . to . equal ( 0 ) ;
386
+ vm . model . test = false ;
387
+ setTimeout ( ( ) => {
388
+ expect ( select [ 0 ] . selectedIndex ) . to . equal ( 1 ) ;
389
+ done ( ) ;
390
+ } ) ;
391
+ } ) ;
364
392
} ) ;
365
393
} ) ;
366
394
@@ -451,22 +479,91 @@ describe('Bootstrap Field Inputs', () => {
451
479
expect ( labels [ 2 ] . textContent ) . to . contain ( 'Bar' ) ;
452
480
} ) ;
453
481
454
- it ( 'boolean options' , done => {
455
- data . fields [ 0 ] . type = 'list' ;
456
- data . fields [ 0 ] . options = [
457
- { label : 'Foo' , value : true } ,
458
- { label : 'Bar' , value : false }
459
- ] ;
460
- data . model . test = [ false ] ;
461
- createForm ( ) ;
462
- expect ( vm . $el . querySelectorAll ( 'input' ) [ 1 ] . checked ) . to . be . true ;
463
- data . model . test . push ( true ) ;
464
- setTimeout ( ( ) => {
465
- expect ( vm . $el . querySelectorAll ( 'input' ) [ 0 ] . checked ) . to . be . true ;
466
- expect ( vm . $el . querySelectorAll ( 'input' ) [ 1 ] . checked ) . to . be . true ;
467
- done ( ) ;
468
- } ) ;
469
- } ) ;
482
+ describe ( 'boolean options' , ( ) => {
483
+ describe ( 'checkbox' , ( ) => {
484
+ it ( 'sets boolean values' , done => {
485
+ data . fields [ 0 ] . type = 'list' ;
486
+ data . fields [ 0 ] . options = [
487
+ { label : 'Foo' , value : true } ,
488
+ { label : 'Bar' , value : false }
489
+ ] ;
490
+ createForm ( ) ;
491
+
492
+ const inputs = vm . $el . querySelectorAll ( 'input' ) ;
493
+ inputs [ 0 ] . checked = true ;
494
+ trigger ( inputs [ 0 ] , 'change' ) ;
495
+ setTimeout ( ( ) => {
496
+ expect ( vm . model . test . indexOf ( true ) ) . to . equal ( 0 ) ;
497
+ inputs [ 1 ] . checked = true ;
498
+ trigger ( inputs [ 1 ] , 'change' ) ;
499
+ setTimeout ( ( ) => {
500
+ expect ( vm . model . test . indexOf ( false ) ) . to . equal ( 1 ) ;
501
+ done ( ) ;
502
+ } ) ;
503
+ } ) ;
504
+ } ) ;
505
+
506
+ it ( 'takes boolean values' , done => {
507
+ data . fields [ 0 ] . type = 'list' ;
508
+ data . fields [ 0 ] . options = [
509
+ { label : 'Foo' , value : true } ,
510
+ { label : 'Bar' , value : false }
511
+ ] ;
512
+ data . model . test = [ false ] ;
513
+ createForm ( ) ;
514
+ expect ( vm . $el . querySelectorAll ( 'input' ) [ 1 ] . checked ) . to . be . true ;
515
+ data . model . test . push ( true ) ;
516
+ setTimeout ( ( ) => {
517
+ expect ( vm . $el . querySelectorAll ( 'input' ) [ 0 ] . checked ) . to . be . true ;
518
+ expect ( vm . $el . querySelectorAll ( 'input' ) [ 1 ] . checked ) . to . be . true ;
519
+ done ( ) ;
520
+ } ) ;
521
+ } ) ;
522
+ } ) ; // checkbox
523
+
524
+ describe ( 'radio' , ( ) => {
525
+ it ( 'sets boolean values' , done => {
526
+ data . fields [ 0 ] . type = 'list' ;
527
+ data . fields [ 0 ] . templateOptions . inputType = 'radio' ;
528
+ data . fields [ 0 ] . options = [
529
+ { label : 'Foo' , value : true } ,
530
+ { label : 'Bar' , value : false }
531
+ ] ;
532
+ createForm ( ) ;
533
+
534
+ const inputs = vm . $el . querySelectorAll ( 'input' ) ;
535
+ inputs [ 0 ] . checked = true ;
536
+ trigger ( inputs [ 0 ] , 'change' ) ;
537
+ setTimeout ( ( ) => {
538
+ expect ( vm . model . test ) . to . be . true ;
539
+ inputs [ 1 ] . checked = true ;
540
+ trigger ( inputs [ 1 ] , 'change' ) ;
541
+ setTimeout ( ( ) => {
542
+ expect ( vm . model . test ) . to . be . false ;
543
+ done ( ) ;
544
+ } ) ;
545
+ } ) ;
546
+ } ) ;
547
+
548
+ it ( 'takes boolean values' , done => {
549
+ data . fields [ 0 ] . type = 'list' ;
550
+ data . fields [ 0 ] . templateOptions . inputType = 'radio' ;
551
+ data . fields [ 0 ] . options = [
552
+ { label : 'Foo' , value : true } ,
553
+ { label : 'Bar' , value : false }
554
+ ] ;
555
+ data . model . test = false ;
556
+ createForm ( ) ;
557
+ expect ( vm . $el . querySelectorAll ( 'input' ) [ 1 ] . checked ) . to . be . true ;
558
+ data . model . test = true ;
559
+ setTimeout ( ( ) => {
560
+ expect ( vm . $el . querySelectorAll ( 'input' ) [ 0 ] . checked ) . to . be . true ;
561
+ expect ( vm . $el . querySelectorAll ( 'input' ) [ 1 ] . checked ) . to . be . false ;
562
+ done ( ) ;
563
+ } ) ;
564
+ } ) ;
565
+ } ) ; // radio
566
+ } ) ; // boolean values
470
567
471
568
it ( 'sets defaults' , ( ) => {
472
569
data . fields [ 0 ] . type = 'list' ;
0 commit comments