@@ -363,6 +363,54 @@ describe('form-checkbox-group', () => {
363
363
wrapper . destroy ( )
364
364
} )
365
365
366
+ it ( 'does not emit "input" event when value loosely changes' , async ( ) => {
367
+ const value = [ 'one' , 'two' , 'three' ]
368
+ const wrapper = mount ( BFormCheckboxGroup , {
369
+ attachTo : createContainer ( ) ,
370
+ propsData : {
371
+ options : value . slice ( ) ,
372
+ checked : value . slice ( )
373
+ }
374
+ } )
375
+ expect ( wrapper . classes ( ) ) . toBeDefined ( )
376
+ const checks = wrapper . findAll ( 'input' )
377
+ expect ( checks . length ) . toBe ( 3 )
378
+ expect ( wrapper . vm . localChecked ) . toEqual ( value )
379
+ expect ( checks . wrappers . every ( c => c . find ( 'input[type=checkbox]' ) . exists ( ) ) ) . toBe ( true )
380
+ expect ( checks . at ( 0 ) . element . checked ) . toBe ( true )
381
+ expect ( checks . at ( 1 ) . element . checked ) . toBe ( true )
382
+ expect ( checks . at ( 2 ) . element . checked ) . toBe ( true )
383
+
384
+ expect ( wrapper . emitted ( 'input' ) ) . not . toBeDefined ( )
385
+
386
+ // Set internal value to new array reference
387
+ wrapper . vm . localChecked = value . slice ( )
388
+ await waitNT ( wrapper . vm )
389
+
390
+ expect ( wrapper . vm . localChecked ) . toEqual ( value )
391
+ expect ( checks . wrappers . every ( c => c . find ( 'input[type=checkbox]' ) . exists ( ) ) ) . toBe ( true )
392
+ expect ( checks . at ( 0 ) . element . checked ) . toBe ( true )
393
+ expect ( checks . at ( 1 ) . element . checked ) . toBe ( true )
394
+ expect ( checks . at ( 2 ) . element . checked ) . toBe ( true )
395
+
396
+ expect ( wrapper . emitted ( 'input' ) ) . not . toBeDefined ( )
397
+
398
+ // Set internal value to new array (reversed order)
399
+ wrapper . vm . localChecked = value . slice ( ) . reverse ( )
400
+ await waitNT ( wrapper . vm )
401
+
402
+ expect ( wrapper . vm . localChecked ) . toEqual ( value . slice ( ) . reverse ( ) )
403
+ expect ( checks . wrappers . every ( c => c . find ( 'input[type=checkbox]' ) . exists ( ) ) ) . toBe ( true )
404
+ expect ( checks . at ( 0 ) . element . checked ) . toBe ( true )
405
+ expect ( checks . at ( 1 ) . element . checked ) . toBe ( true )
406
+ expect ( checks . at ( 2 ) . element . checked ) . toBe ( true )
407
+ expect ( wrapper . emitted ( 'input' ) ) . toBeDefined ( )
408
+ expect ( wrapper . emitted ( 'input' ) . length ) . toBe ( 1 )
409
+ expect ( wrapper . emitted ( 'input' ) [ 0 ] [ 0 ] ) . toEqual ( value . slice ( ) . reverse ( ) )
410
+
411
+ wrapper . destroy ( )
412
+ } )
413
+
366
414
it ( 'checkboxes reflect group checked v-model' , async ( ) => {
367
415
const wrapper = mount ( BFormCheckboxGroup , {
368
416
attachTo : createContainer ( ) ,
0 commit comments