show.spec.ts 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import Vue from 'vue'
  2. describe('Directive v-show', () => {
  3. it('should check show value is truthy', () => {
  4. const vm = new Vue({
  5. template: '<div><span v-show="foo">hello</span></div>',
  6. data: { foo: true }
  7. }).$mount()
  8. expect(vm.$el.firstChild.style.display).toBe('')
  9. })
  10. it('should check show value is falsy', () => {
  11. const vm = new Vue({
  12. template: '<div><span v-show="foo">hello</span></div>',
  13. data: { foo: false }
  14. }).$mount()
  15. expect(vm.$el.firstChild.style.display).toBe('none')
  16. })
  17. it('should update show value changed', done => {
  18. const vm = new Vue({
  19. template: '<div><span v-show="foo">hello</span></div>',
  20. data: { foo: true }
  21. }).$mount()
  22. expect(vm.$el.firstChild.style.display).toBe('')
  23. vm.foo = false
  24. waitForUpdate(() => {
  25. expect(vm.$el.firstChild.style.display).toBe('none')
  26. vm.foo = {}
  27. })
  28. .then(() => {
  29. expect(vm.$el.firstChild.style.display).toBe('')
  30. vm.foo = 0
  31. })
  32. .then(() => {
  33. expect(vm.$el.firstChild.style.display).toBe('none')
  34. vm.foo = []
  35. })
  36. .then(() => {
  37. expect(vm.$el.firstChild.style.display).toBe('')
  38. vm.foo = null
  39. })
  40. .then(() => {
  41. expect(vm.$el.firstChild.style.display).toBe('none')
  42. vm.foo = '0'
  43. })
  44. .then(() => {
  45. expect(vm.$el.firstChild.style.display).toBe('')
  46. vm.foo = undefined
  47. })
  48. .then(() => {
  49. expect(vm.$el.firstChild.style.display).toBe('none')
  50. vm.foo = 1
  51. })
  52. .then(() => {
  53. expect(vm.$el.firstChild.style.display).toBe('')
  54. })
  55. .then(done)
  56. })
  57. it('should respect display value in style attribute', done => {
  58. const vm = new Vue({
  59. template:
  60. '<div><span v-show="foo" style="display:block">hello</span></div>',
  61. data: { foo: true }
  62. }).$mount()
  63. expect(vm.$el.firstChild.style.display).toBe('block')
  64. vm.foo = false
  65. waitForUpdate(() => {
  66. expect(vm.$el.firstChild.style.display).toBe('none')
  67. vm.foo = true
  68. })
  69. .then(() => {
  70. expect(vm.$el.firstChild.style.display).toBe('block')
  71. })
  72. .then(done)
  73. })
  74. it('should support unbind when reused', done => {
  75. const vm = new Vue({
  76. template:
  77. '<div v-if="tester"><span v-show="false"></span></div>' +
  78. '<div v-else><span @click="tester=!tester">show</span></div>',
  79. data: { tester: true }
  80. }).$mount()
  81. expect(vm.$el.firstChild.style.display).toBe('none')
  82. vm.tester = false
  83. waitForUpdate(() => {
  84. expect(vm.$el.firstChild.style.display).toBe('')
  85. vm.tester = true
  86. })
  87. .then(() => {
  88. expect(vm.$el.firstChild.style.display).toBe('none')
  89. })
  90. .then(done)
  91. })
  92. })