93 lines
2.3 KiB
JavaScript
93 lines
2.3 KiB
JavaScript
import Vue from 'vue'
|
|
import { mount } from '@vue/test-utils'
|
|
import { Tree, VueTreeList } from '@/index'
|
|
|
|
describe('Drag', () => {
|
|
let wrapper
|
|
|
|
beforeEach(() => {
|
|
const tree = new Tree([
|
|
{
|
|
name: 'Node 1',
|
|
id: 't1',
|
|
pid: 0,
|
|
children: [
|
|
{
|
|
name: 'Node 1-1',
|
|
id: 't11',
|
|
isLeaf: true,
|
|
pid: 't1'
|
|
},
|
|
{
|
|
name: 'Node 1-2',
|
|
id: 't12',
|
|
pid: 't1'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
name: 'Node 2',
|
|
id: 't2',
|
|
pid: 0
|
|
},
|
|
{
|
|
name: 'Node 3',
|
|
id: 't3',
|
|
pid: 0
|
|
}
|
|
])
|
|
wrapper = mount(VueTreeList, { propsData: { model: new Tree([]) } })
|
|
wrapper.setProps({ model: tree })
|
|
})
|
|
|
|
it('drag before', done => {
|
|
const $tree2 = wrapper.find('#t2 .vtl-node-main')
|
|
const $tree1Up = wrapper.find('#t1 .vtl-up')
|
|
$tree2.trigger('dragstart', { dataTransfer: { setData: () => {} } })
|
|
$tree1Up.trigger('drop')
|
|
Vue.nextTick(() => {
|
|
expect(wrapper.find('.vtl-node').attributes('id')).toBe('t2')
|
|
done()
|
|
})
|
|
})
|
|
|
|
it('drag after', done => {
|
|
const $tree3 = wrapper.find('#t3 .vtl-node-main')
|
|
const $tree1Bottom = wrapper.find('#t1 .vtl-bottom')
|
|
$tree3.trigger('dragstart', { dataTransfer: { setData: () => {} } })
|
|
$tree1Bottom.trigger('drop')
|
|
Vue.nextTick(() => {
|
|
expect(
|
|
wrapper
|
|
.findAll('.vtl-tree-node')
|
|
.at(2)
|
|
.attributes('id')
|
|
).toBe('t3')
|
|
done()
|
|
})
|
|
})
|
|
|
|
it('drag into', done => {
|
|
const $tree3 = wrapper.find('#t3 .vtl-node-main')
|
|
const $tree1 = wrapper.find('#t1 .vtl-node-main')
|
|
$tree3.trigger('dragstart', { dataTransfer: { setData: () => {} } })
|
|
$tree1.trigger('drop')
|
|
Vue.nextTick(() => {
|
|
expect(wrapper.find('#t1 + .vtl-tree-margin .vtl-node').attributes('id')).toBe('t3')
|
|
done()
|
|
})
|
|
})
|
|
|
|
it('cannot drag ancestor into child', done => {
|
|
const snapshot = wrapper.html()
|
|
const $tree1 = wrapper.find('#t1 .vtl-node-main')
|
|
const $tree1Child = wrapper.find('#t12 .vtl-node-main')
|
|
$tree1.trigger('dragstart', { dataTransfer: { setData: () => {} } })
|
|
$tree1Child.trigger('drop')
|
|
Vue.nextTick(() => {
|
|
expect(wrapper.html()).toBe(snapshot)
|
|
done()
|
|
})
|
|
})
|
|
})
|