From 6f355998ef63b93cebcc81473fd7c27920b87cb7 Mon Sep 17 00:00:00 2001 From: Wagner Maciel Date: Thu, 1 Dec 2022 19:22:45 +0000 Subject: [PATCH] test(material/button-toggle): add disabled harness filter (#26139) * test(material/button-toggle): add disabled harness filter * fixup! test(material/button-toggle): add disabled harness filter --- .../button-toggle-group-harness-filters.ts | 5 ++++- .../testing/button-toggle-group-harness.ts | 8 +++++++- .../testing/button-toggle-group-shared.spec.ts | 18 ++++++++++++++++++ .../testing/button-toggle-harness-filters.ts | 2 ++ .../testing/button-toggle-harness.ts | 5 ++++- .../testing/button-toggle-shared.spec.ts | 11 +++++++++++ .../material/button-toggle-testing.md | 2 ++ 7 files changed, 48 insertions(+), 3 deletions(-) diff --git a/src/material/button-toggle/testing/button-toggle-group-harness-filters.ts b/src/material/button-toggle/testing/button-toggle-group-harness-filters.ts index f01ea7b230bc..e1128b443e7d 100644 --- a/src/material/button-toggle/testing/button-toggle-group-harness-filters.ts +++ b/src/material/button-toggle/testing/button-toggle-group-harness-filters.ts @@ -9,4 +9,7 @@ import {BaseHarnessFilters} from '@angular/cdk/testing'; /** Criteria that can be used to filter a list of `MatButtonToggleGroupHarness` instances. */ -export interface ButtonToggleGroupHarnessFilters extends BaseHarnessFilters {} +export interface ButtonToggleGroupHarnessFilters extends BaseHarnessFilters { + /** Only find instances which match the given disabled state. */ + disabled?: boolean; +} diff --git a/src/material/button-toggle/testing/button-toggle-group-harness.ts b/src/material/button-toggle/testing/button-toggle-group-harness.ts index d5afb008abc9..c4ef86c99e2d 100644 --- a/src/material/button-toggle/testing/button-toggle-group-harness.ts +++ b/src/material/button-toggle/testing/button-toggle-group-harness.ts @@ -26,7 +26,13 @@ export class MatButtonToggleGroupHarness extends ComponentHarness { static with( options: ButtonToggleGroupHarnessFilters = {}, ): HarnessPredicate { - return new HarnessPredicate(MatButtonToggleGroupHarness, options); + return new HarnessPredicate(MatButtonToggleGroupHarness, options).addOption( + 'disabled', + options.disabled, + async (harness, disabled) => { + return (await harness.isDisabled()) === disabled; + }, + ); } /** diff --git a/src/material/button-toggle/testing/button-toggle-group-shared.spec.ts b/src/material/button-toggle/testing/button-toggle-group-shared.spec.ts index e5946f4e5928..ac423d83e902 100644 --- a/src/material/button-toggle/testing/button-toggle-group-shared.spec.ts +++ b/src/material/button-toggle/testing/button-toggle-group-shared.spec.ts @@ -42,6 +42,24 @@ export function runHarnessTests( expect(await group.isDisabled()).toBe(true); }); + it('should filter by whether the group is disabled', async () => { + let enabledGroups = await loader.getAllHarnesses( + buttonToggleGroupHarness.with({disabled: false}), + ); + let disabledGroups = await loader.getAllHarnesses( + buttonToggleGroupHarness.with({disabled: true}), + ); + expect(enabledGroups.length).toBe(1); + expect(disabledGroups.length).toBe(0); + + fixture.componentInstance.disabled = true; + + enabledGroups = await loader.getAllHarnesses(buttonToggleGroupHarness.with({disabled: false})); + disabledGroups = await loader.getAllHarnesses(buttonToggleGroupHarness.with({disabled: true})); + expect(enabledGroups.length).toBe(0); + expect(disabledGroups.length).toBe(1); + }); + it('should get whether the group is vertical', async () => { const group = await loader.getHarness(buttonToggleGroupHarness); expect(await group.isVertical()).toBe(false); diff --git a/src/material/button-toggle/testing/button-toggle-harness-filters.ts b/src/material/button-toggle/testing/button-toggle-harness-filters.ts index 84d110bfee34..923ff24044ed 100644 --- a/src/material/button-toggle/testing/button-toggle-harness-filters.ts +++ b/src/material/button-toggle/testing/button-toggle-harness-filters.ts @@ -16,4 +16,6 @@ export interface ButtonToggleHarnessFilters extends BaseHarnessFilters { name?: string | RegExp; /** Only find instances that are checked. */ checked?: boolean; + /** Only find instances which match the given disabled state. */ + disabled?: boolean; } diff --git a/src/material/button-toggle/testing/button-toggle-harness.ts b/src/material/button-toggle/testing/button-toggle-harness.ts index b88e44a7925f..5d69fa203381 100644 --- a/src/material/button-toggle/testing/button-toggle-harness.ts +++ b/src/material/button-toggle/testing/button-toggle-harness.ts @@ -37,7 +37,10 @@ export class MatButtonToggleHarness extends ComponentHarness { 'checked', options.checked, async (harness, checked) => (await harness.isChecked()) === checked, - ); + ) + .addOption('disabled', options.disabled, async (harness, disabled) => { + return (await harness.isDisabled()) === disabled; + }); } /** Gets a boolean promise indicating if the button toggle is checked. */ diff --git a/src/material/button-toggle/testing/button-toggle-shared.spec.ts b/src/material/button-toggle/testing/button-toggle-shared.spec.ts index eba2f3c348da..acbddbaaa93c 100644 --- a/src/material/button-toggle/testing/button-toggle-shared.spec.ts +++ b/src/material/button-toggle/testing/button-toggle-shared.spec.ts @@ -47,6 +47,17 @@ export function runHarnessTests( expect(await uncheckedToggle.isChecked()).toBe(false); }); + it('should filter by whether the group is disabled', async () => { + const enabledToggles = await loader.getAllHarnesses( + buttonToggleHarness.with({disabled: false}), + ); + const disabledToggles = await loader.getAllHarnesses( + buttonToggleHarness.with({disabled: true}), + ); + expect(enabledToggles.length).toBe(1); + expect(disabledToggles.length).toBe(1); + }); + it('should get the toggle disabled state', async () => { const [enabledToggle, disabledToggle] = await loader.getAllHarnesses(buttonToggleHarness); expect(await enabledToggle.isDisabled()).toBe(false); diff --git a/tools/public_api_guard/material/button-toggle-testing.md b/tools/public_api_guard/material/button-toggle-testing.md index f134c92db6af..bec81e611211 100644 --- a/tools/public_api_guard/material/button-toggle-testing.md +++ b/tools/public_api_guard/material/button-toggle-testing.md @@ -11,11 +11,13 @@ import { MatButtonToggleAppearance } from '@angular/material/button-toggle'; // @public export interface ButtonToggleGroupHarnessFilters extends BaseHarnessFilters { + disabled?: boolean; } // @public export interface ButtonToggleHarnessFilters extends BaseHarnessFilters { checked?: boolean; + disabled?: boolean; name?: string | RegExp; text?: string | RegExp; }