bind_spec.js 2.0 KB

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