@@ -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 } ) ) ;
@@ -244,7 +244,7 @@ describe('MatButtonToggle without forms', () => {
244244 buttonToggleNativeElements = buttonToggleDebugElements
245245 . map ( debugEl => debugEl . nativeElement ) ;
246246
247- buttonToggleLabelElements = fixture . debugElement . queryAll ( By . css ( 'label ' ) )
247+ buttonToggleLabelElements = fixture . debugElement . queryAll ( By . css ( 'button ' ) )
248248 . map ( debugEl => debugEl . nativeElement ) ;
249249
250250 buttonToggleInstances = buttonToggleDebugElements . map ( debugEl => debugEl . componentInstance ) ;
@@ -339,7 +339,7 @@ describe('MatButtonToggle without forms', () => {
339339 buttonToggleLabelElements [ 0 ] . click ( ) ;
340340 fixture . detectChanges ( ) ;
341341 tick ( ) ;
342- expect ( changeSpy ) . toHaveBeenCalled ( ) ;
342+ expect ( changeSpy ) . toHaveBeenCalledTimes ( 1 ) ;
343343
344344 buttonToggleLabelElements [ 0 ] . click ( ) ;
345345 fixture . detectChanges ( ) ;
@@ -447,7 +447,7 @@ describe('MatButtonToggle without forms', () => {
447447 buttonToggleDebugElements = fixture . debugElement . queryAll ( By . directive ( MatButtonToggle ) ) ;
448448 buttonToggleNativeElements = buttonToggleDebugElements
449449 . map ( debugEl => debugEl . nativeElement ) ;
450- buttonToggleLabelElements = fixture . debugElement . queryAll ( By . css ( 'label ' ) )
450+ buttonToggleLabelElements = fixture . debugElement . queryAll ( By . css ( 'button ' ) )
451451 . map ( debugEl => debugEl . nativeElement ) ;
452452 buttonToggleInstances = buttonToggleDebugElements . map ( debugEl => debugEl . componentInstance ) ;
453453 } ) ) ;
@@ -463,7 +463,7 @@ describe('MatButtonToggle without forms', () => {
463463 it ( 'should check a button toggle when clicked' , ( ) => {
464464 expect ( buttonToggleInstances . every ( buttonToggle => ! buttonToggle . checked ) ) . toBe ( true ) ;
465465
466- let nativeCheckboxLabel = buttonToggleDebugElements [ 0 ] . query ( By . css ( 'label ' ) ) . nativeElement ;
466+ let nativeCheckboxLabel = buttonToggleDebugElements [ 0 ] . query ( By . css ( 'button ' ) ) . nativeElement ;
467467
468468 nativeCheckboxLabel . click ( ) ;
469469
@@ -487,9 +487,9 @@ describe('MatButtonToggle without forms', () => {
487487 } ) ;
488488
489489 it ( 'should check a button toggle upon interaction with underlying native checkbox' , ( ) => {
490- let nativeCheckboxInput = buttonToggleDebugElements [ 0 ] . query ( By . css ( 'input ' ) ) . nativeElement ;
490+ let nativeCheckboxButton = buttonToggleDebugElements [ 0 ] . query ( By . css ( 'button ' ) ) . nativeElement ;
491491
492- nativeCheckboxInput . click ( ) ;
492+ nativeCheckboxButton . click ( ) ;
493493 fixture . detectChanges ( ) ;
494494
495495 expect ( groupInstance . value ) . toEqual ( [ 'eggs' ] ) ;
@@ -562,15 +562,19 @@ describe('MatButtonToggle without forms', () => {
562562 let buttonToggleNativeElement : HTMLElement ;
563563 let buttonToggleLabelElement : HTMLLabelElement ;
564564 let buttonToggleInstance : MatButtonToggle ;
565+ let buttonToggleButtonElement : HTMLButtonElement ;
565566
566567 beforeEach ( fakeAsync ( ( ) => {
567568 fixture = TestBed . createComponent ( StandaloneButtonToggle ) ;
568569 fixture . detectChanges ( ) ;
569570
570571 buttonToggleDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
571572 buttonToggleNativeElement = buttonToggleDebugElement . nativeElement ;
572- buttonToggleLabelElement = fixture . debugElement . query ( By . css ( 'label' ) ) . nativeElement ;
573+ buttonToggleLabelElement = fixture . debugElement
574+ . query ( By . css ( '.mat-button-toggle-label-content' ) ) . nativeElement ;
573575 buttonToggleInstance = buttonToggleDebugElement . componentInstance ;
576+ buttonToggleButtonElement =
577+ buttonToggleNativeElement . querySelector ( 'button' ) ! as HTMLButtonElement ;
574578 } ) ) ;
575579
576580 it ( 'should toggle when clicked' , fakeAsync ( ( ) => {
@@ -609,66 +613,77 @@ describe('MatButtonToggle without forms', () => {
609613 } ) ) ;
610614
611615 it ( 'should focus on underlying input element when focus() is called' , ( ) => {
612- let nativeRadioInput = buttonToggleDebugElement . query ( By . css ( 'input ' ) ) . nativeElement ;
613- expect ( document . activeElement ) . not . toBe ( nativeRadioInput ) ;
616+ let nativeButton = buttonToggleDebugElement . query ( By . css ( 'button ' ) ) . nativeElement ;
617+ expect ( document . activeElement ) . not . toBe ( nativeButton ) ;
614618
615619 buttonToggleInstance . focus ( ) ;
616620 fixture . detectChanges ( ) ;
617621
618- expect ( document . activeElement ) . toBe ( nativeRadioInput ) ;
622+ expect ( document . activeElement ) . toBe ( nativeButton ) ;
619623 } ) ;
620624
621625 it ( 'should not assign a name to the underlying input if one is not passed in' , ( ) => {
622- expect ( buttonToggleNativeElement . querySelector ( 'input' ) ! . getAttribute ( 'name' ) ) . toBeFalsy ( ) ;
626+ expect ( buttonToggleButtonElement . getAttribute ( 'name' ) ) . toBeFalsy ( ) ;
623627 } ) ;
624628
629+ it ( 'should have correct aria-pressed attribute' , ( ) => {
630+ expect ( buttonToggleButtonElement . getAttribute ( 'aria-pressed' ) )
631+ . toBe ( 'false' ) ;
632+
633+ buttonToggleLabelElement . click ( ) ;
634+
635+ fixture . detectChanges ( ) ;
636+
637+ expect ( buttonToggleButtonElement . getAttribute ( 'aria-pressed' ) )
638+ . toBe ( 'true' ) ;
639+ } ) ;
625640 } ) ;
626641
627642 describe ( 'aria-label handling ' , ( ) => {
628643 it ( 'should not set the aria-label attribute if none is provided' , ( ) => {
629644 let fixture = TestBed . createComponent ( StandaloneButtonToggle ) ;
630645 let checkboxDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
631646 let checkboxNativeElement = checkboxDebugElement . nativeElement ;
632- let inputElement = checkboxNativeElement . querySelector ( 'input ' ) as HTMLInputElement ;
647+ let buttonElement = checkboxNativeElement . querySelector ( 'button ' ) as HTMLButtonElement ;
633648
634649 fixture . detectChanges ( ) ;
635- expect ( inputElement . hasAttribute ( 'aria-label' ) ) . toBe ( false ) ;
650+ expect ( buttonElement . hasAttribute ( 'aria-label' ) ) . toBe ( false ) ;
636651 } ) ;
637652
638653 it ( 'should use the provided aria-label' , ( ) => {
639654 let fixture = TestBed . createComponent ( ButtonToggleWithAriaLabel ) ;
640655 let checkboxDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
641656 let checkboxNativeElement = checkboxDebugElement . nativeElement ;
642- let inputElement = checkboxNativeElement . querySelector ( 'input ' ) as HTMLInputElement ;
657+ let buttonElement = checkboxNativeElement . querySelector ( 'button ' ) as HTMLButtonElement ;
643658
644659 fixture . detectChanges ( ) ;
645- expect ( inputElement . getAttribute ( 'aria-label' ) ) . toBe ( 'Super effective' ) ;
660+ expect ( buttonElement . getAttribute ( 'aria-label' ) ) . toBe ( 'Super effective' ) ;
646661 } ) ;
647662 } ) ;
648663
649664 describe ( 'with provided aria-labelledby ' , ( ) => {
650665 let checkboxDebugElement : DebugElement ;
651666 let checkboxNativeElement : HTMLElement ;
652- let inputElement : HTMLInputElement ;
667+ let buttonElement : HTMLButtonElement ;
653668
654669 it ( 'should use the provided aria-labelledby' , ( ) => {
655670 let fixture = TestBed . createComponent ( ButtonToggleWithAriaLabelledby ) ;
656671 checkboxDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
657672 checkboxNativeElement = checkboxDebugElement . nativeElement ;
658- inputElement = checkboxNativeElement . querySelector ( 'input ' ) as HTMLInputElement ;
673+ buttonElement = checkboxNativeElement . querySelector ( 'button ' ) as HTMLButtonElement ;
659674
660675 fixture . detectChanges ( ) ;
661- expect ( inputElement . getAttribute ( 'aria-labelledby' ) ) . toBe ( 'some-id' ) ;
676+ expect ( buttonElement . getAttribute ( 'aria-labelledby' ) ) . toBe ( 'some-id' ) ;
662677 } ) ;
663678
664679 it ( 'should not assign aria-labelledby if none is provided' , ( ) => {
665680 let fixture = TestBed . createComponent ( StandaloneButtonToggle ) ;
666681 checkboxDebugElement = fixture . debugElement . query ( By . directive ( MatButtonToggle ) ) ;
667682 checkboxNativeElement = checkboxDebugElement . nativeElement ;
668- inputElement = checkboxNativeElement . querySelector ( 'input ' ) as HTMLInputElement ;
683+ buttonElement = checkboxNativeElement . querySelector ( 'button ' ) as HTMLButtonElement ;
669684
670685 fixture . detectChanges ( ) ;
671- expect ( inputElement . getAttribute ( 'aria-labelledby' ) ) . toBe ( null ) ;
686+ expect ( buttonElement . getAttribute ( 'aria-labelledby' ) ) . toBe ( null ) ;
672687 } ) ;
673688 } ) ;
674689
0 commit comments