operation.spec.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import Vue from 'vue'
  2. import { mount } from '@vue/test-utils'
  3. import { Tree, VueTreeList } from '@/index'
  4. describe('Operation', () => {
  5. let wrapper
  6. beforeEach(() => {
  7. const tree = new Tree([
  8. {
  9. name: 'Node 1',
  10. id: 't1',
  11. pid: 0,
  12. children: [
  13. {
  14. name: 'Node 1-1',
  15. id: 't11',
  16. isLeaf: true,
  17. pid: 't1'
  18. }
  19. ]
  20. },
  21. {
  22. name: 'Node 2',
  23. id: 't2',
  24. pid: 0
  25. }
  26. ])
  27. wrapper = mount(VueTreeList, { propsData: { model: new Tree([]) } })
  28. wrapper.setProps({ model: tree })
  29. })
  30. it('delete leaf node', done => {
  31. const $node11Trash = wrapper.find('#t11 [title="delete"]')
  32. $node11Trash.trigger('click')
  33. wrapper.emitted('delete-node')[0][0].remove()
  34. Vue.nextTick(() => {
  35. expect(wrapper.findAll('.vtl-node').length).toBe(2)
  36. done()
  37. })
  38. })
  39. it('delete tree node', done => {
  40. const $node11Trash = wrapper.find('#t1 [title="delete"]')
  41. $node11Trash.trigger('click')
  42. wrapper.emitted('delete-node')[0][0].remove()
  43. Vue.nextTick(() => {
  44. expect(wrapper.findAll('.vtl-node').length).toBe(1)
  45. done()
  46. })
  47. })
  48. it('add leaf node', done => {
  49. const $node1AddLeafNode = wrapper.find('#t1 [title="Add Leaf Node"]')
  50. $node1AddLeafNode.trigger('click')
  51. Vue.nextTick(() => {
  52. expect(wrapper.findAll('.vtl-leaf-node').length).toBe(2)
  53. done()
  54. })
  55. })
  56. it('add tree node', done => {
  57. const $node1AddTreeNode = wrapper.find('#t1 [title="Add Tree Node"]')
  58. $node1AddTreeNode.trigger('click')
  59. Vue.nextTick(() => {
  60. expect(wrapper.findAll('.vtl-tree-node').length).toBe(3)
  61. done()
  62. })
  63. })
  64. it('change node name', done => {
  65. const $node1Edit = wrapper.find('#t1 [title="edit"]')
  66. $node1Edit.trigger('click')
  67. Vue.nextTick(() => {
  68. const $input = wrapper.find('#t1 .vtl-input')
  69. $input.element.value = 'New Node 1'
  70. $input.trigger('input')
  71. var event = new KeyboardEvent('keyup', { keyCode: 13 })
  72. window.dispatchEvent(event)
  73. Vue.nextTick(() => {
  74. expect(wrapper.find('#t1').text()).toBe('New Node 1')
  75. done()
  76. })
  77. })
  78. })
  79. })