Skip to content

Commit 61ea0f9

Browse files
committed
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 (cherry picked from commit 6f35599)
1 parent 8252d07 commit 61ea0f9

File tree

7 files changed

+48
-3
lines changed

7 files changed

+48
-3
lines changed

src/material/button-toggle/testing/button-toggle-group-harness-filters.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,7 @@
99
import {BaseHarnessFilters} from '@angular/cdk/testing';
1010

1111
/** Criteria that can be used to filter a list of `MatButtonToggleGroupHarness` instances. */
12-
export interface ButtonToggleGroupHarnessFilters extends BaseHarnessFilters {}
12+
export interface ButtonToggleGroupHarnessFilters extends BaseHarnessFilters {
13+
/** Only find instances which match the given disabled state. */
14+
disabled?: boolean;
15+
}

src/material/button-toggle/testing/button-toggle-group-harness.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,13 @@ export class MatButtonToggleGroupHarness extends ComponentHarness {
2626
static with(
2727
options: ButtonToggleGroupHarnessFilters = {},
2828
): HarnessPredicate<MatButtonToggleGroupHarness> {
29-
return new HarnessPredicate(MatButtonToggleGroupHarness, options);
29+
return new HarnessPredicate(MatButtonToggleGroupHarness, options).addOption(
30+
'disabled',
31+
options.disabled,
32+
async (harness, disabled) => {
33+
return (await harness.isDisabled()) === disabled;
34+
},
35+
);
3036
}
3137

3238
/**

src/material/button-toggle/testing/button-toggle-group-shared.spec.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,24 @@ export function runHarnessTests(
4242
expect(await group.isDisabled()).toBe(true);
4343
});
4444

45+
it('should filter by whether the group is disabled', async () => {
46+
let enabledGroups = await loader.getAllHarnesses(
47+
buttonToggleGroupHarness.with({disabled: false}),
48+
);
49+
let disabledGroups = await loader.getAllHarnesses(
50+
buttonToggleGroupHarness.with({disabled: true}),
51+
);
52+
expect(enabledGroups.length).toBe(1);
53+
expect(disabledGroups.length).toBe(0);
54+
55+
fixture.componentInstance.disabled = true;
56+
57+
enabledGroups = await loader.getAllHarnesses(buttonToggleGroupHarness.with({disabled: false}));
58+
disabledGroups = await loader.getAllHarnesses(buttonToggleGroupHarness.with({disabled: true}));
59+
expect(enabledGroups.length).toBe(0);
60+
expect(disabledGroups.length).toBe(1);
61+
});
62+
4563
it('should get whether the group is vertical', async () => {
4664
const group = await loader.getHarness(buttonToggleGroupHarness);
4765
expect(await group.isVertical()).toBe(false);

src/material/button-toggle/testing/button-toggle-harness-filters.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@ export interface ButtonToggleHarnessFilters extends BaseHarnessFilters {
1616
name?: string | RegExp;
1717
/** Only find instances that are checked. */
1818
checked?: boolean;
19+
/** Only find instances which match the given disabled state. */
20+
disabled?: boolean;
1921
}

src/material/button-toggle/testing/button-toggle-harness.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@ export class MatButtonToggleHarness extends ComponentHarness {
3737
'checked',
3838
options.checked,
3939
async (harness, checked) => (await harness.isChecked()) === checked,
40-
);
40+
)
41+
.addOption('disabled', options.disabled, async (harness, disabled) => {
42+
return (await harness.isDisabled()) === disabled;
43+
});
4144
}
4245

4346
/** Gets a boolean promise indicating if the button toggle is checked. */

src/material/button-toggle/testing/button-toggle-shared.spec.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,17 @@ export function runHarnessTests(
4747
expect(await uncheckedToggle.isChecked()).toBe(false);
4848
});
4949

50+
it('should filter by whether the group is disabled', async () => {
51+
const enabledToggles = await loader.getAllHarnesses(
52+
buttonToggleHarness.with({disabled: false}),
53+
);
54+
const disabledToggles = await loader.getAllHarnesses(
55+
buttonToggleHarness.with({disabled: true}),
56+
);
57+
expect(enabledToggles.length).toBe(1);
58+
expect(disabledToggles.length).toBe(1);
59+
});
60+
5061
it('should get the toggle disabled state', async () => {
5162
const [enabledToggle, disabledToggle] = await loader.getAllHarnesses(buttonToggleHarness);
5263
expect(await enabledToggle.isDisabled()).toBe(false);

tools/public_api_guard/material/button-toggle-testing.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@ import { MatButtonToggleAppearance } from '@angular/material/button-toggle';
1111

1212
// @public
1313
export interface ButtonToggleGroupHarnessFilters extends BaseHarnessFilters {
14+
disabled?: boolean;
1415
}
1516

1617
// @public
1718
export interface ButtonToggleHarnessFilters extends BaseHarnessFilters {
1819
checked?: boolean;
20+
disabled?: boolean;
1921
name?: string | RegExp;
2022
text?: string | RegExp;
2123
}

0 commit comments

Comments
 (0)