html.spec.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import Vue from 'vue'
  2. describe('Directive v-html', () => {
  3. it('should render html', () => {
  4. const vm = new Vue({
  5. template: '<div v-html="a"></div>',
  6. data: { a: 'hello' }
  7. }).$mount()
  8. expect(vm.$el.innerHTML).toBe('hello')
  9. })
  10. it('should encode html entities', () => {
  11. const vm = new Vue({
  12. template: '<div v-html="a"></div>',
  13. data: { a: '<span></span>' }
  14. }).$mount()
  15. expect(vm.$el.innerHTML).toBe('<span></span>')
  16. })
  17. it('should support all value types', done => {
  18. const vm = new Vue({
  19. template: '<div v-html="a"></div>',
  20. data: { a: false }
  21. }).$mount()
  22. waitForUpdate(() => {
  23. expect(vm.$el.innerHTML).toBe('false')
  24. vm.a = []
  25. }).then(() => {
  26. expect(vm.$el.innerHTML).toBe('[]')
  27. vm.a = {}
  28. }).then(() => {
  29. expect(vm.$el.innerHTML).toBe('{}')
  30. vm.a = 123
  31. }).then(() => {
  32. expect(vm.$el.innerHTML).toBe('123')
  33. vm.a = 0
  34. }).then(() => {
  35. expect(vm.$el.innerHTML).toBe('0')
  36. vm.a = ' '
  37. }).then(() => {
  38. expect(vm.$el.innerHTML).toBe(' ')
  39. vm.a = ' '
  40. }).then(() => {
  41. expect(vm.$el.innerHTML).toBe(' ')
  42. vm.a = null
  43. }).then(() => {
  44. expect(vm.$el.innerHTML).toBe('')
  45. vm.a = undefined
  46. }).then(() => {
  47. expect(vm.$el.innerHTML).toBe('')
  48. }).then(done)
  49. })
  50. })