@@ -95,9 +95,9 @@ describe('CdkTree', () => {
9595 it ( 'with the right accessibility roles' , ( ) => {
9696 expect ( treeElement . getAttribute ( 'role' ) ) . toBe ( 'tree' ) ;
9797
98- getNodes ( treeElement ) . forEach ( node => {
99- expect ( node . getAttribute ( 'role' ) ) . toBe ( 'treeitem' ) ;
100- } ) ;
98+ expect ( getNodes ( treeElement ) . every ( node => {
99+ return node . getAttribute ( 'role' ) === 'treeitem' ;
100+ } ) ) . toBe ( true ) ;
101101 } ) ;
102102
103103 it ( 'with the right data' , ( ) => {
@@ -469,6 +469,15 @@ describe('CdkTree', () => {
469469 expect ( changedNodes [ 2 ] . getAttribute ( 'initialIndex' ) ) . toBe ( null ) ;
470470 } ) ;
471471 } ) ;
472+
473+ it ( 'should pick up indirect descendant node definitions' , ( ) => {
474+ configureCdkTreeTestingModule ( [ SimpleCdkTreeAppWithIndirectNodes ] ) ;
475+ const fixture = TestBed . createComponent ( SimpleCdkTreeAppWithIndirectNodes ) ;
476+ fixture . detectChanges ( ) ;
477+ treeElement = fixture . nativeElement . querySelector ( 'cdk-tree' ) ;
478+
479+ expect ( getNodes ( treeElement ) . length ) . toBe ( 3 ) ;
480+ } ) ;
472481 } ) ;
473482
474483 describe ( 'nested tree' , ( ) => {
@@ -502,9 +511,9 @@ describe('CdkTree', () => {
502511 it ( 'with the right accessibility roles' , ( ) => {
503512 expect ( treeElement . getAttribute ( 'role' ) ) . toBe ( 'tree' ) ;
504513
505- getNodes ( treeElement ) . forEach ( node => {
506- expect ( node . getAttribute ( 'role' ) ) . toBe ( 'treeitem' ) ;
507- } ) ;
514+ expect ( getNodes ( treeElement ) . every ( node => {
515+ return node . getAttribute ( 'role' ) === 'treeitem' ;
516+ } ) ) . toBe ( true ) ;
508517 } ) ;
509518
510519 it ( 'with the right data' , ( ) => {
@@ -827,9 +836,9 @@ describe('CdkTree', () => {
827836 getNodes ( initialNodes [ 0 ] ) . forEach ( ( node : Element , index : number ) => {
828837 node . setAttribute ( 'initialIndex' , `c${ index } ` ) ;
829838 } ) ;
830- getNodes ( initialNodes [ 0 ] ) . forEach ( ( node , index ) => {
831- expect ( node . getAttribute ( 'initialIndex' ) ) . toBe ( `c${ index } ` ) ;
832- } ) ;
839+ expect ( getNodes ( initialNodes [ 0 ] ) . every ( ( node , index ) => {
840+ return node . getAttribute ( 'initialIndex' ) === `c${ index } ` ;
841+ } ) ) . toBe ( true ) ;
833842 }
834843
835844 function mutateChildren ( parent : TestData ) {
@@ -965,10 +974,8 @@ describe('CdkTree', () => {
965974
966975 const depthElements = Array . from ( treeElement . querySelectorAll ( '.tree-test-level' ) ! ) ;
967976 const expectedLevels = [ '0' , '0' , '1' , '2' , '0' ] ;
968- depthElements . forEach ( ( element , index ) => {
969- const actualLevel = element . textContent ! . trim ( ) ;
970- expect ( actualLevel ) . toBe ( expectedLevels [ index ] ) ;
971- } ) ;
977+ const actualLevels = depthElements . map ( element => element . textContent ! . trim ( ) ) ;
978+ expect ( actualLevels ) . toEqual ( expectedLevels ) ;
972979 expect ( depthElements . length ) . toBe ( 5 ) ;
973980 } ) ;
974981 } ) ;
@@ -1158,6 +1165,22 @@ class SimpleCdkTreeApp {
11581165 @ViewChildren ( CdkTreeNodePadding ) paddingNodes : QueryList < CdkTreeNodePadding < TestData > > ;
11591166}
11601167
1168+ @Component ( {
1169+ template : `
1170+ <cdk-tree [dataSource]="dataSource" [treeControl]="treeControl">
1171+ <ng-container [ngSwitch]="true">
1172+ <cdk-tree-node *cdkTreeNodeDef="let node" class="customNodeClass"
1173+ cdkTreeNodePadding [cdkTreeNodePaddingIndent]="indent"
1174+ cdkTreeNodeToggle>
1175+ {{node.pizzaTopping}} - {{node.pizzaCheese}} + {{node.pizzaBase}}
1176+ </cdk-tree-node>
1177+ </ng-container>
1178+ </cdk-tree>
1179+ `
1180+ } )
1181+ class SimpleCdkTreeAppWithIndirectNodes extends SimpleCdkTreeApp {
1182+ }
1183+
11611184@Component ( {
11621185 template : `
11631186 <cdk-tree [dataSource]="dataSource" [treeControl]="treeControl">
0 commit comments