@@ -28,6 +28,7 @@ import { ReactiveFormsModule } from '@angular/forms';
28
28
import { MatCardModule } from '@angular/material/card' ;
29
29
import { MatFormFieldModule } from '@angular/material/form-field' ;
30
30
import { MatInputModule } from '@angular/material/input' ;
31
+ import { MatIconModule } from '@angular/material/icon' ;
31
32
import { MatTableModule } from '@angular/material/table' ;
32
33
import { BrowserDynamicTestingModule } from '@angular/platform-browser-dynamic/testing' ;
33
34
import { NoopAnimationsModule } from '@angular/platform-browser/animations' ;
@@ -115,6 +116,7 @@ describe('Table', () => {
115
116
MatCardModule ,
116
117
NoopAnimationsModule ,
117
118
MatFormFieldModule ,
119
+ MatIconModule ,
118
120
MatInputModule ,
119
121
ReactiveFormsModule ,
120
122
FlexLayoutModule ,
@@ -147,11 +149,11 @@ describe('Table', () => {
147
149
component . ngOnInit ( ) ;
148
150
fixture . whenStable ( ) . then ( ( ) => {
149
151
// 2 columns
150
- expect ( fixture . nativeElement . querySelectorAll ( 'th' ) . length ) . toBe ( 2 ) ;
152
+ expect ( fixture . nativeElement . querySelectorAll ( 'th' ) . length ) . toBe ( 3 ) ;
151
153
// 1 head row and 2 data rows
152
154
expect ( fixture . nativeElement . querySelectorAll ( 'tr' ) . length ) . toBe ( 1 + 2 ) ;
153
155
// 4 data entries
154
- expect ( fixture . nativeElement . querySelectorAll ( 'td' ) . length ) . toBe ( 4 ) ;
156
+ expect ( fixture . nativeElement . querySelectorAll ( 'td' ) . length ) . toBe ( 6 ) ;
155
157
} ) ;
156
158
} ) ) ;
157
159
it ( 'renders object array on path' , async ( ( ) => {
@@ -171,11 +173,11 @@ describe('Table', () => {
171
173
component . ngOnInit ( ) ;
172
174
fixture . whenStable ( ) . then ( ( ) => {
173
175
// 2 columns
174
- expect ( fixture . nativeElement . querySelectorAll ( 'th' ) . length ) . toBe ( 2 ) ;
176
+ expect ( fixture . nativeElement . querySelectorAll ( 'th' ) . length ) . toBe ( 3 ) ;
175
177
// 1 head row and 2 data rows
176
178
expect ( fixture . nativeElement . querySelectorAll ( 'tr' ) . length ) . toBe ( 1 + 2 ) ;
177
179
// 4 data entries
178
- expect ( fixture . nativeElement . querySelectorAll ( 'td' ) . length ) . toBe ( 4 ) ;
180
+ expect ( fixture . nativeElement . querySelectorAll ( 'td' ) . length ) . toBe ( 6 ) ;
179
181
} ) ;
180
182
} ) ) ;
181
183
@@ -190,11 +192,11 @@ describe('Table', () => {
190
192
component . ngOnInit ( ) ;
191
193
fixture . whenStable ( ) . then ( ( ) => {
192
194
// 1 column
193
- expect ( fixture . nativeElement . querySelectorAll ( 'th' ) . length ) . toBe ( 1 ) ;
195
+ expect ( fixture . nativeElement . querySelectorAll ( 'th' ) . length ) . toBe ( 2 ) ;
194
196
// 1 head row and 2 data rows
195
197
expect ( fixture . nativeElement . querySelectorAll ( 'tr' ) . length ) . toBe ( 1 + 2 ) ;
196
198
// 2 data entries
197
- expect ( fixture . nativeElement . querySelectorAll ( 'td' ) . length ) . toBe ( 2 ) ;
199
+ expect ( fixture . nativeElement . querySelectorAll ( 'td' ) . length ) . toBe ( 4 ) ;
198
200
} ) ;
199
201
} ) ) ;
200
202
it ( 'renders simple array on path' , async ( ( ) => {
@@ -208,11 +210,11 @@ describe('Table', () => {
208
210
component . ngOnInit ( ) ;
209
211
fixture . whenStable ( ) . then ( ( ) => {
210
212
// 1 columns
211
- expect ( fixture . nativeElement . querySelectorAll ( 'th' ) . length ) . toBe ( 1 ) ;
213
+ expect ( fixture . nativeElement . querySelectorAll ( 'th' ) . length ) . toBe ( 2 ) ;
212
214
// 1 head row and 2 data rows
213
215
expect ( fixture . nativeElement . querySelectorAll ( 'tr' ) . length ) . toBe ( 1 + 2 ) ;
214
216
// 2 data entries
215
- expect ( fixture . nativeElement . querySelectorAll ( 'td' ) . length ) . toBe ( 2 ) ;
217
+ expect ( fixture . nativeElement . querySelectorAll ( 'td' ) . length ) . toBe ( 4 ) ;
216
218
} ) ;
217
219
} ) ) ;
218
220
@@ -246,8 +248,83 @@ describe('Table', () => {
246
248
fixture . detectChanges ( ) ;
247
249
component . ngOnInit ( ) ;
248
250
fixture . whenStable ( ) . then ( ( ) => {
251
+ component . add ( ) ;
249
252
expect ( fixture . nativeElement . querySelectorAll ( 'input' ) . length ) . toBe ( 2 ) ;
250
253
expect ( fixture . nativeElement . querySelector ( 'input' ) . disabled ) . toBeFalsy ( ) ;
251
254
} ) ;
252
255
} ) ) ;
256
+
257
+ it ( 'renderer handles removing of rows' , async ( ( ) => {
258
+ setupMockStore ( fixture , {
259
+ uischema : uischema1 ,
260
+ schema : schema_object1 ,
261
+ data : [
262
+ { foo : 'foo_1' , bar : 'bar_1' } ,
263
+ { foo : 'foo_2' , bar : 'bar_2' }
264
+ ] ,
265
+ renderers
266
+ } ) ;
267
+
268
+ fixture . detectChanges ( ) ;
269
+ component . ngOnInit ( ) ;
270
+ component . remove ( 0 ) ;
271
+ component . remove ( 0 ) ;
272
+ fixture . detectChanges ( ) ;
273
+
274
+ fixture . whenStable ( ) . then ( ( ) => {
275
+
276
+ // 1 row
277
+ expect ( fixture . nativeElement . querySelectorAll ( 'tr' ) . length ) . toBe ( 1 + 0 ) ;
278
+ } ) ;
279
+ } ) ) ;
280
+
281
+ it ( 'renderer handles adding of rows' , async ( ( ) => {
282
+ setupMockStore ( fixture , {
283
+ uischema : uischema1 ,
284
+ schema : schema_object1 ,
285
+ data : [
286
+ { foo : 'foo_1' , bar : 'bar_1' } ,
287
+ { foo : 'foo_2' , bar : 'bar_2' }
288
+ ] ,
289
+ renderers
290
+ } ) ;
291
+
292
+ fixture . detectChanges ( ) ;
293
+ component . ngOnInit ( ) ;
294
+
295
+ component . add ( ) ;
296
+ component . add ( ) ;
297
+ fixture . detectChanges ( ) ;
298
+
299
+ fixture . whenStable ( ) . then ( ( ) => {
300
+ // 3 row
301
+ expect ( fixture . nativeElement . querySelectorAll ( 'tr' ) . length ) . toBe ( 1 + 4 ) ;
302
+
303
+ } ) ;
304
+ } ) ) ;
305
+
306
+ it ( 'when disabled doesnt render `add` nor `remove` icons' , async ( ( ) => {
307
+ setupMockStore ( fixture , {
308
+ uischema : uischema1 ,
309
+ schema : schema_object1 ,
310
+ data : [
311
+ { foo : 'foo_1' , bar : 'bar_1' } ,
312
+ { foo : 'foo_2' , bar : 'bar_2' }
313
+ ] ,
314
+ renderers
315
+ } ) ;
316
+ component . disabled = true ;
317
+ fixture . detectChanges ( ) ;
318
+
319
+ component . ngOnInit ( ) ;
320
+ fixture . whenStable ( ) . then ( ( ) => {
321
+ // 2 columns
322
+ expect ( fixture . nativeElement . querySelectorAll ( 'th' ) . length ) . toBe ( 2 ) ;
323
+ // 2 rows
324
+ expect ( fixture . nativeElement . querySelectorAll ( 'tr' ) . length ) . toBe ( 1 + 2 ) ;
325
+ // 2 data entries
326
+ expect ( fixture . nativeElement . querySelectorAll ( 'td' ) . length ) . toBe ( 4 ) ;
327
+ } ) ;
328
+ } ) ) ;
329
+
253
330
} ) ;
0 commit comments