Skip to content

Commit 1d26f3c

Browse files
Improving tests
1 parent b339197 commit 1d26f3c

File tree

4 files changed

+67
-14
lines changed

4 files changed

+67
-14
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<template>
2+
<div id="root">
3+
<draggable :list="array" tag="FragmentRoot" :item-key="key => key">
4+
<template #item="{element, index }">
5+
<div>{{ element }}-{{ index }}</div>
6+
</template>
7+
</draggable>
8+
</div>
9+
</template>
10+
<script>
11+
import draggable from "@/vuedraggable";
12+
13+
export default {
14+
components: {
15+
draggable
16+
},
17+
data() {
18+
return {
19+
array: ["a", "b", "c"]
20+
};
21+
}
22+
};
23+
</script>

tests/unit/helper/FakeFunctionalComponent.js

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<template>
2+
<slot></slot>
3+
</template>
4+
<script>
5+
import draggable from "@/vuedraggable";
6+
7+
export default {};
8+
</script>

tests/unit/vuedraggable.spec.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import { nextTick, h } from "vue";
1111

1212
import Fake from "./helper/FakeRoot.js";
1313
import DraggableOption from "./helper/DraggableOption.vue";
14+
import DraggableWithFragment from "./helper/DraggableWithFragment.vue";
15+
import FragmentRoot from "./helper/FragmentComponent";
1416

1517
let wrapper;
1618
let vm;
@@ -1546,3 +1548,37 @@ describe("when using only footer slot with an none-empty list", () => {
15461548
});
15471549
});
15481550
});
1551+
1552+
describe("when using a fragment component as tag", () => {
1553+
beforeEach(async () => {
1554+
resetMocks();
1555+
1556+
wrapper = mount(DraggableWithFragment, {
1557+
global: {
1558+
components: {
1559+
FragmentRoot
1560+
}
1561+
}
1562+
});
1563+
vm = wrapper.vm;
1564+
element = wrapper.element;
1565+
});
1566+
1567+
it("renders correctly", () => {
1568+
const expectedDOM = `<div id="root"><div data-draggable="true">a-0</div><div data-draggable="true">b-1</div><div data-draggable="true">c-2</div></div>`;
1569+
expectHTML(wrapper, expectedDOM);
1570+
});
1571+
1572+
it("creates sortable instance with parent node", () => {
1573+
expect(Sortable.mock.calls.length).toBe(1);
1574+
const parameters = Sortable.mock.calls[0];
1575+
expect(parameters[0]).toBe(element);
1576+
});
1577+
1578+
it("sets nodes keys", () => {
1579+
const keys = [0, 1, 2]
1580+
.map(index => element.children.item(index))
1581+
.map(el => el.__vnode.key);
1582+
expect(keys).toEqual(["a", "b", "c"]);
1583+
});
1584+
});

0 commit comments

Comments
 (0)