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 📂 }, addLeafNodeIcon() { return }, editNodeIcon() { return 📃 }, delNodeIcon(slotProps) { return (slotProps.model.isLeaf || !slotProps.model.children) ? ✂️ : }, leafNodeIcon() { return 🍃 }, treeNodeIcon(slotProps) { return { slotProps.model.children && slotProps.model.children.length > 0 && !slotProps.expanded ? '🌲' : '❀' } } } }) 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() }) }) })