@@ -33,6 +33,7 @@ import {DataTableComponent} from './data_table_component';
33
33
[headers]="headers"
34
34
[data]="data"
35
35
[sortingInfo]="sortingInfo"
36
+ [smoothingEnabled]="smoothingEnabled"
36
37
(sortDataBy)="sortDataBy($event)"
37
38
(orderColumns)="orderColumns($event)"
38
39
></tb-data-table>
@@ -45,6 +46,7 @@ class TestableComponent {
45
46
@Input ( ) headers ! : ColumnHeaders [ ] ;
46
47
@Input ( ) data ! : SelectedStepRunData [ ] ;
47
48
@Input ( ) sortingInfo ! : SortingInfo ;
49
+ @Input ( ) smoothingEnabled ! : boolean ;
48
50
49
51
@Input ( ) sortDataBy ! : ( sortingInfo : SortingInfo ) => void ;
50
52
@Input ( ) orderColumns ! : ( newOrder : ColumnHeaders [ ] ) => void ;
@@ -64,6 +66,7 @@ describe('data table', () => {
64
66
headers ?: ColumnHeaders [ ] ;
65
67
data ?: SelectedStepRunData [ ] ;
66
68
sortingInfo ?: SortingInfo ;
69
+ smoothingEnabled ?: boolean ;
67
70
} ) : ComponentFixture < TestableComponent > {
68
71
const fixture = TestBed . createComponent ( TestableComponent ) ;
69
72
@@ -74,6 +77,9 @@ describe('data table', () => {
74
77
order : SortingOrder . ASCENDING ,
75
78
} ;
76
79
80
+ fixture . componentInstance . smoothingEnabled =
81
+ input . smoothingEnabled === undefined ? true : input . smoothingEnabled ;
82
+
77
83
sortDataBySpy = jasmine . createSpy ( ) ;
78
84
fixture . componentInstance . sortDataBy = sortDataBySpy ;
79
85
@@ -105,6 +111,7 @@ describe('data table', () => {
105
111
ColumnHeaders . MIN_VALUE ,
106
112
ColumnHeaders . MAX_VALUE ,
107
113
ColumnHeaders . PERCENTAGE_CHANGE ,
114
+ ColumnHeaders . SMOOTHED ,
108
115
] ,
109
116
} ) ;
110
117
fixture . detectChanges ( ) ;
@@ -134,6 +141,7 @@ describe('data table', () => {
134
141
. queryAll ( By . css ( 'mat-icon' ) ) [ 0 ]
135
142
. nativeElement . getAttribute ( 'svgIcon' )
136
143
) . toBe ( 'change_history_24px' ) ;
144
+ expect ( headerElements [ 13 ] . nativeElement . innerText ) . toBe ( 'Smoothed' ) ;
137
145
} ) ;
138
146
139
147
it ( 'displays data in order' , ( ) => {
@@ -151,6 +159,7 @@ describe('data table', () => {
151
159
ColumnHeaders . MIN_VALUE ,
152
160
ColumnHeaders . MAX_VALUE ,
153
161
ColumnHeaders . PERCENTAGE_CHANGE ,
162
+ ColumnHeaders . SMOOTHED ,
154
163
] ,
155
164
data : [
156
165
{
@@ -167,6 +176,7 @@ describe('data table', () => {
167
176
MIN_VALUE : 1 ,
168
177
MAX_VALUE : 500 ,
169
178
PERCENTAGE_CHANGE : 0.3 ,
179
+ SMOOTHED : 2 ,
170
180
} ,
171
181
] ,
172
182
} ) ;
@@ -199,6 +209,7 @@ describe('data table', () => {
199
209
. queryAll ( By . css ( 'mat-icon' ) ) [ 0 ]
200
210
. nativeElement . getAttribute ( 'svgIcon' )
201
211
) . toBe ( 'arrow_upward_24px' ) ;
212
+ expect ( dataElements [ 13 ] . nativeElement . innerText ) . toBe ( '2' ) ;
202
213
} ) ;
203
214
204
215
it ( 'displays nothing when no data is available' , ( ) => {
@@ -400,4 +411,41 @@ describe('data table', () => {
400
411
ColumnHeaders . RUN ,
401
412
] ) ;
402
413
} ) ;
414
+
415
+ it ( 'does not display Smoothed column when smoothingEnabled is false' , ( ) => {
416
+ const fixture = createComponent ( {
417
+ headers : [
418
+ ColumnHeaders . VALUE ,
419
+ ColumnHeaders . RUN ,
420
+ ColumnHeaders . SMOOTHED ,
421
+ ColumnHeaders . STEP ,
422
+ ] ,
423
+ data : [
424
+ {
425
+ id : 'someid' ,
426
+ RUN : 'run name' ,
427
+ VALUE : 3 ,
428
+ STEP : 1 ,
429
+ SMOOTHED : 2 ,
430
+ } ,
431
+ ] ,
432
+ smoothingEnabled : false ,
433
+ } ) ;
434
+ fixture . detectChanges ( ) ;
435
+ const headerElements = fixture . debugElement . queryAll ( By . css ( 'th' ) ) ;
436
+ const dataElements = fixture . debugElement . queryAll ( By . css ( 'td' ) ) ;
437
+
438
+ // The first header should always be blank as it is the run color column.
439
+ expect ( headerElements [ 0 ] . nativeElement . innerText ) . toBe ( '' ) ;
440
+ expect ( headerElements [ 1 ] . nativeElement . innerText ) . toBe ( 'Value' ) ;
441
+ expect ( headerElements [ 2 ] . nativeElement . innerText ) . toBe ( 'Run' ) ;
442
+ expect ( headerElements [ 3 ] . nativeElement . innerText ) . toBe ( 'Step' ) ;
443
+ expect ( headerElements . length ) . toBe ( 4 ) ;
444
+
445
+ expect ( dataElements [ 0 ] . nativeElement . innerText ) . toBe ( '' ) ;
446
+ expect ( dataElements [ 1 ] . nativeElement . innerText ) . toBe ( '3' ) ;
447
+ expect ( dataElements [ 2 ] . nativeElement . innerText ) . toBe ( 'run name' ) ;
448
+ expect ( dataElements [ 3 ] . nativeElement . innerText ) . toBe ( '1' ) ;
449
+ expect ( dataElements . length ) . toBe ( 4 ) ;
450
+ } ) ;
403
451
} ) ;
0 commit comments