@@ -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' ] ) ;
@@ -568,7 +568,8 @@ describe('MatButtonToggle without forms', () => {
568568
569569 buttonToggleDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
570570 buttonToggleNativeElement = buttonToggleDebugElement . nativeElement ;
571- buttonToggleLabelElement = fixture . debugElement . query ( By . css ( 'label' ) ) . nativeElement ;
571+ buttonToggleLabelElement = fixture . debugElement
572+ . query ( By . css ( '.mat-button-toggle-label-content' ) ) . nativeElement ;
572573 buttonToggleInstance = buttonToggleDebugElement . componentInstance ;
573574 } ) ) ;
574575
@@ -607,66 +608,77 @@ describe('MatButtonToggle without forms', () => {
607608 } ) ) ;
608609
609610 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 ) ;
611+ let nativeButton = buttonToggleDebugElement . query ( By . css ( 'button ' ) ) . nativeElement ;
612+ expect ( document . activeElement ) . not . toBe ( nativeButton ) ;
612613
613614 buttonToggleInstance . focus ( ) ;
614615 fixture . detectChanges ( ) ;
615616
616- expect ( document . activeElement ) . toBe ( nativeRadioInput ) ;
617+ expect ( document . activeElement ) . toBe ( nativeButton ) ;
617618 } ) ;
618619
619620 it ( 'should not assign a name to the underlying input if one is not passed in' , ( ) => {
620- expect ( buttonToggleNativeElement . querySelector ( 'input ' ) ! . getAttribute ( 'name' ) ) . toBeFalsy ( ) ;
621+ expect ( buttonToggleNativeElement . querySelector ( 'button ' ) ! . getAttribute ( 'name' ) ) . toBeFalsy ( ) ;
621622 } ) ;
622623
624+ it ( 'should have correct aria-pressed attribute' , ( ) => {
625+ expect ( buttonToggleNativeElement . querySelector ( 'button' ) ! . getAttribute ( 'aria-pressed' ) )
626+ . toBe ( 'false' ) ;
627+
628+ buttonToggleLabelElement . click ( ) ;
629+
630+ fixture . detectChanges ( ) ;
631+
632+ expect ( buttonToggleNativeElement . querySelector ( 'button' ) ! . getAttribute ( 'aria-pressed' ) )
633+ . toBe ( 'true' ) ;
634+ } )
623635 } ) ;
624636
625637 describe ( 'aria-label handling ' , ( ) => {
626638 it ( 'should not set the aria-label attribute if none is provided' , ( ) => {
627639 let fixture = TestBed . createComponent ( StandaloneButtonToggle ) ;
628640 let checkboxDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
629641 let checkboxNativeElement = checkboxDebugElement . nativeElement ;
630- let inputElement = checkboxNativeElement . querySelector ( 'input ' ) as HTMLInputElement ;
642+ let buttonElement = checkboxNativeElement . querySelector ( 'button ' ) as HTMLButtonElement ;
631643
632644 fixture . detectChanges ( ) ;
633- expect ( inputElement . hasAttribute ( 'aria-label' ) ) . toBe ( false ) ;
645+ expect ( buttonElement . hasAttribute ( 'aria-label' ) ) . toBe ( false ) ;
634646 } ) ;
635647
636648 it ( 'should use the provided aria-label' , ( ) => {
637649 let fixture = TestBed . createComponent ( ButtonToggleWithAriaLabel ) ;
638650 let checkboxDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
639651 let checkboxNativeElement = checkboxDebugElement . nativeElement ;
640- let inputElement = checkboxNativeElement . querySelector ( 'input ' ) as HTMLInputElement ;
652+ let buttonElement = checkboxNativeElement . querySelector ( 'button ' ) as HTMLButtonElement ;
641653
642654 fixture . detectChanges ( ) ;
643- expect ( inputElement . getAttribute ( 'aria-label' ) ) . toBe ( 'Super effective' ) ;
655+ expect ( buttonElement . getAttribute ( 'aria-label' ) ) . toBe ( 'Super effective' ) ;
644656 } ) ;
645657 } ) ;
646658
647659 describe ( 'with provided aria-labelledby ' , ( ) => {
648660 let checkboxDebugElement : DebugElement ;
649661 let checkboxNativeElement : HTMLElement ;
650- let inputElement : HTMLInputElement ;
662+ let buttonElement : HTMLButtonElement ;
651663
652664 it ( 'should use the provided aria-labelledby' , ( ) => {
653665 let fixture = TestBed . createComponent ( ButtonToggleWithAriaLabelledby ) ;
654666 checkboxDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
655667 checkboxNativeElement = checkboxDebugElement . nativeElement ;
656- inputElement = checkboxNativeElement . querySelector ( 'input ' ) as HTMLInputElement ;
668+ buttonElement = checkboxNativeElement . querySelector ( 'button ' ) as HTMLButtonElement ;
657669
658670 fixture . detectChanges ( ) ;
659- expect ( inputElement . getAttribute ( 'aria-labelledby' ) ) . toBe ( 'some-id' ) ;
671+ expect ( buttonElement . getAttribute ( 'aria-labelledby' ) ) . toBe ( 'some-id' ) ;
660672 } ) ;
661673
662674 it ( 'should not assign aria-labelledby if none is provided' , ( ) => {
663675 let fixture = TestBed . createComponent ( StandaloneButtonToggle ) ;
664676 checkboxDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
665677 checkboxNativeElement = checkboxDebugElement . nativeElement ;
666- inputElement = checkboxNativeElement . querySelector ( 'input ' ) as HTMLInputElement ;
678+ buttonElement = checkboxNativeElement . querySelector ( 'button ' ) as HTMLButtonElement ;
667679
668680 fixture . detectChanges ( ) ;
669- expect ( inputElement . getAttribute ( 'aria-labelledby' ) ) . toBe ( null ) ;
681+ expect ( buttonElement . getAttribute ( 'aria-labelledby' ) ) . toBe ( null ) ;
670682 } ) ;
671683 } ) ;
672684
0 commit comments