@@ -91,6 +91,95 @@ describe('CdkNestedTreeControl', () => {
9191 expect ( treeControl . expansionModel . selected . length )
9292 . toBe ( totalNumber , `Expect ${ totalNumber } expanded nodes` ) ;
9393 } ) ;
94+
95+ describe ( 'with children array' , ( ) => {
96+ let getStaticChildren = ( node : TestData ) => node . children ;
97+
98+ beforeEach ( ( ) => {
99+ treeControl = new NestedTreeControl < TestData > ( getStaticChildren ) ;
100+ } ) ;
101+
102+ it ( 'should be able to expand and collapse dataNodes' , ( ) => {
103+ const nodes = generateData ( 10 , 4 ) ;
104+ const node = nodes [ 1 ] ;
105+ const sixthNode = nodes [ 5 ] ;
106+ treeControl . dataNodes = nodes ;
107+
108+ treeControl . expand ( node ) ;
109+
110+
111+ expect ( treeControl . isExpanded ( node ) ) . toBeTruthy ( 'Expect second node to be expanded' ) ;
112+ expect ( treeControl . expansionModel . selected )
113+ . toContain ( node , 'Expect second node in expansionModel' ) ;
114+ expect ( treeControl . expansionModel . selected . length )
115+ . toBe ( 1 , 'Expect only second node in expansionModel' ) ;
116+
117+ treeControl . toggle ( sixthNode ) ;
118+
119+ expect ( treeControl . isExpanded ( node ) ) . toBeTruthy ( 'Expect second node to stay expanded' ) ;
120+ expect ( treeControl . expansionModel . selected )
121+ . toContain ( sixthNode , 'Expect sixth node in expansionModel' ) ;
122+ expect ( treeControl . expansionModel . selected )
123+ . toContain ( node , 'Expect second node in expansionModel' ) ;
124+ expect ( treeControl . expansionModel . selected . length )
125+ . toBe ( 2 , 'Expect two dataNodes in expansionModel' ) ;
126+
127+ treeControl . collapse ( node ) ;
128+
129+ expect ( treeControl . isExpanded ( node ) ) . toBeFalsy ( 'Expect second node to be collapsed' ) ;
130+ expect ( treeControl . expansionModel . selected . length )
131+ . toBe ( 1 , 'Expect one node in expansionModel' ) ;
132+ expect ( treeControl . isExpanded ( sixthNode ) ) . toBeTruthy ( 'Expect sixth node to stay expanded' ) ;
133+ expect ( treeControl . expansionModel . selected )
134+ . toContain ( sixthNode , 'Expect sixth node in expansionModel' ) ;
135+ } ) ;
136+
137+ it ( 'should toggle descendants correctly' , ( ) => {
138+ const numNodes = 10 ;
139+ const numChildren = 4 ;
140+ const numGrandChildren = 2 ;
141+ const nodes = generateData ( numNodes , numChildren , numGrandChildren ) ;
142+ treeControl . dataNodes = nodes ;
143+
144+ treeControl . expandDescendants ( nodes [ 1 ] ) ;
145+
146+ const expandedNodesNum = 1 + numChildren + numChildren * numGrandChildren ;
147+ expect ( treeControl . expansionModel . selected . length )
148+ . toBe ( expandedNodesNum , `Expect expanded ${ expandedNodesNum } nodes` ) ;
149+
150+ expect ( treeControl . isExpanded ( nodes [ 1 ] ) ) . toBeTruthy ( 'Expect second node to be expanded' ) ;
151+ for ( let i = 0 ; i < numChildren ; i ++ ) {
152+
153+ expect ( treeControl . isExpanded ( nodes [ 1 ] . children [ i ] ) )
154+ . toBeTruthy ( `Expect second node's children to be expanded` ) ;
155+ for ( let j = 0 ; j < numGrandChildren ; j ++ ) {
156+ expect ( treeControl . isExpanded ( nodes [ 1 ] . children [ i ] . children [ j ] ) )
157+ . toBeTruthy ( `Expect second node grand children to be expanded` ) ;
158+ }
159+ }
160+ } ) ;
161+
162+ it ( 'should be able to expand/collapse all the dataNodes' , ( ) => {
163+ const numNodes = 10 ;
164+ const numChildren = 4 ;
165+ const numGrandChildren = 2 ;
166+ const nodes = generateData ( numNodes , numChildren , numGrandChildren ) ;
167+ treeControl . dataNodes = nodes ;
168+
169+ treeControl . expandDescendants ( nodes [ 1 ] ) ;
170+
171+ treeControl . collapseAll ( ) ;
172+
173+ expect ( treeControl . expansionModel . selected . length ) . toBe ( 0 , `Expect no expanded nodes` ) ;
174+
175+ treeControl . expandAll ( ) ;
176+
177+ const totalNumber = numNodes + ( numNodes * numChildren )
178+ + ( numNodes * numChildren * numGrandChildren ) ;
179+ expect ( treeControl . expansionModel . selected . length )
180+ . toBe ( totalNumber , `Expect ${ totalNumber } expanded nodes` ) ;
181+ } ) ;
182+ } ) ;
94183 } ) ;
95184} ) ;
96185
0 commit comments