Skip to content

Commit 200d421

Browse files
authored
docs(material/slide-toggle): add harness example for slide-toggle (#21465)
1 parent dc5b773 commit 200d421

File tree

5 files changed

+94
-0
lines changed

5 files changed

+94
-0
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,18 @@ ng_module(
1111
]),
1212
module_name = "@angular/components-examples/material/slide-toggle",
1313
deps = [
14+
"//src/cdk/testing",
15+
"//src/cdk/testing/testbed",
1416
"//src/material/button",
1517
"//src/material/card",
1618
"//src/material/checkbox",
1719
"//src/material/radio",
1820
"//src/material/slide-toggle",
21+
"//src/material/slide-toggle/testing",
1922
"@npm//@angular/forms",
23+
"@npm//@angular/platform-browser",
24+
"@npm//@angular/platform-browser-dynamic",
25+
"@npm//@types/jasmine",
2026
],
2127
)
2228

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,19 @@ import {
1010
} from './slide-toggle-configurable/slide-toggle-configurable-example';
1111
import {SlideToggleFormsExample} from './slide-toggle-forms/slide-toggle-forms-example';
1212
import {SlideToggleOverviewExample} from './slide-toggle-overview/slide-toggle-overview-example';
13+
import {SlideToggleHarnessExample} from './slide-toggle-harness/slide-toggle-harness-example';
1314

1415
export {
1516
SlideToggleConfigurableExample,
1617
SlideToggleFormsExample,
18+
SlideToggleHarnessExample,
1719
SlideToggleOverviewExample,
1820
};
1921

2022
const EXAMPLES = [
2123
SlideToggleConfigurableExample,
2224
SlideToggleFormsExample,
25+
SlideToggleHarnessExample,
2326
SlideToggleOverviewExample,
2427
];
2528

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<mat-slide-toggle
2+
[formControl]="ctrl"
3+
name="first-name">
4+
First
5+
</mat-slide-toggle>
6+
<mat-slide-toggle [disabled]="disabled">
7+
Second
8+
</mat-slide-toggle>
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import {TestBed, ComponentFixture, waitForAsync} from '@angular/core/testing';
2+
import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed';
3+
import {MatSlideToggleHarness} from '@angular/material/slide-toggle/testing';
4+
import {HarnessLoader} from '@angular/cdk/testing';
5+
import {BrowserDynamicTestingModule, platformBrowserDynamicTesting}
6+
from '@angular/platform-browser-dynamic/testing';
7+
import {MatSlideToggleModule} from '@angular/material/slide-toggle';
8+
import {SlideToggleHarnessExample} from './slide-toggle-harness-example';
9+
import {ReactiveFormsModule} from '@angular/forms';
10+
11+
describe('SlideToggleHarnessExample', () => {
12+
let fixture: ComponentFixture<SlideToggleHarnessExample>;
13+
let loader: HarnessLoader;
14+
15+
beforeAll(() => {
16+
TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());
17+
});
18+
19+
beforeEach(
20+
waitForAsync(() => {
21+
TestBed.configureTestingModule({
22+
imports: [MatSlideToggleModule, ReactiveFormsModule],
23+
declarations: [SlideToggleHarnessExample]
24+
}).compileComponents();
25+
fixture = TestBed.createComponent(SlideToggleHarnessExample);
26+
fixture.detectChanges();
27+
loader = TestbedHarnessEnvironment.loader(fixture);
28+
})
29+
);
30+
31+
it('should load all slide-toggle harnesses', async () => {
32+
const slideToggles = await loader.getAllHarnesses(MatSlideToggleHarness);
33+
expect(slideToggles.length).toBe(2);
34+
});
35+
36+
it('should load slide-toggle with name', async () => {
37+
const slideToggles = await loader.getAllHarnesses(
38+
MatSlideToggleHarness.with({name: 'first-name'}));
39+
expect(slideToggles.length).toBe(1);
40+
expect(await slideToggles[0].getLabelText()).toBe('First');
41+
});
42+
43+
it('should get disabled state', async () => {
44+
const [enabledToggle, disabledToggle] = await loader.getAllHarnesses(MatSlideToggleHarness);
45+
expect(await enabledToggle.isDisabled()).toBe(false);
46+
expect(await disabledToggle.isDisabled()).toBe(true);
47+
});
48+
49+
it('should get label text', async () => {
50+
const [firstToggle, secondToggle] = await loader.getAllHarnesses(MatSlideToggleHarness);
51+
expect(await firstToggle.getLabelText()).toBe('First');
52+
expect(await secondToggle.getLabelText()).toBe('Second');
53+
});
54+
55+
it('should toggle slide-toggle', async () => {
56+
fixture.componentInstance.disabled = false;
57+
const [checkedToggle, uncheckedToggle] = await loader.getAllHarnesses(MatSlideToggleHarness);
58+
await checkedToggle.toggle();
59+
await uncheckedToggle.toggle();
60+
expect(await checkedToggle.isChecked()).toBe(false);
61+
expect(await uncheckedToggle.isChecked()).toBe(true);
62+
});
63+
});
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 {FormControl} from '@angular/forms';
3+
4+
/**
5+
* @title Testing with MatSlideToggleHarness
6+
*/
7+
@Component({
8+
selector: 'slide-toggle-harness-example',
9+
templateUrl: 'slide-toggle-harness-example.html',
10+
})
11+
export class SlideToggleHarnessExample {
12+
disabled = true;
13+
ctrl = new FormControl(true);
14+
}

0 commit comments

Comments
 (0)