@@ -13,6 +13,7 @@ let wrapper;
13
13
let vm ;
14
14
let props ;
15
15
let items ;
16
+ let item ;
16
17
let element ;
17
18
let input ;
18
19
const initialRender = "<div><header></header><div>a</div><div>b</div><div>c</div><footer></footer></div>" ;
@@ -212,9 +213,51 @@ describe("draggable.vue when initialized with list", () => {
212
213
}
213
214
) ;
214
215
216
+ describe ( "when add is called" , ( ) => {
217
+ let newItem ;
218
+ beforeEach ( async ( ) => {
219
+ await Vue . nextTick ( ) ;
220
+ newItem = document . createElement ( "div" ) ;
221
+ const newContent = document . createTextNode ( "d" ) ;
222
+ newItem . appendChild ( newContent ) ;
223
+ newItem . _underlying_vm_ = "d" ;
224
+ const last = element . children [ 3 ] ;
225
+ element . insertBefore ( newItem , last ) ;
226
+ const add = getEvent ( "onAdd" ) ;
227
+ add ( {
228
+ item : newItem ,
229
+ newIndex : 3
230
+ } ) ;
231
+ } )
232
+
233
+ it ( "DOM changes should be reverted" , async ( ) => {
234
+ await Vue . nextTick ( ) ;
235
+ expect ( wrapper . html ( ) ) . toEqual ( initialRender ) ;
236
+ } )
237
+
238
+ it ( "list should be updated" , async ( ) => {
239
+ await Vue . nextTick ( ) ;
240
+ expect ( vm . list ) . toEqual ( [ "a" , "b" , "d" , "c" , ] ) ;
241
+ } )
242
+
243
+ it ( "sends a update event" , async ( ) => {
244
+ await Vue . nextTick ( ) ;
245
+ const expectedEvt = {
246
+ item : newItem ,
247
+ newIndex : 3
248
+ } ;
249
+ expect ( wrapper . emitted ( ) . add ) . toEqual ( [ [ expectedEvt ] ] ) ;
250
+ } )
251
+
252
+ it ( "sends a change event" , async ( ) => {
253
+ await Vue . nextTick ( ) ;
254
+ const expectedEvt = { added : { element : "d" , newIndex : 2 } } ;
255
+ expect ( wrapper . emitted ( ) . change ) . toEqual ( [ [ expectedEvt ] ] ) ;
256
+ } )
257
+ } ) ;
258
+
215
259
describe ( "when initiating a drag operation" , ( ) => {
216
260
let evt ;
217
- let item ;
218
261
beforeEach ( ( ) => {
219
262
item = element . children [ 2 ] ;
220
263
evt = { item } ;
@@ -312,10 +355,10 @@ describe("draggable.vue when initialized with list", () => {
312
355
} )
313
356
} ) ;
314
357
315
- describe ( "when sending DragEnd" , ( ) => {
358
+ describe ( "when sending DragEnd" , ( ) => {
316
359
let endEvt ;
317
360
beforeEach ( ( ) => {
318
- endEvt = {
361
+ endEvt = {
319
362
data : "data"
320
363
} ;
321
364
const onEnd = getEvent ( "onEnd" ) ;
@@ -336,7 +379,7 @@ describe("draggable.vue when initialized with value", () => {
336
379
items = [ "a" , "b" , "c" ] ;
337
380
wrapper = shallowMount ( draggable , {
338
381
attachToDocument : true ,
339
- propsData :{
382
+ propsData : {
340
383
value : items
341
384
} ,
342
385
slots : {
@@ -350,7 +393,6 @@ describe("draggable.vue when initialized with value", () => {
350
393
351
394
describe ( "when initiating a drag operation" , ( ) => {
352
395
let evt ;
353
- let item ;
354
396
beforeEach ( ( ) => {
355
397
item = element . children [ 1 ] ;
356
398
evt = { item } ;
@@ -450,10 +492,10 @@ describe("draggable.vue when initialized with value", () => {
450
492
} )
451
493
} ) ;
452
494
453
- describe ( "when sending DragEnd" , ( ) => {
495
+ describe ( "when sending DragEnd" , ( ) => {
454
496
let endEvt ;
455
497
beforeEach ( ( ) => {
456
- endEvt = {
498
+ endEvt = {
457
499
data : "data"
458
500
} ;
459
501
const onEnd = getEvent ( "onEnd" ) ;
0 commit comments