@@ -93,7 +93,7 @@ describe('MatButtonToggle with forms', () => {
9393 buttonToggleDebugElements = fixture . debugElement . queryAll ( By . directive ( MatButtonToggle ) ) ;
9494 buttonToggleInstances = buttonToggleDebugElements . map ( debugEl => debugEl . componentInstance ) ;
9595 buttonToggleLabels = buttonToggleDebugElements . map (
96- debugEl => debugEl . query ( By . css ( 'label ' ) ) . nativeElement ) ;
96+ debugEl => debugEl . query ( By . css ( 'button ' ) ) . nativeElement ) ;
9797
9898 fixture . detectChanges ( ) ;
9999 } ) ) ;
@@ -243,7 +243,7 @@ describe('MatButtonToggle without forms', () => {
243243 buttonToggleNativeElements = buttonToggleDebugElements
244244 . map ( debugEl => debugEl . nativeElement ) ;
245245
246- buttonToggleLabelElements = fixture . debugElement . queryAll ( By . css ( 'label ' ) )
246+ buttonToggleLabelElements = fixture . debugElement . queryAll ( By . css ( 'button ' ) )
247247 . map ( debugEl => debugEl . nativeElement ) ;
248248
249249 buttonToggleInstances = buttonToggleDebugElements . map ( debugEl => debugEl . componentInstance ) ;
@@ -338,7 +338,7 @@ describe('MatButtonToggle without forms', () => {
338338 buttonToggleLabelElements [ 0 ] . click ( ) ;
339339 fixture . detectChanges ( ) ;
340340 tick ( ) ;
341- expect ( changeSpy ) . toHaveBeenCalled ( ) ;
341+ expect ( changeSpy ) . toHaveBeenCalledTimes ( 1 ) ;
342342
343343 buttonToggleLabelElements [ 0 ] . click ( ) ;
344344 fixture . detectChanges ( ) ;
@@ -446,7 +446,7 @@ describe('MatButtonToggle without forms', () => {
446446 buttonToggleDebugElements = fixture . debugElement . queryAll ( By . directive ( MatButtonToggle ) ) ;
447447 buttonToggleNativeElements = buttonToggleDebugElements
448448 . map ( debugEl => debugEl . nativeElement ) ;
449- buttonToggleLabelElements = fixture . debugElement . queryAll ( By . css ( 'label ' ) )
449+ buttonToggleLabelElements = fixture . debugElement . queryAll ( By . css ( 'button ' ) )
450450 . map ( debugEl => debugEl . nativeElement ) ;
451451 buttonToggleInstances = buttonToggleDebugElements . map ( debugEl => debugEl . componentInstance ) ;
452452 } ) ) ;
@@ -462,7 +462,7 @@ describe('MatButtonToggle without forms', () => {
462462 it ( 'should check a button toggle when clicked' , ( ) => {
463463 expect ( buttonToggleInstances . every ( buttonToggle => ! buttonToggle . checked ) ) . toBe ( true ) ;
464464
465- let nativeCheckboxLabel = buttonToggleDebugElements [ 0 ] . query ( By . css ( 'label ' ) ) . nativeElement ;
465+ let nativeCheckboxLabel = buttonToggleDebugElements [ 0 ] . query ( By . css ( 'button ' ) ) . nativeElement ;
466466
467467 nativeCheckboxLabel . click ( ) ;
468468
@@ -486,9 +486,9 @@ describe('MatButtonToggle without forms', () => {
486486 } ) ;
487487
488488 it ( 'should check a button toggle upon interaction with underlying native checkbox' , ( ) => {
489- let nativeCheckboxInput = buttonToggleDebugElements [ 0 ] . query ( By . css ( 'input ' ) ) . nativeElement ;
489+ let nativeCheckboxButton = buttonToggleDebugElements [ 0 ] . query ( By . css ( 'button ' ) ) . nativeElement ;
490490
491- nativeCheckboxInput . click ( ) ;
491+ nativeCheckboxButton . click ( ) ;
492492 fixture . detectChanges ( ) ;
493493
494494 expect ( groupInstance . value ) . toEqual ( [ 'eggs' ] ) ;
@@ -561,15 +561,19 @@ describe('MatButtonToggle without forms', () => {
561561 let buttonToggleNativeElement : HTMLElement ;
562562 let buttonToggleLabelElement : HTMLLabelElement ;
563563 let buttonToggleInstance : MatButtonToggle ;
564+ let buttonToggleButtonElement : HTMLButtonElement ;
564565
565566 beforeEach ( fakeAsync ( ( ) => {
566567 fixture = TestBed . createComponent ( StandaloneButtonToggle ) ;
567568 fixture . detectChanges ( ) ;
568569
569570 buttonToggleDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
570571 buttonToggleNativeElement = buttonToggleDebugElement . nativeElement ;
571- buttonToggleLabelElement = fixture . debugElement . query ( By . css ( 'label' ) ) . nativeElement ;
572+ buttonToggleLabelElement = fixture . debugElement
573+ . query ( By . css ( '.mat-button-toggle-label-content' ) ) . nativeElement ;
572574 buttonToggleInstance = buttonToggleDebugElement . componentInstance ;
575+ buttonToggleButtonElement =
576+ buttonToggleNativeElement . querySelector ( 'button' ) ! as HTMLButtonElement ;
573577 } ) ) ;
574578
575579 it ( 'should toggle when clicked' , fakeAsync ( ( ) => {
@@ -607,66 +611,77 @@ describe('MatButtonToggle without forms', () => {
607611 } ) ) ;
608612
609613 it ( 'should focus on underlying input element when focus() is called' , ( ) => {
610- let nativeRadioInput = buttonToggleDebugElement . query ( By . css ( 'input ' ) ) . nativeElement ;
611- expect ( document . activeElement ) . not . toBe ( nativeRadioInput ) ;
614+ let nativeButton = buttonToggleDebugElement . query ( By . css ( 'button ' ) ) . nativeElement ;
615+ expect ( document . activeElement ) . not . toBe ( nativeButton ) ;
612616
613617 buttonToggleInstance . focus ( ) ;
614618 fixture . detectChanges ( ) ;
615619
616- expect ( document . activeElement ) . toBe ( nativeRadioInput ) ;
620+ expect ( document . activeElement ) . toBe ( nativeButton ) ;
617621 } ) ;
618622
619623 it ( 'should not assign a name to the underlying input if one is not passed in' , ( ) => {
620- expect ( buttonToggleNativeElement . querySelector ( 'input' ) ! . getAttribute ( 'name' ) ) . toBeFalsy ( ) ;
624+ expect ( buttonToggleButtonElement . getAttribute ( 'name' ) ) . toBeFalsy ( ) ;
621625 } ) ;
622626
627+ it ( 'should have correct aria-pressed attribute' , ( ) => {
628+ expect ( buttonToggleButtonElement . getAttribute ( 'aria-pressed' ) )
629+ . toBe ( 'false' ) ;
630+
631+ buttonToggleLabelElement . click ( ) ;
632+
633+ fixture . detectChanges ( ) ;
634+
635+ expect ( buttonToggleButtonElement . getAttribute ( 'aria-pressed' ) )
636+ . toBe ( 'true' ) ;
637+ } )
623638 } ) ;
624639
625640 describe ( 'aria-label handling ' , ( ) => {
626641 it ( 'should not set the aria-label attribute if none is provided' , ( ) => {
627642 let fixture = TestBed . createComponent ( StandaloneButtonToggle ) ;
628643 let checkboxDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
629644 let checkboxNativeElement = checkboxDebugElement . nativeElement ;
630- let inputElement = checkboxNativeElement . querySelector ( 'input ' ) as HTMLInputElement ;
645+ let buttonElement = checkboxNativeElement . querySelector ( 'button ' ) as HTMLButtonElement ;
631646
632647 fixture . detectChanges ( ) ;
633- expect ( inputElement . hasAttribute ( 'aria-label' ) ) . toBe ( false ) ;
648+ expect ( buttonElement . hasAttribute ( 'aria-label' ) ) . toBe ( false ) ;
634649 } ) ;
635650
636651 it ( 'should use the provided aria-label' , ( ) => {
637652 let fixture = TestBed . createComponent ( ButtonToggleWithAriaLabel ) ;
638653 let checkboxDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
639654 let checkboxNativeElement = checkboxDebugElement . nativeElement ;
640- let inputElement = checkboxNativeElement . querySelector ( 'input ' ) as HTMLInputElement ;
655+ let buttonElement = checkboxNativeElement . querySelector ( 'button ' ) as HTMLButtonElement ;
641656
642657 fixture . detectChanges ( ) ;
643- expect ( inputElement . getAttribute ( 'aria-label' ) ) . toBe ( 'Super effective' ) ;
658+ expect ( buttonElement . getAttribute ( 'aria-label' ) ) . toBe ( 'Super effective' ) ;
644659 } ) ;
645660 } ) ;
646661
647662 describe ( 'with provided aria-labelledby ' , ( ) => {
648663 let checkboxDebugElement : DebugElement ;
649664 let checkboxNativeElement : HTMLElement ;
650- let inputElement : HTMLInputElement ;
665+ let buttonElement : HTMLButtonElement ;
651666
652667 it ( 'should use the provided aria-labelledby' , ( ) => {
653668 let fixture = TestBed . createComponent ( ButtonToggleWithAriaLabelledby ) ;
654669 checkboxDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
655670 checkboxNativeElement = checkboxDebugElement . nativeElement ;
656- inputElement = checkboxNativeElement . querySelector ( 'input ' ) as HTMLInputElement ;
671+ buttonElement = checkboxNativeElement . querySelector ( 'button ' ) as HTMLButtonElement ;
657672
658673 fixture . detectChanges ( ) ;
659- expect ( inputElement . getAttribute ( 'aria-labelledby' ) ) . toBe ( 'some-id' ) ;
674+ expect ( buttonElement . getAttribute ( 'aria-labelledby' ) ) . toBe ( 'some-id' ) ;
660675 } ) ;
661676
662677 it ( 'should not assign aria-labelledby if none is provided' , ( ) => {
663678 let fixture = TestBed . createComponent ( StandaloneButtonToggle ) ;
664679 checkboxDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
665680 checkboxNativeElement = checkboxDebugElement . nativeElement ;
666- inputElement = checkboxNativeElement . querySelector ( 'input ' ) as HTMLInputElement ;
681+ buttonElement = checkboxNativeElement . querySelector ( 'button ' ) as HTMLButtonElement ;
667682
668683 fixture . detectChanges ( ) ;
669- expect ( inputElement . getAttribute ( 'aria-labelledby' ) ) . toBe ( null ) ;
684+ expect ( buttonElement . getAttribute ( 'aria-labelledby' ) ) . toBe ( null ) ;
670685 } ) ;
671686 } ) ;
672687
0 commit comments