delimiters.spec.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import Vue from 'vue'
  2. describe('Delimiters', () => {
  3. it('default delimiters should work', () => {
  4. const vm = new Vue({
  5. data: {
  6. a: 1
  7. },
  8. template: '<div>{{ a }}</div>'
  9. }).$mount()
  10. expect(vm.$el.textContent).toEqual('1')
  11. })
  12. it('custom delimiters should work', () => {
  13. const vm = new Vue({
  14. delimiters: ['[[', ']]'],
  15. template: '<div>[[ a ]]</div>',
  16. data: {
  17. a: 1
  18. }
  19. }).$mount()
  20. expect(vm.$el.textContent).toEqual('1')
  21. })
  22. it('default delimiters should be ignored when custom delimiters defined', () => {
  23. const vm = new Vue({
  24. delimiters: ['[[', ']]'],
  25. template: '<div>{{ a }}</div>',
  26. data: {
  27. a: 1
  28. }
  29. }).$mount()
  30. expect(vm.$el.textContent).toEqual('{{ a }}')
  31. })
  32. it('delimiters should only affect vm', () => {
  33. const Component = Vue.extend({
  34. data: function () {
  35. return {
  36. b: 2
  37. }
  38. },
  39. template: '<span>[[ b ]]</span>'
  40. })
  41. const vm = new Vue({
  42. delimiters: ['[[', ']]'],
  43. template: '<div>[[ a ]] - <test-component></test-component></div>',
  44. data: {
  45. a: 2
  46. },
  47. components: {
  48. 'test-component': Component
  49. }
  50. }).$mount()
  51. expect(vm.$el.textContent).toEqual('2 - [[ b ]]')
  52. })
  53. it('delimiters defined globally should work on all vms', () => {
  54. Vue.options.delimiters = ['[[', ']]']
  55. const Component = Vue.extend({
  56. template: '<span>[[ a ]]</span>',
  57. data: function () {
  58. return {
  59. a: 2
  60. }
  61. }
  62. })
  63. const vm = new Vue({
  64. data: {
  65. b: 1
  66. },
  67. template: '<div>[[ b ]] - <test-component></test-component></div>',
  68. components: {
  69. 'test-component': Component
  70. }
  71. }).$mount()
  72. expect(vm.$el.textContent).toEqual('1 - 2')
  73. // restore default options
  74. delete Vue.options.delimiters
  75. })
  76. it('component specific delimiters should override global delimiters', () => {
  77. Vue.options.delimiters = ['[[', ']]']
  78. const Component = Vue.extend({
  79. delimiters: ['@{{', '}}'],
  80. template: '<span>@{{ a }}</span>',
  81. data: function () {
  82. return {
  83. a: 2
  84. }
  85. }
  86. })
  87. const vm = new Vue({
  88. data: {
  89. b: 1
  90. },
  91. template: '<div>[[ b ]] - <test-component></test-component></div>',
  92. components: {
  93. 'test-component': Component
  94. }
  95. }).$mount()
  96. expect(vm.$el.textContent).toEqual('1 - 2')
  97. // restore default options
  98. delete Vue.options.delimiters
  99. })
  100. })