Skip to content

Commit 0b2d150

Browse files
authored
docs(material/button-toggle): add button toggle harness example (#20837)
1 parent fea1648 commit 0b2d150

File tree

5 files changed

+83
-0
lines changed

5 files changed

+83
-0
lines changed

src/components-examples/material/button-toggle/BUILD.bazel

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,14 @@ ng_module(
1111
]),
1212
module_name = "@angular/components-examples/material/button-toggle",
1313
deps = [
14+
"//src/cdk/testing",
15+
"//src/cdk/testing/testbed",
1416
"//src/material/button-toggle",
17+
"//src/material/button-toggle/testing",
1518
"//src/material/icon",
19+
"@npm//@angular/platform-browser",
20+
"@npm//@angular/platform-browser-dynamic",
21+
"@npm//@types/jasmine",
1622
],
1723
)
1824

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<mat-button-toggle-group [disabled]="disabled" [appearance]="appearance">
2+
<mat-button-toggle value="1">One</mat-button-toggle>
3+
<mat-button-toggle value="2">Two</mat-button-toggle>
4+
</mat-button-toggle-group>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import {TestBed, ComponentFixture, waitForAsync} from '@angular/core/testing';
2+
import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed';
3+
import {MatButtonToggleGroupHarness} from '@angular/material/button-toggle/testing';
4+
import {HarnessLoader} from '@angular/cdk/testing';
5+
import {BrowserDynamicTestingModule, platformBrowserDynamicTesting}
6+
from '@angular/platform-browser-dynamic/testing';
7+
import {MatButtonToggleModule} from '@angular/material/button-toggle';
8+
import {ButtonToggleHarnessExample} from './button-toggle-harness-example';
9+
10+
describe('ButtonToggleHarnessExample', () => {
11+
let fixture: ComponentFixture<ButtonToggleHarnessExample>;
12+
let loader: HarnessLoader;
13+
14+
beforeAll(() => {
15+
TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());
16+
});
17+
18+
beforeEach(
19+
waitForAsync(() => {
20+
TestBed.configureTestingModule({
21+
imports: [MatButtonToggleModule],
22+
declarations: [ButtonToggleHarnessExample]
23+
}).compileComponents();
24+
}));
25+
26+
beforeEach(() => {
27+
fixture = TestBed.createComponent(ButtonToggleHarnessExample);
28+
fixture.detectChanges();
29+
loader = TestbedHarnessEnvironment.loader(fixture);
30+
});
31+
32+
it('should load all button toggle group harnesses', async () => {
33+
const groups = await loader.getAllHarnesses(MatButtonToggleGroupHarness);
34+
expect(groups.length).toBe(1);
35+
});
36+
37+
it('should load the the toggles inside the group', async () => {
38+
const group = await loader.getHarness(MatButtonToggleGroupHarness);
39+
const toggles = await group.getToggles();
40+
expect(toggles.length).toBe(2);
41+
});
42+
43+
it('should get whether the group is disabled', async () => {
44+
const group = await loader.getHarness(MatButtonToggleGroupHarness);
45+
expect(await group.isDisabled()).toBe(false);
46+
fixture.componentInstance.disabled = true;
47+
expect(await group.isDisabled()).toBe(true);
48+
});
49+
50+
it('should get the group appearance', async () => {
51+
const group = await loader.getHarness(MatButtonToggleGroupHarness);
52+
expect(await group.getAppearance()).toBe('standard');
53+
fixture.componentInstance.appearance = 'legacy';
54+
expect(await group.getAppearance()).toBe('legacy');
55+
});
56+
});
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import {Component} from '@angular/core';
2+
import {MatButtonToggleAppearance} from '@angular/material/button-toggle';
3+
4+
/**
5+
* @title Testing with MatButtonToggleHarness
6+
*/
7+
@Component({
8+
selector: 'button-toggle-harness-example',
9+
templateUrl: 'button-toggle-harness-example.html',
10+
})
11+
export class ButtonToggleHarnessExample {
12+
disabled = false;
13+
appearance: MatButtonToggleAppearance = 'standard';
14+
}

src/components-examples/material/button-toggle/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,20 @@ import {
88
ButtonToggleExclusiveExample
99
} from './button-toggle-exclusive/button-toggle-exclusive-example';
1010
import {ButtonToggleOverviewExample} from './button-toggle-overview/button-toggle-overview-example';
11+
import {ButtonToggleHarnessExample} from './button-toggle-harness/button-toggle-harness-example';
1112

1213
export {
1314
ButtonToggleAppearanceExample,
1415
ButtonToggleExclusiveExample,
1516
ButtonToggleOverviewExample,
17+
ButtonToggleHarnessExample,
1618
};
1719

1820
const EXAMPLES = [
1921
ButtonToggleAppearanceExample,
2022
ButtonToggleExclusiveExample,
2123
ButtonToggleOverviewExample,
24+
ButtonToggleHarnessExample,
2225
];
2326

2427
@NgModule({

0 commit comments

Comments
 (0)