dom-props.spec.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { patch } from 'web/runtime/patch'
  2. import VNode from 'core/vdom/vnode'
  3. describe('vdom domProps module', () => {
  4. it('should create an element with domProps', () => {
  5. const vnode = new VNode('a', { domProps: { src: 'http://localhost/' }})
  6. const elm = patch(null, vnode)
  7. expect(elm.src).toBe('http://localhost/')
  8. })
  9. it('should change the elements domProps', () => {
  10. const vnode1 = new VNode('a', { domProps: { src: 'http://localhost/' }})
  11. const vnode2 = new VNode('a', { domProps: { src: 'http://vuejs.org/' }})
  12. patch(null, vnode1)
  13. const elm = patch(vnode1, vnode2)
  14. expect(elm.src).toBe('http://vuejs.org/')
  15. })
  16. it('should remove the elements domProps', () => {
  17. const vnode1 = new VNode('a', { domProps: { src: 'http://localhost/' }})
  18. const vnode2 = new VNode('a', { domProps: {}})
  19. patch(null, vnode1)
  20. const elm = patch(vnode1, vnode2)
  21. expect(elm.src).toBeUndefined()
  22. })
  23. it('should initialize the elements value to zero', () => {
  24. const vnode = new VNode('input', { domProps: { value: 0 }})
  25. const elm = patch(null, vnode)
  26. expect(elm.value).toBe('0')
  27. })
  28. it('should save raw value on element', () => {
  29. const value = {}
  30. const vnode = new VNode('input', { domProps: { value }})
  31. const elm = patch(null, vnode)
  32. expect(elm._value).toBe(value)
  33. })
  34. it('should discard vnode children if the node has innerHTML or textContent as a prop', () => {
  35. const vnode = new VNode('div', { domProps: { innerHTML: 'hi' }}, [
  36. new VNode('span'), new VNode('span')
  37. ])
  38. const elm = patch(null, vnode)
  39. expect(elm.innerHTML).toBe('hi')
  40. expect(vnode.children.length).toBe(0)
  41. const vnode2 = new VNode('div', { domProps: { textContent: 'hi' }}, [
  42. new VNode('span'), new VNode('span')
  43. ])
  44. const elm2 = patch(null, vnode2)
  45. expect(elm2.textContent).toBe('hi')
  46. expect(vnode2.children.length).toBe(0)
  47. })
  48. })