@@ -423,6 +423,53 @@ describe("draggable.vue when initialized with list", () => {
423
423
} ) ;
424
424
} ) ;
425
425
426
+ describe ( "when add is called on an empty list" , ( ) => {
427
+ let newItem ;
428
+ const expectedDOMAfterUpdate = `<div><header></header><div data-draggable="true">e</div><footer></footer></div>` ;
429
+ beforeEach ( async ( ) => {
430
+ await nextTick ( ) ;
431
+
432
+ vm . list . splice ( 0 , 3 ) ;
433
+ newItem = document . createElement ( "div" ) ;
434
+ const newContent = document . createTextNode ( "d" ) ;
435
+ newItem . appendChild ( newContent ) ;
436
+ newItem . _underlying_vm_ = "e" ;
437
+ const last = element . children [ 2 ] ;
438
+ element . insertBefore ( newItem , last ) ;
439
+
440
+ const add = getEvent ( "onAdd" ) ;
441
+ add ( {
442
+ item : newItem ,
443
+ newIndex : 0
444
+ } ) ;
445
+ } ) ;
446
+
447
+ it ( "DOM changes should be performed" , async ( ) => {
448
+ await nextTick ( ) ;
449
+ expectHTML ( wrapper , expectedDOMAfterUpdate ) ;
450
+ } ) ;
451
+
452
+ it ( "list should be updated" , async ( ) => {
453
+ await nextTick ( ) ;
454
+ expect ( vm . list ) . toEqual ( [ "e" ] ) ;
455
+ } ) ;
456
+
457
+ it ( "sends a update event" , async ( ) => {
458
+ await nextTick ( ) ;
459
+ const expectedEvt = {
460
+ item : newItem ,
461
+ newIndex : 0
462
+ } ;
463
+ expect ( wrapper . emitted ( ) . add ) . toEqual ( [ [ expectedEvt ] ] ) ;
464
+ } ) ;
465
+
466
+ it ( "sends a change event" , async ( ) => {
467
+ await nextTick ( ) ;
468
+ const expectedEvt = { added : { element : "e" , newIndex : 0 } } ;
469
+ expect ( wrapper . emitted ( ) . change ) . toEqual ( [ [ expectedEvt ] ] ) ;
470
+ } ) ;
471
+ } ) ;
472
+
426
473
describe ( "when initiating a drag operation" , ( ) => {
427
474
let evt ;
428
475
beforeEach ( ( ) => {
0 commit comments