5
5
ComponentFixture ,
6
6
TestBed ,
7
7
} from '@angular/core/testing' ;
8
- import { NgControl , FormsModule } from '@angular/forms' ;
8
+ import { NgControl , FormsModule , ReactiveFormsModule , FormControl } from '@angular/forms' ;
9
9
import { Component , DebugElement } from '@angular/core' ;
10
10
import { By } from '@angular/platform-browser' ;
11
11
import {
@@ -20,12 +20,13 @@ describe('MdButtonToggle', () => {
20
20
21
21
beforeEach ( async ( ( ) => {
22
22
TestBed . configureTestingModule ( {
23
- imports : [ MdButtonToggleModule . forRoot ( ) , FormsModule ] ,
23
+ imports : [ MdButtonToggleModule . forRoot ( ) , FormsModule , ReactiveFormsModule ] ,
24
24
declarations : [
25
25
ButtonTogglesInsideButtonToggleGroup ,
26
26
ButtonToggleGroupWithNgModel ,
27
27
ButtonTogglesInsideButtonToggleGroupMultiple ,
28
28
ButtonToggleGroupWithInitialValue ,
29
+ ButtonToggleGroupWithFormControl ,
29
30
StandaloneButtonToggle ,
30
31
] ,
31
32
} ) ;
@@ -464,6 +465,52 @@ describe('MdButtonToggle', () => {
464
465
465
466
} ) ;
466
467
468
+ describe ( 'using FormControl' , ( ) => {
469
+ let fixture : ComponentFixture < ButtonToggleGroupWithFormControl > ;
470
+ let groupDebugElement : DebugElement ;
471
+ let groupInstance : MdButtonToggleGroup ;
472
+ let testComponent : ButtonToggleGroupWithFormControl ;
473
+
474
+ beforeEach ( async ( ( ) => {
475
+ fixture = TestBed . createComponent ( ButtonToggleGroupWithFormControl ) ;
476
+ fixture . detectChanges ( ) ;
477
+
478
+ testComponent = fixture . debugElement . componentInstance ;
479
+
480
+ groupDebugElement = fixture . debugElement . query ( By . directive ( MdButtonToggleGroup ) ) ;
481
+ groupInstance = groupDebugElement . injector . get ( MdButtonToggleGroup ) ;
482
+ } ) ) ;
483
+
484
+ it ( 'should toggle the disabled state' , ( ) => {
485
+ testComponent . control . disable ( ) ;
486
+
487
+ expect ( groupInstance . disabled ) . toBe ( true ) ;
488
+
489
+ testComponent . control . enable ( ) ;
490
+
491
+ expect ( groupInstance . disabled ) . toBe ( false ) ;
492
+ } ) ;
493
+
494
+ it ( 'should set the value' , ( ) => {
495
+ testComponent . control . setValue ( 'green' ) ;
496
+
497
+ expect ( groupInstance . value ) . toBe ( 'green' ) ;
498
+
499
+ testComponent . control . setValue ( 'red' ) ;
500
+
501
+ expect ( groupInstance . value ) . toBe ( 'red' ) ;
502
+ } ) ;
503
+
504
+ it ( 'should register the on change callback' , ( ) => {
505
+ let spy = jasmine . createSpy ( 'onChange callback' ) ;
506
+
507
+ testComponent . control . registerOnChange ( spy ) ;
508
+ testComponent . control . setValue ( 'blue' ) ;
509
+
510
+ expect ( spy ) . toHaveBeenCalled ( ) ;
511
+ } ) ;
512
+ } ) ;
513
+
467
514
describe ( 'as standalone' , ( ) => {
468
515
let fixture : ComponentFixture < StandaloneButtonToggle > ;
469
516
let buttonToggleDebugElement : DebugElement ;
@@ -598,3 +645,16 @@ class StandaloneButtonToggle { }
598
645
class ButtonToggleGroupWithInitialValue {
599
646
lastEvent : MdButtonToggleChange ;
600
647
}
648
+
649
+ @Component ( {
650
+ template : `
651
+ <md-button-toggle-group [formControl]="control">
652
+ <md-button-toggle value="red">Value Red</md-button-toggle>
653
+ <md-button-toggle value="green">Value Green</md-button-toggle>
654
+ <md-button-toggle value="blue">Value Blue</md-button-toggle>
655
+ </md-button-toggle-group>
656
+ `
657
+ } )
658
+ class ButtonToggleGroupWithFormControl {
659
+ control = new FormControl ( ) ;
660
+ }
0 commit comments