@@ -41,11 +41,13 @@ describe('MdButtonToggle', () => {
4141 } ) ) ;
4242
4343 describe ( 'inside of an exclusive selection group' , ( ) => {
44+
4445 let fixture : ComponentFixture < ButtonTogglesInsideButtonToggleGroup > ;
4546 let groupDebugElement : DebugElement ;
4647 let groupNativeElement : HTMLElement ;
4748 let buttonToggleDebugElements : DebugElement [ ] ;
4849 let buttonToggleNativeElements : HTMLElement [ ] ;
50+ let buttonToggleLabelElements : HTMLLabelElement [ ] ;
4951 let groupInstance : MdButtonToggleGroup ;
5052 let buttonToggleInstances : MdButtonToggle [ ] ;
5153 let testComponent : ButtonTogglesInsideButtonToggleGroup ;
@@ -62,8 +64,13 @@ describe('MdButtonToggle', () => {
6264 groupInstance = groupDebugElement . injector . get ( MdButtonToggleGroup ) ;
6365
6466 buttonToggleDebugElements = fixture . debugElement . queryAll ( By . directive ( MdButtonToggle ) ) ;
65- buttonToggleNativeElements =
66- buttonToggleDebugElements . map ( debugEl => debugEl . nativeElement ) ;
67+
68+ buttonToggleNativeElements = buttonToggleDebugElements
69+ . map ( debugEl => debugEl . nativeElement ) ;
70+
71+ buttonToggleLabelElements = fixture . debugElement . queryAll ( By . css ( 'label' ) )
72+ . map ( debugEl => debugEl . nativeElement ) ;
73+
6774 buttonToggleInstances = buttonToggleDebugElements . map ( debugEl => debugEl . componentInstance ) ;
6875 } ) ;
6976 } ) ) ;
@@ -133,15 +140,19 @@ describe('MdButtonToggle', () => {
133140 let changeSpy = jasmine . createSpy ( 'button-toggle change listener' ) ;
134141 buttonToggleInstances [ 0 ] . change . subscribe ( changeSpy ) ;
135142
136- buttonToggleInstances [ 0 ] . checked = true ;
143+
144+ buttonToggleLabelElements [ 0 ] . click ( ) ;
137145 fixture . detectChanges ( ) ;
138146 tick ( ) ;
139147 expect ( changeSpy ) . toHaveBeenCalled ( ) ;
140148
141- buttonToggleInstances [ 0 ] . checked = false ;
149+ buttonToggleLabelElements [ 0 ] . click ( ) ;
142150 fixture . detectChanges ( ) ;
143151 tick ( ) ;
144- expect ( changeSpy ) . toHaveBeenCalledTimes ( 2 ) ;
152+
153+ // The default browser behavior is to not emit a change event, when the value was set
154+ // to false. That's why the change event was only triggered once.
155+ expect ( changeSpy ) . toHaveBeenCalledTimes ( 1 ) ;
145156 } ) ) ;
146157
147158 it ( 'should emit a change event from the button toggle group' , fakeAsync ( ( ) => {
0 commit comments