Skip to content

Commit 714f70f

Browse files
authored
docs(material/paginator): add harness example for paginator (#21454)
1 parent f823198 commit 714f70f

File tree

5 files changed

+103
-0
lines changed

5 files changed

+103
-0
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,15 @@ ng_module(
1111
]),
1212
module_name = "@angular/components-examples/material/paginator",
1313
deps = [
14+
"//src/cdk/testing",
15+
"//src/cdk/testing/testbed",
1416
"//src/material/input",
1517
"//src/material/paginator",
18+
"//src/material/paginator/testing",
1619
"@npm//@angular/forms",
20+
"@npm//@angular/platform-browser",
21+
"@npm//@angular/platform-browser-dynamic",
22+
"@npm//@types/jasmine",
1723
],
1824
)
1925

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@ import {
77
PaginatorConfigurableExample
88
} from './paginator-configurable/paginator-configurable-example';
99
import {PaginatorOverviewExample} from './paginator-overview/paginator-overview-example';
10+
import {PaginatorHarnessExample} from './paginator-harness/paginator-harness-example';
1011

1112
export {
1213
PaginatorConfigurableExample,
14+
PaginatorHarnessExample,
1315
PaginatorOverviewExample,
1416
};
1517

1618
const EXAMPLES = [
1719
PaginatorConfigurableExample,
20+
PaginatorHarnessExample,
1821
PaginatorOverviewExample,
1922
];
2023

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<mat-paginator
2+
(page)="handlePageEvent($event)"
3+
[length]="length"
4+
[pageSize]="pageSize"
5+
[showFirstLastButtons]="showFirstLastButtons"
6+
[pageSizeOptions]="pageSizeOptions"
7+
[pageIndex]="pageIndex">
8+
</mat-paginator>
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 {MatPaginatorHarness} from '@angular/material/paginator/testing';
4+
import {HarnessLoader} from '@angular/cdk/testing';
5+
import {BrowserDynamicTestingModule, platformBrowserDynamicTesting}
6+
from '@angular/platform-browser-dynamic/testing';
7+
import {MatPaginatorModule} from '@angular/material/paginator';
8+
import {PaginatorHarnessExample} from './paginator-harness-example';
9+
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
10+
11+
describe('PaginatorHarnessExample', () => {
12+
let fixture: ComponentFixture<PaginatorHarnessExample>;
13+
let loader: HarnessLoader;
14+
let instance: PaginatorHarnessExample;
15+
16+
beforeAll(() => {
17+
TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());
18+
});
19+
20+
beforeEach(
21+
waitForAsync(() => {
22+
TestBed.configureTestingModule({
23+
imports: [MatPaginatorModule, NoopAnimationsModule],
24+
declarations: [PaginatorHarnessExample]
25+
}).compileComponents();
26+
fixture = TestBed.createComponent(PaginatorHarnessExample);
27+
fixture.detectChanges();
28+
loader = TestbedHarnessEnvironment.loader(fixture);
29+
instance = fixture.componentInstance;
30+
})
31+
);
32+
33+
it('should load all paginator harnesses', async () => {
34+
const paginators = await loader.getAllHarnesses(MatPaginatorHarness);
35+
expect(paginators.length).toBe(1);
36+
});
37+
38+
it('should be able to navigate between pages', async () => {
39+
const paginator = await loader.getHarness(MatPaginatorHarness);
40+
41+
expect(instance.pageIndex).toBe(0);
42+
await paginator.goToNextPage();
43+
expect(instance.pageIndex).toBe(1);
44+
await paginator.goToPreviousPage();
45+
expect(instance.pageIndex).toBe(0);
46+
});
47+
48+
it('should be able to go to the last page', async () => {
49+
const paginator = await loader.getHarness(MatPaginatorHarness);
50+
51+
expect(instance.pageIndex).toBe(0);
52+
await paginator.goToLastPage();
53+
expect(instance.pageIndex).toBe(49);
54+
});
55+
56+
it('should be able to set the page size', async () => {
57+
const paginator = await loader.getHarness(MatPaginatorHarness);
58+
59+
expect(instance.pageSize).toBe(10);
60+
await paginator.setPageSize(25);
61+
expect(instance.pageSize).toBe(25);
62+
});
63+
});
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import {Component} from '@angular/core';
2+
import {PageEvent} from '@angular/material/paginator';
3+
4+
/**
5+
* @title Testing with MatPaginatorHarness
6+
*/
7+
@Component({
8+
selector: 'paginator-harness-example',
9+
templateUrl: 'paginator-harness-example.html'
10+
})
11+
export class PaginatorHarnessExample {
12+
length = 500;
13+
pageSize = 10;
14+
pageIndex = 0;
15+
pageSizeOptions = [5, 10, 25];
16+
showFirstLastButtons = true;
17+
18+
handlePageEvent(event: PageEvent) {
19+
this.length = event.length;
20+
this.pageSize = event.pageSize;
21+
this.pageIndex = event.pageIndex;
22+
}
23+
}

0 commit comments

Comments
 (0)