@@ -7,6 +7,7 @@ import {Observable} from 'rxjs/Observable';
7
7
import { combineLatest } from 'rxjs/observable/combineLatest' ;
8
8
import { CdkTableModule } from './index' ;
9
9
import { map } from 'rxjs/operator/map' ;
10
+ import { getTableDuplicateColumnNameError , getTableUnknownColumnError } from './table-errors' ;
10
11
11
12
describe ( 'CdkTable' , ( ) => {
12
13
let fixture : ComponentFixture < SimpleCdkTableApp > ;
@@ -26,6 +27,8 @@ describe('CdkTable', () => {
26
27
TrackByCdkTableApp ,
27
28
DynamicColumnDefinitionsCdkTableApp ,
28
29
RowContextCdkTableApp ,
30
+ DuplicateColumnDefNameCdkTableApp ,
31
+ MissingColumnDefCdkTableApp ,
29
32
] ,
30
33
} ) . compileComponents ( ) ;
31
34
} ) ) ;
@@ -109,6 +112,16 @@ describe('CdkTable', () => {
109
112
expect ( fixture . nativeElement . querySelector ( 'cdk-table' ) . getAttribute ( 'role' ) ) . toBe ( 'treegrid' ) ;
110
113
} ) ;
111
114
115
+ it ( 'should throw an error if two column definitions have the same name' , ( ) => {
116
+ expect ( ( ) => TestBed . createComponent ( DuplicateColumnDefNameCdkTableApp ) . detectChanges ( ) )
117
+ . toThrowError ( getTableDuplicateColumnNameError ( 'column_a' ) . message ) ;
118
+ } ) ;
119
+
120
+ it ( 'should throw an error if a column definition is requested but not defined' , ( ) => {
121
+ expect ( ( ) => TestBed . createComponent ( MissingColumnDefCdkTableApp ) . detectChanges ( ) )
122
+ . toThrowError ( getTableUnknownColumnError ( 'column_a' ) . message ) ;
123
+ } ) ;
124
+
112
125
it ( 'should be able to dynamically add/remove column definitions' , ( ) => {
113
126
const dynamicColumnDefFixture = TestBed . createComponent ( DynamicColumnDefinitionsCdkTableApp ) ;
114
127
dynamicColumnDefFixture . detectChanges ( ) ;
@@ -666,6 +679,45 @@ class CustomRoleCdkTableApp {
666
679
@ViewChild ( CdkTable ) table : CdkTable < TestData > ;
667
680
}
668
681
682
+ @Component ( {
683
+ template : `
684
+ <cdk-table [dataSource]="dataSource">
685
+ <ng-container cdkColumnDef="column_a">
686
+ <cdk-header-cell *cdkHeaderCellDef> Column A</cdk-header-cell>
687
+ <cdk-cell *cdkCellDef="let row"> {{row.a}}</cdk-cell>
688
+ </ng-container>
689
+
690
+ <ng-container cdkColumnDef="column_a">
691
+ <cdk-header-cell *cdkHeaderCellDef> Column A</cdk-header-cell>
692
+ <cdk-cell *cdkCellDef="let row"> {{row.a}}</cdk-cell>
693
+ </ng-container>
694
+
695
+ <cdk-header-row *cdkHeaderRowDef="['column_a']"></cdk-header-row>
696
+ <cdk-row *cdkRowDef="let row; columns: ['column_a']"></cdk-row>
697
+ </cdk-table>
698
+ `
699
+ } )
700
+ class DuplicateColumnDefNameCdkTableApp {
701
+ dataSource : FakeDataSource = new FakeDataSource ( ) ;
702
+ }
703
+
704
+ @Component ( {
705
+ template : `
706
+ <cdk-table [dataSource]="dataSource">
707
+ <ng-container cdkColumnDef="column_b">
708
+ <cdk-header-cell *cdkHeaderCellDef> Column A</cdk-header-cell>
709
+ <cdk-cell *cdkCellDef="let row"> {{row.a}}</cdk-cell>
710
+ </ng-container>
711
+
712
+ <cdk-header-row *cdkHeaderRowDef="['column_a']"></cdk-header-row>
713
+ <cdk-row *cdkRowDef="let row; columns: ['column_a']"></cdk-row>
714
+ </cdk-table>
715
+ `
716
+ } )
717
+ class MissingColumnDefCdkTableApp {
718
+ dataSource : FakeDataSource = new FakeDataSource ( ) ;
719
+ }
720
+
669
721
@Component ( {
670
722
template : `
671
723
<cdk-table [dataSource]="dataSource">
0 commit comments