@@ -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 ( ( ) => {
@@ -608,66 +612,77 @@ describe('MatButtonToggle without forms', () => {
608612 } ) ) ;
609613
610614 it ( 'should focus on underlying input element when focus() is called' , ( ) => {
611- let nativeRadioInput = buttonToggleDebugElement . query ( By . css ( 'input ' ) ) . nativeElement ;
612- expect ( document . activeElement ) . not . toBe ( nativeRadioInput ) ;
615+ let nativeButton = buttonToggleDebugElement . query ( By . css ( 'button ' ) ) . nativeElement ;
616+ expect ( document . activeElement ) . not . toBe ( nativeButton ) ;
613617
614618 buttonToggleInstance . focus ( ) ;
615619 fixture . detectChanges ( ) ;
616620
617- expect ( document . activeElement ) . toBe ( nativeRadioInput ) ;
621+ expect ( document . activeElement ) . toBe ( nativeButton ) ;
618622 } ) ;
619623
620624 it ( 'should not assign a name to the underlying input if one is not passed in' , ( ) => {
621- expect ( buttonToggleNativeElement . querySelector ( 'input' ) ! . getAttribute ( 'name' ) ) . toBeFalsy ( ) ;
625+ expect ( buttonToggleButtonElement . getAttribute ( 'name' ) ) . toBeFalsy ( ) ;
622626 } ) ;
623627
628+ it ( 'should have correct aria-pressed attribute' , ( ) => {
629+ expect ( buttonToggleButtonElement . getAttribute ( 'aria-pressed' ) )
630+ . toBe ( 'false' ) ;
631+
632+ buttonToggleLabelElement . click ( ) ;
633+
634+ fixture . detectChanges ( ) ;
635+
636+ expect ( buttonToggleButtonElement . getAttribute ( 'aria-pressed' ) )
637+ . toBe ( 'true' ) ;
638+ } )
624639 } ) ;
625640
626641 describe ( 'aria-label handling ' , ( ) => {
627642 it ( 'should not set the aria-label attribute if none is provided' , ( ) => {
628643 let fixture = TestBed . createComponent ( StandaloneButtonToggle ) ;
629644 let checkboxDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
630645 let checkboxNativeElement = checkboxDebugElement . nativeElement ;
631- let inputElement = checkboxNativeElement . querySelector ( 'input ' ) as HTMLInputElement ;
646+ let buttonElement = checkboxNativeElement . querySelector ( 'button ' ) as HTMLButtonElement ;
632647
633648 fixture . detectChanges ( ) ;
634- expect ( inputElement . hasAttribute ( 'aria-label' ) ) . toBe ( false ) ;
649+ expect ( buttonElement . hasAttribute ( 'aria-label' ) ) . toBe ( false ) ;
635650 } ) ;
636651
637652 it ( 'should use the provided aria-label' , ( ) => {
638653 let fixture = TestBed . createComponent ( ButtonToggleWithAriaLabel ) ;
639654 let checkboxDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
640655 let checkboxNativeElement = checkboxDebugElement . nativeElement ;
641- let inputElement = checkboxNativeElement . querySelector ( 'input ' ) as HTMLInputElement ;
656+ let buttonElement = checkboxNativeElement . querySelector ( 'button ' ) as HTMLButtonElement ;
642657
643658 fixture . detectChanges ( ) ;
644- expect ( inputElement . getAttribute ( 'aria-label' ) ) . toBe ( 'Super effective' ) ;
659+ expect ( buttonElement . getAttribute ( 'aria-label' ) ) . toBe ( 'Super effective' ) ;
645660 } ) ;
646661 } ) ;
647662
648663 describe ( 'with provided aria-labelledby ' , ( ) => {
649664 let checkboxDebugElement : DebugElement ;
650665 let checkboxNativeElement : HTMLElement ;
651- let inputElement : HTMLInputElement ;
666+ let buttonElement : HTMLButtonElement ;
652667
653668 it ( 'should use the provided aria-labelledby' , ( ) => {
654669 let fixture = TestBed . createComponent ( ButtonToggleWithAriaLabelledby ) ;
655670 checkboxDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
656671 checkboxNativeElement = checkboxDebugElement . nativeElement ;
657- inputElement = checkboxNativeElement . querySelector ( 'input ' ) as HTMLInputElement ;
672+ buttonElement = checkboxNativeElement . querySelector ( 'button ' ) as HTMLButtonElement ;
658673
659674 fixture . detectChanges ( ) ;
660- expect ( inputElement . getAttribute ( 'aria-labelledby' ) ) . toBe ( 'some-id' ) ;
675+ expect ( buttonElement . getAttribute ( 'aria-labelledby' ) ) . toBe ( 'some-id' ) ;
661676 } ) ;
662677
663678 it ( 'should not assign aria-labelledby if none is provided' , ( ) => {
664679 let fixture = TestBed . createComponent ( StandaloneButtonToggle ) ;
665680 checkboxDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
666681 checkboxNativeElement = checkboxDebugElement . nativeElement ;
667- inputElement = checkboxNativeElement . querySelector ( 'input ' ) as HTMLInputElement ;
682+ buttonElement = checkboxNativeElement . querySelector ( 'button ' ) as HTMLButtonElement ;
668683
669684 fixture . detectChanges ( ) ;
670- expect ( inputElement . getAttribute ( 'aria-labelledby' ) ) . toBe ( null ) ;
685+ expect ( buttonElement . getAttribute ( 'aria-labelledby' ) ) . toBe ( null ) ;
671686 } ) ;
672687 } ) ;
673688
0 commit comments