feat: 🎸 #47
This commit is contained in:
53
tests/unit/__snapshots__/slot.spec.js.snap
Normal file
53
tests/unit/__snapshots__/slot.spec.js.snap
Normal file
@@ -0,0 +1,53 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Slot render slot correctly 1`] = `
|
||||
<div class="vtl">
|
||||
<!---->
|
||||
<div class="">
|
||||
<div class="vtl">
|
||||
<div id="t1" class="vtl-node vtl-tree-node">
|
||||
<div class="vtl-border vtl-up"></div>
|
||||
<div draggable="true" class="vtl-node-main"><span class="vtl-caret vtl-is-small"><i class="vtl-icon vtl-icon-caret-down"></i></span> <span><span class="tree-node-icon icon">❀</span></span>
|
||||
<div class="vtl-node-content">
|
||||
Node 1
|
||||
</div>
|
||||
<div class="vtl-operation" style="display: none;"><span title="add tree node"><span class="add-tree-node-icon">📂</span></span> <span title="add leaf node"><span class="icon">+</span></span> <span title="edit"><span class="icon">📃</span></span> <span title="delete"><span></span></span></div>
|
||||
</div>
|
||||
<div class="vtl-border vtl-bottom"></div>
|
||||
</div>
|
||||
<div class="vtl-tree-margin">
|
||||
<div class="vtl">
|
||||
<div id="t11" class="vtl-node vtl-leaf-node">
|
||||
<div class="vtl-border vtl-up"></div>
|
||||
<div draggable="true" class="vtl-node-main">
|
||||
<!----> <span><span class="icon">🍃</span></span>
|
||||
<div class="vtl-node-content">
|
||||
Node 1-1
|
||||
</div>
|
||||
<div class="vtl-operation" style="display: none;">
|
||||
<!---->
|
||||
<!----> <span title="edit"><span class="icon">📃</span></span> <span title="delete"><span class="del-node-icon">✂️</span></span></div>
|
||||
</div>
|
||||
<!---->
|
||||
</div>
|
||||
<!---->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="vtl">
|
||||
<div id="t2" class="vtl-node vtl-tree-node">
|
||||
<div class="vtl-border vtl-up"></div>
|
||||
<div draggable="true" class="vtl-node-main">
|
||||
<!----> <span><span class="tree-node-icon icon">❀</span></span>
|
||||
<div class="vtl-node-content">
|
||||
Node 2
|
||||
</div>
|
||||
<div class="vtl-operation" style="display: none;"><span title="add tree node"><span class="add-tree-node-icon">📂</span></span> <span title="add leaf node"><span class="icon">+</span></span> <span title="edit"><span class="icon">📃</span></span> <span title="delete"><span class="del-node-icon">✂️</span></span></div>
|
||||
</div>
|
||||
<!---->
|
||||
</div>
|
||||
<!---->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
79
tests/unit/slot.spec.js
Normal file
79
tests/unit/slot.spec.js
Normal file
@@ -0,0 +1,79 @@
|
||||
import Vue from 'vue'
|
||||
import {mount} from '@vue/test-utils'
|
||||
import {Tree, VueTreeList} from '@/index'
|
||||
|
||||
describe('Slot', () => {
|
||||
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 2',
|
||||
id: 't2',
|
||||
pid: 0
|
||||
}
|
||||
])
|
||||
wrapper = mount(VueTreeList, {
|
||||
propsData: {model: new Tree([])},
|
||||
scopedSlots: {
|
||||
addTreeNodeIcon() {
|
||||
return <span class="add-tree-node-icon">📂</span>
|
||||
},
|
||||
addLeafNodeIcon() {
|
||||
return <span class="icon">+</span>
|
||||
},
|
||||
editNodeIcon() {
|
||||
return <span class="icon">📃</span>
|
||||
},
|
||||
delNodeIcon(slotProps) {
|
||||
return (slotProps.model.isLeaf || !slotProps.model.children) ? <span class="del-node-icon">✂️</span> : <span />
|
||||
},
|
||||
leafNodeIcon() {
|
||||
return <span class="icon">🍃</span>
|
||||
},
|
||||
treeNodeIcon(slotProps) {
|
||||
return <span class="tree-node-icon icon">{ slotProps.model.children && slotProps.model.children.length > 0 && !slotProps.expanded ? '🌲' : '❀' }</span>
|
||||
}
|
||||
}
|
||||
})
|
||||
wrapper.setProps({model: tree})
|
||||
})
|
||||
|
||||
it('render slot correctly', () => {
|
||||
expect(wrapper).toMatchSnapshot()
|
||||
})
|
||||
|
||||
it('toggle tree node show different icon', done => {
|
||||
const $caretDown = wrapper.find('.vtl-icon-caret-down')
|
||||
expect(wrapper.find('#t1 .tree-node-icon').text()).toBe('❀')
|
||||
$caretDown.trigger('click')
|
||||
Vue.nextTick(() => {
|
||||
expect(wrapper.exists('.vtl-icon-caret-right')).toBe(true)
|
||||
expect(wrapper.find('#t1 .tree-node-icon').text()).toBe('🌲')
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
it('dont show ✂️ after add child ', done => {
|
||||
const $addTreeNodeIcon = wrapper.find('#t2 .add-tree-node-icon')
|
||||
expect(wrapper.find('#t2 .del-node-icon').exists()).toBe(true)
|
||||
$addTreeNodeIcon.trigger('click')
|
||||
Vue.nextTick(() => {
|
||||
expect(wrapper.find('#t2 .del-node-icon').exists()).toBe(false)
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
Reference in New Issue
Block a user