show_spec.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. var Vue = require('src')
  2. var transition = require('src/transition')
  3. var def = require('src/directives/public/show')
  4. describe('v-show', function () {
  5. var el
  6. beforeEach(function () {
  7. el = document.createElement('div')
  8. document.body.appendChild(el)
  9. spyOn(transition, 'applyTransition').and.callThrough()
  10. })
  11. afterEach(function () {
  12. document.body.removeChild(el)
  13. })
  14. it('should work', function () {
  15. var dir = {
  16. el: el,
  17. update: def.update,
  18. apply: def.apply,
  19. vm: new Vue()
  20. }
  21. dir.update(false)
  22. expect(el.style.display).toBe('none')
  23. dir.update(true)
  24. expect(el.style.display).toBe('')
  25. expect(transition.applyTransition).toHaveBeenCalled()
  26. })
  27. it('should work with v-else', function (done) {
  28. var vm = new Vue({
  29. el: el,
  30. template:
  31. '<p v-show="ok">YES</p>' +
  32. '<p v-else>NO</p>',
  33. data: {
  34. ok: true
  35. }
  36. })
  37. expect(el.children[0].style.display).toBe('')
  38. expect(el.children[1].style.display).toBe('none')
  39. expect(transition.applyTransition.calls.count()).toBe(2)
  40. vm.ok = false
  41. Vue.nextTick(function () {
  42. expect(el.children[0].style.display).toBe('none')
  43. expect(el.children[1].style.display).toBe('')
  44. expect(transition.applyTransition.calls.count()).toBe(4)
  45. done()
  46. })
  47. })
  48. })