@@ -347,20 +347,48 @@ describe('Bootstrap Field Inputs', () => {
347347 expect ( option . innerHTML ) . to . equal ( 'Foo' ) ;
348348 } ) ;
349349
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+ } ) ;
364392 } ) ;
365393 } ) ;
366394
@@ -451,22 +479,91 @@ describe('Bootstrap Field Inputs', () => {
451479 expect ( labels [ 2 ] . textContent ) . to . contain ( 'Bar' ) ;
452480 } ) ;
453481
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
470567
471568 it ( 'sets defaults' , ( ) => {
472569 data . fields [ 0 ] . type = 'list' ;
0 commit comments