@@ -92,6 +92,10 @@ describe('uiScroll Paddings spec.', () => {
92
92
expect ( rowElement . innerHTML ) . toBe ( content ) ;
93
93
}
94
94
95
+ function checkRowBack ( viewport , row , content ) {
96
+ checkRow ( viewport , row , content , true ) ;
97
+ }
98
+
95
99
it ( '\nshould set up properly' , ( ) => {
96
100
runTest ( scrollSettings ,
97
101
( ) => {
@@ -121,7 +125,7 @@ describe('uiScroll Paddings spec.', () => {
121
125
! outside && scrollTop ( viewport ) ;
122
126
scrollBottom ( viewport , MAX ) ;
123
127
expect ( viewport . scrollTop ( ) ) . toBe ( itemsCount * itemHeight - viewportHeight - itemHeight ) ;
124
- checkRow ( viewport , 1 , ( itemsCount - 1 ) + ': item' + ( itemsCount - 1 ) , true ) ;
128
+ checkRowBack ( viewport , 1 , ( itemsCount - 1 ) + ': item' + ( itemsCount - 1 ) ) ;
125
129
}
126
130
)
127
131
)
@@ -148,7 +152,7 @@ describe('uiScroll Paddings spec.', () => {
148
152
! outside && scrollTop ( viewport ) ;
149
153
scrollBottom ( viewport , MAX ) ;
150
154
expect ( viewport . scrollTop ( ) ) . toBe ( itemsCount * itemHeight - viewportHeight - itemHeight * 2 ) ;
151
- checkRow ( viewport , 1 , ( itemsCount - 2 ) + ': item' + ( itemsCount - 2 ) , true ) ;
155
+ checkRowBack ( viewport , 1 , ( itemsCount - 2 ) + ': item' + ( itemsCount - 2 ) ) ;
152
156
}
153
157
)
154
158
)
@@ -173,8 +177,8 @@ describe('uiScroll Paddings spec.', () => {
173
177
! outside && scrollTop ( viewport ) ;
174
178
scrollBottom ( viewport , MAX ) ;
175
179
expect ( viewport . scrollTop ( ) ) . toBe ( itemsCount * itemHeight - viewportHeight - itemHeight ) ;
176
- checkRow ( viewport , 1 , ( itemsCount - 1 ) + ': item' + itemsCount , true ) ;
177
- checkRow ( viewport , 2 , ( itemsCount - 2 ) + ': item' + ( itemsCount - 2 ) , true ) ;
180
+ checkRowBack ( viewport , 1 , ( itemsCount - 1 ) + ': item' + itemsCount ) ;
181
+ checkRowBack ( viewport , 2 , ( itemsCount - 2 ) + ': item' + ( itemsCount - 2 ) ) ;
178
182
}
179
183
)
180
184
)
@@ -250,7 +254,7 @@ describe('uiScroll Paddings spec.', () => {
250
254
outside && expect ( getTopPaddingHeight ( viewport ) ) . toBe ( initialTopHeight - itemHeight * 1 ) ;
251
255
252
256
! outside && scrollBottom ( viewport , MAX ) ;
253
- expect ( getBottomPaddingHeight ( viewport ) ) . toBe ( 0 ) ; // todo dhilt : needs to be fixed
257
+ expect ( getBottomPaddingHeight ( viewport ) ) . toBe ( 0 ) ;
254
258
255
259
scrollTop ( viewport ) ;
256
260
expect ( getTopPaddingHeight ( viewport ) ) . toBe ( 0 ) ;
@@ -282,10 +286,10 @@ describe('uiScroll Paddings spec.', () => {
282
286
scrollBottom ( viewport ) ;
283
287
expect ( viewport . scrollTop ( ) ) . toBe ( _scrollTop + newItems . length * itemHeight ) ;
284
288
285
- checkRow ( viewport , 1 , ( datasource . max - 0 ) + ': ' + newItems [ 2 ] , true ) ;
286
- checkRow ( viewport , 2 , ( datasource . max - 1 ) + ': ' + newItems [ 1 ] , true ) ;
287
- checkRow ( viewport , 3 , ( datasource . max - 2 ) + ': ' + newItems [ 0 ] , true ) ;
288
- checkRow ( viewport , 4 , oldMax + ': item' + oldMax , true ) ;
289
+ checkRowBack ( viewport , 1 , ( datasource . max - 0 ) + ': ' + newItems [ 2 ] ) ;
290
+ checkRowBack ( viewport , 2 , ( datasource . max - 1 ) + ': ' + newItems [ 1 ] ) ;
291
+ checkRowBack ( viewport , 3 , ( datasource . max - 2 ) + ': ' + newItems [ 0 ] ) ;
292
+ checkRowBack ( viewport , 4 , oldMax + ': item' + oldMax ) ;
289
293
}
290
294
) ;
291
295
} ) ;
@@ -310,13 +314,59 @@ describe('uiScroll Paddings spec.', () => {
310
314
scrollBottom ( viewport ) ;
311
315
expect ( viewport . scrollTop ( ) ) . toBe ( _scrollTop + newItems . length * itemHeight ) ;
312
316
313
- checkRow ( viewport , 1 , ( datasource . max - 0 ) + ': ' + newItems [ 2 ] , true ) ;
314
- checkRow ( viewport , 2 , ( datasource . max - 1 ) + ': ' + newItems [ 1 ] , true ) ;
315
- checkRow ( viewport , 3 , ( datasource . max - 2 ) + ': ' + newItems [ 0 ] , true ) ;
316
- checkRow ( viewport , 4 , oldMax + ': item' + oldMax , true ) ;
317
+ checkRowBack ( viewport , 1 , ( datasource . max - 0 ) + ': ' + newItems [ 2 ] ) ;
318
+ checkRowBack ( viewport , 2 , ( datasource . max - 1 ) + ': ' + newItems [ 1 ] ) ;
319
+ checkRowBack ( viewport , 3 , ( datasource . max - 2 ) + ': ' + newItems [ 0 ] ) ;
320
+ checkRowBack ( viewport , 4 , oldMax + ': item' + oldMax ) ;
317
321
}
318
322
) ;
319
323
} ) ;
320
324
} ) ;
321
325
326
+
327
+ describe ( 'Removing items via indexed-based applyUpdates when neither BOF nor EOF are reached\n' , ( ) => {
328
+
329
+ [ true , false ] . forEach ( userIndicies =>
330
+ it ( 'should remove first row' + appendTitle ( true , userIndicies ) , ( ) =>
331
+ runTest ( Object . assign ( { } , scrollSettings , { startIndex : 12 } ) ,
332
+ ( viewport , scope ) => {
333
+ userIndicies && setUserIndicies ( ) ;
334
+
335
+ removeItem ( datasource , 2 ) ;
336
+ scope . adapter . applyUpdates ( 2 , [ ] ) ;
337
+
338
+ scrollBottom ( viewport ) ;
339
+ expect ( getBottomPaddingHeight ( viewport ) ) . toBe ( 0 ) ;
340
+ checkRowBack ( viewport , 1 , '29: item30' ) ;
341
+
342
+ scrollTop ( viewport ) ;
343
+ expect ( getTopPaddingHeight ( viewport ) ) . toBe ( 0 ) ;
344
+ checkRow ( viewport , 1 , '1: item1' ) ;
345
+ checkRow ( viewport , 2 , '2: item3' ) ;
346
+ }
347
+ )
348
+ )
349
+ ) ;
350
+
351
+ [ true , false ] . forEach ( userIndicies =>
352
+ it ( 'should remove last row' + appendTitle ( true , userIndicies ) , ( ) =>
353
+ runTest ( Object . assign ( { } , scrollSettings , { startIndex : 12 } ) ,
354
+ ( viewport , scope ) => {
355
+ userIndicies && setUserIndicies ( ) ;
356
+
357
+ removeItem ( datasource , 19 ) ;
358
+ scope . adapter . applyUpdates ( 19 , [ ] ) ;
359
+
360
+ scrollBottom ( viewport ) ;
361
+ expect ( getBottomPaddingHeight ( viewport ) ) . toBe ( 0 ) ;
362
+ checkRowBack ( viewport , 1 , '29: item30' ) ;
363
+
364
+ scrollTop ( viewport ) ;
365
+ expect ( getTopPaddingHeight ( viewport ) ) . toBe ( 0 ) ;
366
+ }
367
+ )
368
+ )
369
+ ) ;
370
+ } ) ;
371
+
322
372
} ) ;
0 commit comments