@@ -423,6 +423,53 @@ describe("draggable.vue when initialized with list", () => {
423423 } ) ;
424424 } ) ;
425425
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+
426473 describe ( "when initiating a drag operation" , ( ) => {
427474 let evt ;
428475 beforeEach ( ( ) => {
0 commit comments