show.spec.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. }).then(() => {
  28. expect(vm.$el.firstChild.style.display).toBe('')
  29. vm.foo = 0
  30. }).then(() => {
  31. expect(vm.$el.firstChild.style.display).toBe('none')
  32. vm.foo = []
  33. }).then(() => {
  34. expect(vm.$el.firstChild.style.display).toBe('')
  35. vm.foo = null
  36. }).then(() => {
  37. expect(vm.$el.firstChild.style.display).toBe('none')
  38. vm.foo = '0'
  39. }).then(() => {
  40. expect(vm.$el.firstChild.style.display).toBe('')
  41. vm.foo = undefined
  42. }).then(() => {
  43. expect(vm.$el.firstChild.style.display).toBe('none')
  44. vm.foo = 1
  45. }).then(() => {
  46. expect(vm.$el.firstChild.style.display).toBe('')
  47. }).then(done)
  48. })
  49. it('should respect display value in style attribute', done => {
  50. const vm = new Vue({
  51. template: '<div><span v-show="foo" style="display:block">hello</span></div>',
  52. data: { foo: true }
  53. }).$mount()
  54. expect(vm.$el.firstChild.style.display).toBe('block')
  55. vm.foo = false
  56. waitForUpdate(() => {
  57. expect(vm.$el.firstChild.style.display).toBe('none')
  58. vm.foo = true
  59. }).then(() => {
  60. expect(vm.$el.firstChild.style.display).toBe('block')
  61. }).then(done)
  62. })
  63. it('should support unbind when reused', done => {
  64. const vm = new Vue({
  65. template:
  66. '<div v-if="tester"><span v-show="false"></span></div>' +
  67. '<div v-else><span @click="tester=!tester">show</span></div>',
  68. data: { tester: true }
  69. }).$mount()
  70. expect(vm.$el.firstChild.style.display).toBe('none')
  71. vm.tester = false
  72. waitForUpdate(() => {
  73. expect(vm.$el.firstChild.style.display).toBe('')
  74. vm.tester = true
  75. }).then(() => {
  76. expect(vm.$el.firstChild.style.display).toBe('none')
  77. }).then(done)
  78. })
  79. })