Skip to content

Commit 8e37537

Browse files
committed
docs(material/expansion): add harness example for expansion (#21472)
(cherry picked from commit 2c73a4c)
1 parent 97412f4 commit 8e37537

File tree

5 files changed

+87
-0
lines changed

5 files changed

+87
-0
lines changed

src/components-examples/material/expansion/BUILD.bazel

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,17 @@ ng_module(
1111
]),
1212
module_name = "@angular/components-examples/material/expansion",
1313
deps = [
14+
"//src/cdk/testing",
15+
"//src/cdk/testing/testbed",
1416
"//src/material/button",
1517
"//src/material/datepicker",
1618
"//src/material/expansion",
19+
"//src/material/expansion/testing",
1720
"//src/material/icon",
1821
"//src/material/input",
22+
"@npm//@angular/platform-browser",
23+
"@npm//@angular/platform-browser-dynamic",
24+
"@npm//@types/jasmine",
1925
],
2026
)
2127

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<mat-accordion>
2+
<mat-expansion-panel>
3+
<mat-expansion-panel-header>
4+
<mat-panel-title>
5+
Welcome
6+
</mat-panel-title>
7+
</mat-expansion-panel-header>
8+
<p>I am the content!</p>
9+
</mat-expansion-panel>
10+
</mat-accordion>
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import {TestBed, ComponentFixture, waitForAsync} from '@angular/core/testing';
2+
import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed';
3+
import {MatExpansionPanelHarness, MatAccordionHarness} from '@angular/material/expansion/testing';
4+
import {HarnessLoader} from '@angular/cdk/testing';
5+
import {BrowserDynamicTestingModule, platformBrowserDynamicTesting}
6+
from '@angular/platform-browser-dynamic/testing';
7+
import {MatExpansionModule} from '@angular/material/expansion';
8+
import {ExpansionHarnessExample} from './expansion-harness-example';
9+
10+
describe('ExpansionHarnessExample', () => {
11+
let fixture: ComponentFixture<ExpansionHarnessExample>;
12+
let loader: HarnessLoader;
13+
14+
beforeAll(() => {
15+
TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());
16+
});
17+
18+
beforeEach(
19+
waitForAsync(() => {
20+
TestBed.configureTestingModule({
21+
imports: [MatExpansionModule],
22+
declarations: [ExpansionHarnessExample]
23+
}).compileComponents();
24+
fixture = TestBed.createComponent(ExpansionHarnessExample);
25+
fixture.detectChanges();
26+
loader = TestbedHarnessEnvironment.loader(fixture);
27+
})
28+
);
29+
30+
it('should be able to load accordion', async () => {
31+
const accordions = await loader.getAllHarnesses(MatAccordionHarness);
32+
expect(accordions.length).toBe(1);
33+
});
34+
35+
it('should be able to load expansion panels', async () => {
36+
const panels = await loader.getAllHarnesses(MatExpansionPanelHarness);
37+
expect(panels.length).toBe(1);
38+
});
39+
40+
it('should be able to toggle expansion state of panel', async () => {
41+
const panel = await loader.getHarness(MatExpansionPanelHarness);
42+
expect(await panel.isExpanded()).toBe(false);
43+
await panel.toggle();
44+
expect(await panel.isExpanded()).toBe(true);
45+
});
46+
47+
it('should be able to get text content of expansion panel', async () => {
48+
const panel = await loader.getHarness(MatExpansionPanelHarness);
49+
expect(await panel.getTextContent()).toBe('I am the content!');
50+
});
51+
52+
it('should be able to get expansion panels of accordion', async () => {
53+
const accordion = await loader.getHarness(MatAccordionHarness);
54+
const panels = await accordion.getExpansionPanels();
55+
expect(panels.length).toBe(1);
56+
expect(await panels[0].getTitle()).toBe('Welcome');
57+
});
58+
});
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import {Component} from '@angular/core';
2+
3+
/**
4+
* @title Testing with MatExpansionPanelHarness and MatAccordionHarness
5+
*/
6+
@Component({
7+
selector: 'expansion-harness-example',
8+
templateUrl: 'expansion-harness-example.html',
9+
})
10+
export class ExpansionHarnessExample {}

src/components-examples/material/expansion/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,18 @@ import {
1010
} from './expansion-expand-collapse-all/expansion-expand-collapse-all-example';
1111
import {ExpansionOverviewExample} from './expansion-overview/expansion-overview-example';
1212
import {ExpansionStepsExample} from './expansion-steps/expansion-steps-example';
13+
import {ExpansionHarnessExample} from './expansion-harness/expansion-harness-example';
1314

1415
export {
1516
ExpansionExpandCollapseAllExample,
17+
ExpansionHarnessExample,
1618
ExpansionOverviewExample,
1719
ExpansionStepsExample,
1820
};
1921

2022
const EXAMPLES = [
2123
ExpansionExpandCollapseAllExample,
24+
ExpansionHarnessExample,
2225
ExpansionOverviewExample,
2326
ExpansionStepsExample,
2427
];

0 commit comments

Comments
 (0)