Skip to content

Commit ea7ca2d

Browse files
Testing clone with pull function
1 parent 622ebb3 commit ea7ca2d

File tree

1 file changed

+67
-1
lines changed

1 file changed

+67
-1
lines changed

tests/unit/vuedraggable.spec.js

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,6 @@ describe("draggable.vue when initialized with list", () => {
580580
})
581581
});
582582

583-
584583
describe("when initiating a drag operation in clone context", () => {
585584
let evt;
586585
beforeEach(() => {
@@ -609,6 +608,73 @@ describe("draggable.vue when initialized with list", () => {
609608
expect(vm.isCloning).toBe(true);
610609
})
611610

611+
describe("when remove is called", () => {
612+
beforeEach(() => {
613+
var clone = item.cloneNode(true);
614+
wrapper.element.insertBefore(clone, item);
615+
wrapper.element.removeChild(item);
616+
const remove = getEvent("onRemove");
617+
remove({
618+
item,
619+
clone,
620+
oldIndex: 1
621+
});
622+
})
623+
624+
it("DOM changes should be reverted", async () => {
625+
await Vue.nextTick();
626+
expect(wrapper.html()).toEqual(initialRenderRaw);
627+
})
628+
629+
it("list should be not updated", async () => {
630+
await Vue.nextTick();
631+
expect(vm.list).toEqual(["a", "b", "c"]);
632+
})
633+
634+
it("sends a remove event", async () => {
635+
await Vue.nextTick();
636+
expect(wrapper.emitted().remove).toEqual([[{
637+
item,
638+
clone: item,
639+
oldIndex: 1
640+
}]]);
641+
})
642+
643+
it("does not send a change event", async () => {
644+
await Vue.nextTick();
645+
expect(wrapper.emitted().change).toBeUndefined();
646+
})
647+
})
648+
});
649+
650+
describe("when initiating a drag operation in clone context using a pull function", () => {
651+
let evt;
652+
beforeEach(() => {
653+
resetMocks();
654+
wrapper = shallowMount(draggable, {
655+
attachToDocument: true,
656+
propsData: {
657+
list: items
658+
},
659+
attrs: {
660+
group: { pull: () => "clone" }
661+
},
662+
slots: {
663+
default: items.map(item => `<div>${item}</div>`),
664+
}
665+
});
666+
vm = wrapper.vm;
667+
element = wrapper.element;
668+
item = element.children[1];
669+
evt = { item };
670+
const start = getEvent("onStart");
671+
start(evt);
672+
});
673+
674+
it("sets the isCloning flag", () => {
675+
expect(vm.isCloning).toBe(true);
676+
})
677+
612678
describe("when remove is called", () => {
613679
beforeEach(() => {
614680
var clone = item.cloneNode(true);

0 commit comments

Comments
 (0)