@@ -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 ( ) ;
@@ -653,6 +666,45 @@ class CustomRoleCdkTableApp {
653
666
@ViewChild ( CdkTable ) table : CdkTable < TestData > ;
654
667
}
655
668
669
+ @Component ( {
670
+ template : `
671
+ <cdk-table [dataSource]="dataSource">
672
+ <ng-container cdkColumnDef="column_a">
673
+ <cdk-header-cell *cdkHeaderCellDef> Column A</cdk-header-cell>
674
+ <cdk-cell *cdkCellDef="let row"> {{row.a}}</cdk-cell>
675
+ </ng-container>
676
+
677
+ <ng-container cdkColumnDef="column_a">
678
+ <cdk-header-cell *cdkHeaderCellDef> Column A</cdk-header-cell>
679
+ <cdk-cell *cdkCellDef="let row"> {{row.a}}</cdk-cell>
680
+ </ng-container>
681
+
682
+ <cdk-header-row *cdkHeaderRowDef="['column_a']"></cdk-header-row>
683
+ <cdk-row *cdkRowDef="let row; columns: ['column_a']"></cdk-row>
684
+ </cdk-table>
685
+ `
686
+ } )
687
+ class DuplicateColumnDefNameCdkTableApp {
688
+ dataSource : FakeDataSource = new FakeDataSource ( ) ;
689
+ }
690
+
691
+ @Component ( {
692
+ template : `
693
+ <cdk-table [dataSource]="dataSource">
694
+ <ng-container cdkColumnDef="column_b">
695
+ <cdk-header-cell *cdkHeaderCellDef> Column A</cdk-header-cell>
696
+ <cdk-cell *cdkCellDef="let row"> {{row.a}}</cdk-cell>
697
+ </ng-container>
698
+
699
+ <cdk-header-row *cdkHeaderRowDef="['column_a']"></cdk-header-row>
700
+ <cdk-row *cdkRowDef="let row; columns: ['column_a']"></cdk-row>
701
+ </cdk-table>
702
+ `
703
+ } )
704
+ class MissingColumnDefCdkTableApp {
705
+ dataSource : FakeDataSource = new FakeDataSource ( ) ;
706
+ }
707
+
656
708
@Component ( {
657
709
template : `
658
710
<cdk-table [dataSource]="dataSource">
0 commit comments