html.spec.js 1.4 KB

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