attr_spec.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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('xlink', function () {
  25. var xlinkNS = 'http://www.w3.org/1999/xlink'
  26. dir.arg = 'xlink:special'
  27. dir.update('ok')
  28. expect(el.getAttributeNS(xlinkNS, 'special')).toBe('ok')
  29. dir.update('again')
  30. expect(el.getAttributeNS(xlinkNS, 'special')).toBe('again')
  31. dir.update(null)
  32. expect(el.hasAttributeNS(xlinkNS, 'special')).toBe(false)
  33. })
  34. it('object and xlink', function () {
  35. var xlinkNS = 'http://www.w3.org/1999/xlink'
  36. var obj1 = {special:'ok', test:'again'}
  37. var obj2 = {'xlink:href': '#', test: 'ok', empty:null}
  38. dir.update(obj2)
  39. expect(el.getAttributeNS(xlinkNS, 'href')).toBe('#')
  40. expect(el.getAttribute('test')).toBe('ok')
  41. expect(el.hasAttribute('empty')).toBe(false)
  42. dir.update(obj1)
  43. expect(el.hasAttributeNS(xlinkNS, 'href')).toBe(false)
  44. expect(el.getAttribute('special')).toBe('ok')
  45. expect(el.getAttribute('test')).toBe('again')
  46. obj1.test = null
  47. dir.update(obj1)
  48. expect(el.hasAttribute('test')).toBe(false)
  49. dir.update(obj2)
  50. expect(el.getAttributeNS(xlinkNS, 'href')).toBe('#')
  51. })
  52. })
  53. }