@@ -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
} ) ) ;
@@ -108,6 +111,16 @@ describe('CdkTable', () => {
108
111
expect ( fixture . nativeElement . querySelector ( 'cdk-table' ) . getAttribute ( 'role' ) ) . toBe ( 'treegrid' ) ;
109
112
} ) ;
110
113
114
+ it ( 'should throw an error if two column definitions have the same name' , ( ) => {
115
+ expect ( ( ) => TestBed . createComponent ( DuplicateColumnDefNameCdkTableApp ) . detectChanges ( ) )
116
+ . toThrowError ( getTableDuplicateColumnNameError ( 'column_a' ) . message ) ;
117
+ } ) ;
118
+
119
+ it ( 'should throw an error if a column definition is requested but not defined' , ( ) => {
120
+ expect ( ( ) => TestBed . createComponent ( MissingColumnDefCdkTableApp ) . detectChanges ( ) )
121
+ . toThrowError ( getTableUnknownColumnError ( 'column_a' ) . message ) ;
122
+ } ) ;
123
+
111
124
it ( 'should be able to dynamically add/remove column definitions' , ( ) => {
112
125
const dynamicColumnDefFixture = TestBed . createComponent ( DynamicColumnDefinitionsCdkTableApp ) ;
113
126
dynamicColumnDefFixture . detectChanges ( ) ;
@@ -669,6 +682,45 @@ class CustomRoleCdkTableApp {
669
682
@ViewChild ( CdkTable ) table : CdkTable < TestData > ;
670
683
}
671
684
685
+ @Component ( {
686
+ template : `
687
+ <cdk-table [dataSource]="dataSource">
688
+ <ng-container cdkColumnDef="column_a">
689
+ <cdk-header-cell *cdkHeaderCellDef> Column A</cdk-header-cell>
690
+ <cdk-cell *cdkCellDef="let row"> {{row.a}}</cdk-cell>
691
+ </ng-container>
692
+
693
+ <ng-container cdkColumnDef="column_a">
694
+ <cdk-header-cell *cdkHeaderCellDef> Column A</cdk-header-cell>
695
+ <cdk-cell *cdkCellDef="let row"> {{row.a}}</cdk-cell>
696
+ </ng-container>
697
+
698
+ <cdk-header-row *cdkHeaderRowDef="['column_a']"></cdk-header-row>
699
+ <cdk-row *cdkRowDef="let row; columns: ['column_a']"></cdk-row>
700
+ </cdk-table>
701
+ `
702
+ } )
703
+ class DuplicateColumnDefNameCdkTableApp {
704
+ dataSource : FakeDataSource = new FakeDataSource ( ) ;
705
+ }
706
+
707
+ @Component ( {
708
+ template : `
709
+ <cdk-table [dataSource]="dataSource">
710
+ <ng-container cdkColumnDef="column_b">
711
+ <cdk-header-cell *cdkHeaderCellDef> Column A</cdk-header-cell>
712
+ <cdk-cell *cdkCellDef="let row"> {{row.a}}</cdk-cell>
713
+ </ng-container>
714
+
715
+ <cdk-header-row *cdkHeaderRowDef="['column_a']"></cdk-header-row>
716
+ <cdk-row *cdkRowDef="let row; columns: ['column_a']"></cdk-row>
717
+ </cdk-table>
718
+ `
719
+ } )
720
+ class MissingColumnDefCdkTableApp {
721
+ dataSource : FakeDataSource = new FakeDataSource ( ) ;
722
+ }
723
+
672
724
@Component ( {
673
725
template : `
674
726
<cdk-table [dataSource]="dataSource">
0 commit comments