Skip to content

Commit 69a2ea8

Browse files
committed
test(material/button-toggle): combine shared tests
Since we only have one module, we don't need separate shared tests anymore.
1 parent fb6e661 commit 69a2ea8

File tree

5 files changed

+234
-271
lines changed

5 files changed

+234
-271
lines changed

src/material/button-toggle/testing/BUILD.bazel

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,8 @@ filegroup(
2121
)
2222

2323
ng_test_library(
24-
name = "harness_tests_lib",
25-
srcs = [
26-
"button-toggle-group-shared.spec.ts",
27-
"button-toggle-shared.spec.ts",
28-
],
24+
name = "unit_tests_lib",
25+
srcs = glob(["**/*.spec.ts"]),
2926
deps = [
3027
":testing",
3128
"//src/cdk/testing",
@@ -34,22 +31,6 @@ ng_test_library(
3431
],
3532
)
3633

37-
ng_test_library(
38-
name = "unit_tests_lib",
39-
srcs = glob(
40-
["**/*.spec.ts"],
41-
exclude = [
42-
"button-toggle-shared.spec.ts",
43-
"button-toggle-group-shared.spec.ts",
44-
],
45-
),
46-
deps = [
47-
":harness_tests_lib",
48-
":testing",
49-
"//src/material/button-toggle",
50-
],
51-
)
52-
5334
ng_web_test_suite(
5435
name = "unit_tests",
5536
deps = [":unit_tests_lib"],

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

Lines changed: 0 additions & 90 deletions
This file was deleted.
Lines changed: 87 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,90 @@
1-
import {MatButtonToggleModule} from '@angular/material/button-toggle';
2-
import {runHarnessTests} from './button-toggle-group-shared.spec';
1+
import {Component} from '@angular/core';
2+
import {ComponentFixture, TestBed} from '@angular/core/testing';
3+
import {HarnessLoader} from '@angular/cdk/testing';
4+
import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed';
5+
import {MatButtonToggleModule, MatButtonToggleAppearance} from '@angular/material/button-toggle';
36
import {MatButtonToggleGroupHarness} from './button-toggle-group-harness';
47

5-
describe('Non-MDC-based MatButtonToggleGroupHarness', () => {
6-
runHarnessTests(MatButtonToggleModule, MatButtonToggleGroupHarness);
8+
describe('MatButtonToggleGroupHarness', () => {
9+
let fixture: ComponentFixture<ButtonToggleGroupHarnessTest>;
10+
let loader: HarnessLoader;
11+
12+
beforeEach(async () => {
13+
await TestBed.configureTestingModule({
14+
imports: [MatButtonToggleModule],
15+
declarations: [ButtonToggleGroupHarnessTest],
16+
}).compileComponents();
17+
18+
fixture = TestBed.createComponent(ButtonToggleGroupHarnessTest);
19+
fixture.detectChanges();
20+
loader = TestbedHarnessEnvironment.loader(fixture);
21+
});
22+
23+
it('should load all button toggle group harnesses', async () => {
24+
const groups = await loader.getAllHarnesses(MatButtonToggleGroupHarness);
25+
expect(groups.length).toBe(1);
26+
});
27+
28+
it('should load the toggles inside the group', async () => {
29+
const group = await loader.getHarness(MatButtonToggleGroupHarness);
30+
const toggles = await group.getToggles();
31+
expect(toggles.length).toBe(2);
32+
});
33+
34+
it('should get whether the group is disabled', async () => {
35+
const group = await loader.getHarness(MatButtonToggleGroupHarness);
36+
expect(await group.isDisabled()).toBe(false);
37+
fixture.componentInstance.disabled = true;
38+
expect(await group.isDisabled()).toBe(true);
39+
});
40+
41+
it('should filter by whether the group is disabled', async () => {
42+
let enabledGroups = await loader.getAllHarnesses(
43+
MatButtonToggleGroupHarness.with({disabled: false}),
44+
);
45+
let disabledGroups = await loader.getAllHarnesses(
46+
MatButtonToggleGroupHarness.with({disabled: true}),
47+
);
48+
expect(enabledGroups.length).toBe(1);
49+
expect(disabledGroups.length).toBe(0);
50+
51+
fixture.componentInstance.disabled = true;
52+
53+
enabledGroups = await loader.getAllHarnesses(
54+
MatButtonToggleGroupHarness.with({disabled: false}),
55+
);
56+
disabledGroups = await loader.getAllHarnesses(
57+
MatButtonToggleGroupHarness.with({disabled: true}),
58+
);
59+
expect(enabledGroups.length).toBe(0);
60+
expect(disabledGroups.length).toBe(1);
61+
});
62+
63+
it('should get whether the group is vertical', async () => {
64+
const group = await loader.getHarness(MatButtonToggleGroupHarness);
65+
expect(await group.isVertical()).toBe(false);
66+
fixture.componentInstance.vertical = true;
67+
expect(await group.isVertical()).toBe(true);
68+
});
69+
70+
it('should get whether the group appearance', async () => {
71+
const group = await loader.getHarness(MatButtonToggleGroupHarness);
72+
expect(await group.getAppearance()).toBe('standard');
73+
fixture.componentInstance.appearance = 'legacy';
74+
expect(await group.getAppearance()).toBe('legacy');
75+
});
776
});
77+
78+
@Component({
79+
template: `
80+
<mat-button-toggle-group [disabled]="disabled" [vertical]="vertical" [appearance]="appearance">
81+
<mat-button-toggle value="1">One</mat-button-toggle>
82+
<mat-button-toggle value="2">Two</mat-button-toggle>
83+
</mat-button-toggle-group>
84+
`,
85+
})
86+
class ButtonToggleGroupHarnessTest {
87+
disabled = false;
88+
vertical = false;
89+
appearance: MatButtonToggleAppearance = 'standard';
90+
}
Lines changed: 145 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,149 @@
1+
import {Component} from '@angular/core';
2+
import {ComponentFixture, TestBed} from '@angular/core/testing';
3+
import {HarnessLoader} from '@angular/cdk/testing';
4+
import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed';
15
import {MatButtonToggleModule} from '@angular/material/button-toggle';
2-
import {runHarnessTests} from './button-toggle-shared.spec';
36
import {MatButtonToggleHarness} from './button-toggle-harness';
47

5-
describe('Non-MDC-based MatButtonToggleHarness', () => {
6-
runHarnessTests(MatButtonToggleModule, MatButtonToggleHarness);
8+
describe('MatButtonToggleHarness', () => {
9+
let fixture: ComponentFixture<ButtonToggleHarnessTest>;
10+
let loader: HarnessLoader;
11+
12+
beforeEach(async () => {
13+
await TestBed.configureTestingModule({
14+
imports: [MatButtonToggleModule],
15+
declarations: [ButtonToggleHarnessTest],
16+
}).compileComponents();
17+
18+
fixture = TestBed.createComponent(ButtonToggleHarnessTest);
19+
fixture.detectChanges();
20+
loader = TestbedHarnessEnvironment.loader(fixture);
21+
});
22+
23+
it('should load all button toggle harnesses', async () => {
24+
const toggles = await loader.getAllHarnesses(MatButtonToggleHarness);
25+
expect(toggles.length).toBe(2);
26+
});
27+
28+
it('should load a button toggle with exact label', async () => {
29+
const toggles = await loader.getAllHarnesses(MatButtonToggleHarness.with({text: 'First'}));
30+
expect(toggles.length).toBe(1);
31+
expect(await toggles[0].getText()).toBe('First');
32+
});
33+
34+
it('should load a button toggle with regex label match', async () => {
35+
const toggles = await loader.getAllHarnesses(MatButtonToggleHarness.with({text: /^s/i}));
36+
expect(toggles.length).toBe(1);
37+
expect(await toggles[0].getText()).toBe('Second');
38+
});
39+
40+
it('should get the toggle checked state', async () => {
41+
const [checkedToggle, uncheckedToggle] = await loader.getAllHarnesses(MatButtonToggleHarness);
42+
expect(await checkedToggle.isChecked()).toBe(true);
43+
expect(await uncheckedToggle.isChecked()).toBe(false);
44+
});
45+
46+
it('should filter by whether the group is disabled', async () => {
47+
const enabledToggles = await loader.getAllHarnesses(
48+
MatButtonToggleHarness.with({disabled: false}),
49+
);
50+
const disabledToggles = await loader.getAllHarnesses(
51+
MatButtonToggleHarness.with({disabled: true}),
52+
);
53+
expect(enabledToggles.length).toBe(1);
54+
expect(disabledToggles.length).toBe(1);
55+
});
56+
57+
it('should get the toggle disabled state', async () => {
58+
const [enabledToggle, disabledToggle] = await loader.getAllHarnesses(MatButtonToggleHarness);
59+
expect(await enabledToggle.isDisabled()).toBe(false);
60+
expect(await disabledToggle.isDisabled()).toBe(true);
61+
});
62+
63+
it('should get the toggle name', async () => {
64+
const toggle = await loader.getHarness(MatButtonToggleHarness.with({text: 'First'}));
65+
expect(await toggle.getName()).toBe('first-name');
66+
});
67+
68+
it('should get the toggle aria-label', async () => {
69+
const toggle = await loader.getHarness(MatButtonToggleHarness.with({text: 'First'}));
70+
expect(await toggle.getAriaLabel()).toBe('First toggle');
71+
});
72+
73+
it('should get the toggle aria-labelledby', async () => {
74+
const toggle = await loader.getHarness(MatButtonToggleHarness.with({text: 'Second'}));
75+
expect(await toggle.getAriaLabelledby()).toBe('second-label');
76+
});
77+
78+
it('should get the toggle label text', async () => {
79+
const [firstToggle, secondToggle] = await loader.getAllHarnesses(MatButtonToggleHarness);
80+
expect(await firstToggle.getText()).toBe('First');
81+
expect(await secondToggle.getText()).toBe('Second');
82+
});
83+
84+
it('should get the toggle appearance', async () => {
85+
const [firstToggle, secondToggle] = await loader.getAllHarnesses(MatButtonToggleHarness);
86+
expect(await firstToggle.getAppearance()).toBe('standard');
87+
expect(await secondToggle.getAppearance()).toBe('legacy');
88+
});
89+
90+
it('should focus the button toggle', async () => {
91+
const toggle = await loader.getHarness(MatButtonToggleHarness.with({text: 'First'}));
92+
expect(await toggle.isFocused()).toBe(false);
93+
await toggle.focus();
94+
expect(await toggle.isFocused()).toBe(true);
95+
});
96+
97+
it('should blur the button toggle', async () => {
98+
const toggle = await loader.getHarness(MatButtonToggleHarness.with({text: 'First'}));
99+
await toggle.focus();
100+
expect(await toggle.isFocused()).toBe(true);
101+
await toggle.blur();
102+
expect(await toggle.isFocused()).toBe(false);
103+
});
104+
105+
it('should toggle the button value', async () => {
106+
fixture.componentInstance.disabled = false;
107+
const [checkedToggle, uncheckedToggle] = await loader.getAllHarnesses(MatButtonToggleHarness);
108+
await checkedToggle.toggle();
109+
await uncheckedToggle.toggle();
110+
expect(await checkedToggle.isChecked()).toBe(false);
111+
expect(await uncheckedToggle.isChecked()).toBe(true);
112+
});
113+
114+
it('should check the button toggle', async () => {
115+
fixture.componentInstance.disabled = false;
116+
const [checkedToggle, uncheckedToggle] = await loader.getAllHarnesses(MatButtonToggleHarness);
117+
await checkedToggle.check();
118+
await uncheckedToggle.check();
119+
expect(await checkedToggle.isChecked()).toBe(true);
120+
expect(await uncheckedToggle.isChecked()).toBe(true);
121+
});
122+
123+
it('should uncheck the button toggle', async () => {
124+
fixture.componentInstance.disabled = false;
125+
const [checkedToggle, uncheckedToggle] = await loader.getAllHarnesses(MatButtonToggleHarness);
126+
await checkedToggle.uncheck();
127+
await uncheckedToggle.uncheck();
128+
expect(await checkedToggle.isChecked()).toBe(false);
129+
expect(await uncheckedToggle.isChecked()).toBe(false);
130+
});
7131
});
132+
133+
@Component({
134+
template: `
135+
<mat-button-toggle
136+
name="first-name"
137+
value="first-value"
138+
aria-label="First toggle"
139+
checked>First</mat-button-toggle>
140+
<mat-button-toggle
141+
[disabled]="disabled"
142+
aria-labelledby="second-label"
143+
appearance="legacy">Second</mat-button-toggle>
144+
<span id="second-label">Second toggle</span>
145+
`,
146+
})
147+
class ButtonToggleHarnessTest {
148+
disabled = true;
149+
}

0 commit comments

Comments
 (0)