Skip to content

Commit b339197

Browse files
Improving coverage
1 parent facb2f2 commit b339197

File tree

1 file changed

+73
-2
lines changed

1 file changed

+73
-2
lines changed

tests/unit/vuedraggable.spec.js

Lines changed: 73 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1405,7 +1405,7 @@ describe("draggable.vue when initialized with a transition group", () => {
14051405
});
14061406
});
14071407

1408-
describe("when using only footer slot", () => {
1408+
describe("when using only footer slot with an empty list", () => {
14091409
beforeEach(async () => {
14101410
resetMocks();
14111411

@@ -1429,7 +1429,7 @@ describe("when using only footer slot", () => {
14291429
expectHTML(wrapper, expectedDOM);
14301430
});
14311431

1432-
describe("when add is called on an empty list with", () => {
1432+
describe("when add is called", () => {
14331433
let newItem;
14341434
const expectedDOMAfterUpdate = `<ul><li data-draggable="true">1</li><footer>I am the footer</footer></ul>`;
14351435
beforeEach(async () => {
@@ -1475,3 +1475,74 @@ describe("when using only footer slot", () => {
14751475
});
14761476
});
14771477
});
1478+
1479+
describe("when using only footer slot with an none-empty list", () => {
1480+
beforeEach(async () => {
1481+
resetMocks();
1482+
1483+
wrapper = mount(draggable, {
1484+
props: {
1485+
tag: "ul",
1486+
list: ["first"],
1487+
itemKey: k => k
1488+
},
1489+
slots: {
1490+
item: ({ element }) => h("li", null, element),
1491+
footer: () => h("footer", null, "I am the footer")
1492+
}
1493+
});
1494+
vm = wrapper.vm;
1495+
element = wrapper.element;
1496+
});
1497+
1498+
it("renders correctly", () => {
1499+
const expectedDOM = `<ul><li data-draggable="true">first</li><footer>I am the footer</footer></ul>`;
1500+
expectHTML(wrapper, expectedDOM);
1501+
});
1502+
1503+
describe("when add is called", () => {
1504+
let newItem;
1505+
const expectedDOMAfterUpdate = `<ul><li data-draggable="true">first</li><li data-draggable="true">last</li><footer>I am the footer</footer></ul>`;
1506+
beforeEach(async () => {
1507+
await nextTick();
1508+
1509+
newItem = document.createElement("li");
1510+
const newContent = document.createTextNode("1");
1511+
newItem.appendChild(newContent);
1512+
newItem._underlying_vm_ = "last";
1513+
const last = element.children[1];
1514+
element.insertBefore(newItem, last);
1515+
1516+
const add = getEvent("onAdd");
1517+
add({
1518+
item: newItem,
1519+
newIndex: 1
1520+
});
1521+
});
1522+
1523+
it("DOM changes should be performed", async () => {
1524+
await nextTick();
1525+
expectHTML(wrapper, expectedDOMAfterUpdate);
1526+
});
1527+
1528+
it("list should be updated", async () => {
1529+
await nextTick();
1530+
expect(vm.list).toEqual(["first","last"]);
1531+
});
1532+
1533+
it("sends a update event", async () => {
1534+
await nextTick();
1535+
const expectedEvt = {
1536+
item: newItem,
1537+
newIndex: 1
1538+
};
1539+
expect(wrapper.emitted().add).toEqual([[expectedEvt]]);
1540+
});
1541+
1542+
it("sends a change event", async () => {
1543+
await nextTick();
1544+
const expectedEvt = { added: { element: "last", newIndex: 1 } };
1545+
expect(wrapper.emitted().change).toEqual([[expectedEvt]]);
1546+
});
1547+
});
1548+
});

0 commit comments

Comments
 (0)