@@ -96,6 +96,8 @@ describe('CdkTable', () => {
9696 } ) ;
9797 } ) ;
9898
99+ // TODO(andrewseguin): Add test for dynamic classes on header/rows
100+
99101 it ( 'should use differ to add/remove/move rows' , ( ) => {
100102 // Each row receives an attribute 'initialIndex' the element's original place
101103 getRows ( tableElement ) . forEach ( ( row : Element , index : number ) => {
@@ -129,26 +131,57 @@ describe('CdkTable', () => {
129131 expect ( changedRows [ 2 ] . getAttribute ( 'initialIndex' ) ) . toBe ( null ) ;
130132 } ) ;
131133
132- // TODO(andrewseguin): Add test for dynamic classes on header/rows
133-
134134 it ( 'should match the right table content with dynamic data' , ( ) => {
135135 const initialDataLength = dataSource . data . length ;
136136 expect ( dataSource . data . length ) . toBe ( 3 ) ;
137- const headerContent = [ 'Column A' , 'Column B' , 'Column C' ] ;
138137
139- const initialTableContent = [ headerContent ] ;
140- dataSource . data . forEach ( rowData => initialTableContent . push ( [ rowData . a , rowData . b , rowData . c ] ) ) ;
141- expect ( tableElement ) . toMatchTableContent ( initialTableContent ) ;
138+ let data = dataSource . data ;
139+ expect ( tableElement ) . toMatchTableContent ( [
140+ [ 'Column A' , 'Column B' , 'Column C' ] ,
141+ [ data [ 0 ] . a , data [ 0 ] . b , data [ 0 ] . c ] ,
142+ [ data [ 1 ] . a , data [ 1 ] . b , data [ 1 ] . c ] ,
143+ [ data [ 2 ] . a , data [ 2 ] . b , data [ 2 ] . c ] ,
144+ ] ) ;
142145
143146 // Add data to the table and recreate what the rendered output should be.
144147 dataSource . addData ( ) ;
145148 expect ( dataSource . data . length ) . toBe ( initialDataLength + 1 ) ; // Make sure data was added
149+
150+ data = dataSource . data ;
151+ expect ( tableElement ) . toMatchTableContent ( [
152+ [ 'Column A' , 'Column B' , 'Column C' ] ,
153+ [ data [ 0 ] . a , data [ 0 ] . b , data [ 0 ] . c ] ,
154+ [ data [ 1 ] . a , data [ 1 ] . b , data [ 1 ] . c ] ,
155+ [ data [ 2 ] . a , data [ 2 ] . b , data [ 2 ] . c ] ,
156+ [ data [ 3 ] . a , data [ 3 ] . b , data [ 3 ] . c ] ,
157+ ] ) ;
158+ } ) ;
159+
160+ it ( 'should be able to dynamically change the columns for header and rows' , ( ) => {
161+ expect ( dataSource . data . length ) . toBe ( 3 ) ;
162+
163+ let data = dataSource . data ;
164+ expect ( tableElement ) . toMatchTableContent ( [
165+ [ 'Column A' , 'Column B' , 'Column C' ] ,
166+ [ data [ 0 ] . a , data [ 0 ] . b , data [ 0 ] . c ] ,
167+ [ data [ 1 ] . a , data [ 1 ] . b , data [ 1 ] . c ] ,
168+ [ data [ 2 ] . a , data [ 2 ] . b , data [ 2 ] . c ] ,
169+ ] ) ;
170+
171+ // Remove column_a and swap column_b/column_c.
172+ component . columnsToRender = [ 'column_c' , 'column_b' ] ;
146173 fixture . detectChanges ( ) ;
147- fixture . detectChanges ( ) ;
148174
149- const changedTableContent = [ headerContent ] ;
150- dataSource . data . forEach ( rowData => changedTableContent . push ( [ rowData . a , rowData . b , rowData . c ] ) ) ;
151- expect ( tableElement ) . toMatchTableContent ( changedTableContent ) ;
175+ let changedTableContent = [ [ 'Column C' , 'Column B' ] ] ;
176+ dataSource . data . forEach ( rowData => changedTableContent . push ( [ rowData . c , rowData . b ] ) ) ;
177+
178+ data = dataSource . data ;
179+ expect ( tableElement ) . toMatchTableContent ( [
180+ [ 'Column C' , 'Column B' ] ,
181+ [ data [ 0 ] . c , data [ 0 ] . b ] ,
182+ [ data [ 1 ] . c , data [ 1 ] . b ] ,
183+ [ data [ 2 ] . c , data [ 2 ] . b ] ,
184+ ] ) ;
152185 } ) ;
153186} ) ;
154187
@@ -172,11 +205,8 @@ class FakeDataSource extends DataSource<TestData> {
172205
173206 connect ( collectionViewer : CollectionViewer ) : Observable < TestData [ ] > {
174207 this . isConnected = true ;
175- const streams = [ collectionViewer . viewChanged , this . _dataChange ] ;
176- return Observable . combineLatest ( streams ) . map ( ( results : any [ ] ) => {
177- const [ view , data ] = results ;
178- return data ;
179- } ) ;
208+ const streams = [ this . _dataChange , collectionViewer . viewChange ] ;
209+ return Observable . combineLatest ( streams ) . map ( ( [ data ] ) => data ) ;
180210 }
181211
182212 addData ( ) {
0 commit comments