text.spec.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import Vue from 'vue'
  2. describe('Directive v-text', () => {
  3. it('should render text', () => {
  4. const vm = new Vue({
  5. template: '<div v-text="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-text="a"></div>',
  13. data: { a: '<foo>' }
  14. }).$mount()
  15. expect(vm.$el.innerHTML).toBe('&lt;foo&gt;')
  16. })
  17. it('should support all value types', done => {
  18. const vm = new Vue({
  19. template: '<div v-text="a"></div>',
  20. data: { a: false }
  21. }).$mount()
  22. waitForUpdate(() => {
  23. expect(vm.$el.innerHTML).toBe('false')
  24. vm.a = []
  25. })
  26. .then(() => {
  27. expect(vm.$el.innerHTML).toBe('[]')
  28. vm.a = {}
  29. })
  30. .then(() => {
  31. expect(vm.$el.innerHTML).toBe('{}')
  32. vm.a = {
  33. toString() {
  34. return 'foo'
  35. }
  36. }
  37. })
  38. .then(() => {
  39. expect(vm.$el.innerHTML).toBe('foo')
  40. vm.a = {
  41. toJSON() {
  42. return { foo: 'bar' }
  43. }
  44. }
  45. })
  46. .then(() => {
  47. expect(vm.$el.innerHTML).toBe('{\n "foo": "bar"\n}')
  48. vm.a = 123
  49. })
  50. .then(() => {
  51. expect(vm.$el.innerHTML).toBe('123')
  52. vm.a = 0
  53. })
  54. .then(() => {
  55. expect(vm.$el.innerHTML).toBe('0')
  56. vm.a = ' '
  57. })
  58. .then(() => {
  59. expect(vm.$el.innerHTML).toBe(' ')
  60. vm.a = ' '
  61. })
  62. .then(() => {
  63. expect(vm.$el.innerHTML).toBe(' ')
  64. vm.a = null
  65. })
  66. .then(() => {
  67. expect(vm.$el.innerHTML).toBe('')
  68. vm.a = undefined
  69. })
  70. .then(() => {
  71. expect(vm.$el.innerHTML).toBe('')
  72. })
  73. .then(done)
  74. })
  75. })