1- import { HarnessLoader } from '@angular/cdk/testing' ;
1+ import { HarnessLoader , parallel } from '@angular/cdk/testing' ;
22import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed' ;
33import { Component } from '@angular/core' ;
44import { ComponentFixture , TestBed } from '@angular/core/testing' ;
55import { MatSidenavModule } from '@angular/material/sidenav' ;
6- import { MatSidenavHarness } from '@angular/material/sidenav/testing/sidenav-harness' ;
76import { NoopAnimationsModule } from '@angular/platform-browser/animations' ;
7+ import { MatDrawerContainerHarness } from './drawer-container-harness' ;
8+ import { MatDrawerContentHarness } from './drawer-content-harness' ;
89import { MatDrawerHarness } from './drawer-harness' ;
10+ import { MatSidenavContainerHarness } from './sidenav-container-harness' ;
11+ import { MatSidenavContentHarness } from './sidenav-content-harness' ;
12+ import { MatSidenavHarness } from './sidenav-harness' ;
913
1014/** Shared tests to run on both the original and MDC-based drawer & sidenav. */
1115export function runHarnessTests ( sidenavModule : typeof MatSidenavModule ,
1216 drawerHarness : typeof MatDrawerHarness ,
13- sidenavHarness : typeof MatSidenavHarness ) {
14- describe ( 'MatDrawerHarness' , ( ) => {
17+ drawerContainerHarness : typeof MatDrawerContainerHarness ,
18+ drawerContentHarness : typeof MatDrawerContentHarness ,
19+ sidenavHarness : typeof MatSidenavHarness ,
20+ sidenavContainerHarness : typeof MatSidenavContainerHarness ,
21+ sidenavContentHarness : typeof MatSidenavContentHarness ) {
22+ describe ( 'drawer' , ( ) => {
1523 let fixture : ComponentFixture < DrawerHarnessTest > ;
1624 let loader : HarnessLoader ;
1725
@@ -67,9 +75,41 @@ export function runHarnessTests(sidenavModule: typeof MatSidenavModule,
6775 expect ( await drawers [ 1 ] . getMode ( ) ) . toBe ( 'side' ) ;
6876 expect ( await drawers [ 2 ] . getMode ( ) ) . toBe ( 'push' ) ;
6977 } ) ;
78+
79+ it ( 'should load all drawer container harnesses' , async ( ) => {
80+ const containers = await loader . getAllHarnesses ( drawerContainerHarness ) ;
81+ expect ( containers . length ) . toBe ( 2 ) ;
82+ } ) ;
83+
84+ it ( 'should get the drawers within a container' , async ( ) => {
85+ const containers = await loader . getAllHarnesses ( drawerContainerHarness ) ;
86+ const [ firstContainerDrawers , secondContainerDrawers ] = await parallel ( ( ) => {
87+ return containers . map ( container => container . getDrawers ( ) ) ;
88+ } ) ;
89+
90+ expect ( await parallel ( ( ) => {
91+ return firstContainerDrawers . map ( async container => ( await container . host ( ) ) . text ( ) ) ;
92+ } ) ) . toEqual ( [ 'One' , 'Two' ] ) ;
93+
94+ expect ( await parallel ( ( ) => {
95+ return secondContainerDrawers . map ( async container => ( await container . host ( ) ) . text ( ) ) ;
96+ } ) ) . toEqual ( [ 'Three' ] ) ;
97+ } ) ;
98+
99+ it ( 'should get the content of a container' , async ( ) => {
100+ const container = await loader . getHarness ( drawerContainerHarness ) ;
101+ const content = await container . getContent ( ) ;
102+ expect ( await ( await content . host ( ) ) . text ( ) ) . toBe ( 'Content' ) ;
103+ } ) ;
104+
105+ it ( 'should load all drawer content harnesses' , async ( ) => {
106+ const contentElements = await loader . getAllHarnesses ( drawerContentHarness ) ;
107+ expect ( contentElements . length ) . toBe ( 2 ) ;
108+ } ) ;
109+
70110 } ) ;
71111
72- describe ( 'MatSidenavHarness ' , ( ) => {
112+ describe ( 'sidenav ' , ( ) => {
73113 let fixture : ComponentFixture < SidenavHarnessTest > ;
74114 let loader : HarnessLoader ;
75115
@@ -91,6 +131,38 @@ export function runHarnessTests(sidenavModule: typeof MatSidenavModule,
91131 expect ( await sidenavs [ 1 ] . isFixedInViewport ( ) ) . toBe ( false ) ;
92132 expect ( await sidenavs [ 2 ] . isFixedInViewport ( ) ) . toBe ( true ) ;
93133 } ) ;
134+
135+ it ( 'should load all sidenav container harnesses' , async ( ) => {
136+ const containers = await loader . getAllHarnesses ( sidenavContainerHarness ) ;
137+ expect ( containers . length ) . toBe ( 2 ) ;
138+ } ) ;
139+
140+ it ( 'should get the sidenavs within a container' , async ( ) => {
141+ const containers = await loader . getAllHarnesses ( sidenavContainerHarness ) ;
142+ const [ firstContainerSidenavs , secondContainerSidenavs ] = await parallel ( ( ) => {
143+ return containers . map ( container => container . getSidenavs ( ) ) ;
144+ } ) ;
145+
146+ expect ( await parallel ( ( ) => {
147+ return firstContainerSidenavs . map ( async container => ( await container . host ( ) ) . text ( ) ) ;
148+ } ) ) . toEqual ( [ 'One' , 'Two' ] ) ;
149+
150+ expect ( await parallel ( ( ) => {
151+ return secondContainerSidenavs . map ( async container => ( await container . host ( ) ) . text ( ) ) ;
152+ } ) ) . toEqual ( [ 'Three' ] ) ;
153+ } ) ;
154+
155+ it ( 'should get the content of a container' , async ( ) => {
156+ const container = await loader . getHarness ( sidenavContainerHarness ) ;
157+ const content = await container . getContent ( ) ;
158+ expect ( await ( await content . host ( ) ) . text ( ) ) . toBe ( 'Content' ) ;
159+ } ) ;
160+
161+ it ( 'should load all sidenav content harnesses' , async ( ) => {
162+ const contentElements = await loader . getAllHarnesses ( sidenavContentHarness ) ;
163+ expect ( contentElements . length ) . toBe ( 2 ) ;
164+ } ) ;
165+
94166 } ) ;
95167}
96168
0 commit comments