attr_spec.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. var _ = require('../../../../src/util')
  2. var def = require('../../../../src/directives/attr')
  3. if (_.inBrowser) {
  4. describe('v-attr', function () {
  5. var el, dir
  6. beforeEach(function () {
  7. el = document.createElement('div')
  8. dir = {el: el}
  9. _.extend(dir, def)
  10. })
  11. it('normal attr', function () {
  12. dir.arg = 'test'
  13. dir.update('ok')
  14. expect(el.getAttribute('test')).toBe('ok')
  15. dir.update('again')
  16. expect(el.getAttribute('test')).toBe('again')
  17. dir.update(null)
  18. expect(el.hasAttribute('test')).toBe(false)
  19. dir.update(false)
  20. expect(el.hasAttribute('test')).toBe(false)
  21. dir.update(0)
  22. expect(el.getAttribute('test')).toBe('0')
  23. })
  24. it('should set property for input value', function () {
  25. dir.el = document.createElement('input')
  26. dir.arg = 'value'
  27. dir.update('what')
  28. expect(dir.el.hasAttribute('value')).toBe(false)
  29. expect(dir.el.value).toBe('what')
  30. dir.el = document.createElement('input')
  31. dir.el.type = 'checkbox'
  32. dir.arg = 'checked'
  33. expect(dir.el.checked).toBe(false)
  34. dir.update(true)
  35. expect(dir.el.checked).toBe(true)
  36. })
  37. it('xlink', function () {
  38. var xlinkNS = 'http://www.w3.org/1999/xlink'
  39. dir.arg = 'xlink:special'
  40. dir.update('ok')
  41. expect(el.getAttributeNS(xlinkNS, 'special')).toBe('ok')
  42. dir.update('again')
  43. expect(el.getAttributeNS(xlinkNS, 'special')).toBe('again')
  44. dir.update(null)
  45. expect(el.hasAttributeNS(xlinkNS, 'special')).toBe(false)
  46. })
  47. it('object and xlink', function () {
  48. var xlinkNS = 'http://www.w3.org/1999/xlink'
  49. var obj1 = {special: 'ok', test: 'again'}
  50. var obj2 = {'xlink:href': '#', test: 'ok', empty: null}
  51. dir.update(obj2)
  52. expect(el.getAttributeNS(xlinkNS, 'href')).toBe('#')
  53. expect(el.getAttribute('test')).toBe('ok')
  54. expect(el.hasAttribute('empty')).toBe(false)
  55. dir.update(obj1)
  56. expect(el.hasAttributeNS(xlinkNS, 'href')).toBe(false)
  57. expect(el.getAttribute('special')).toBe('ok')
  58. expect(el.getAttribute('test')).toBe('again')
  59. obj1.test = null
  60. dir.update(obj1)
  61. expect(el.hasAttribute('test')).toBe(false)
  62. dir.update(obj2)
  63. expect(el.getAttributeNS(xlinkNS, 'href')).toBe('#')
  64. })
  65. })
  66. }