methods-events.spec.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import Vue from 'vue'
  2. describe('Instance methods events', () => {
  3. let vm, spy
  4. beforeEach(() => {
  5. vm = new Vue()
  6. spy = jasmine.createSpy('emitter')
  7. })
  8. it('$on', () => {
  9. vm.$on('test', function () {
  10. // expect correct context
  11. expect(this).toBe(vm)
  12. spy.apply(this, arguments)
  13. })
  14. vm.$emit('test', 1, 2, 3, 4)
  15. expect(spy.calls.count()).toBe(1)
  16. expect(spy).toHaveBeenCalledWith(1, 2, 3, 4)
  17. })
  18. it('$on multi event', () => {
  19. vm.$on(['test1', 'test2'], function () {
  20. expect(this).toBe(vm)
  21. spy.apply(this, arguments)
  22. })
  23. vm.$emit('test1', 1, 2, 3, 4)
  24. expect(spy.calls.count()).toBe(1)
  25. expect(spy).toHaveBeenCalledWith(1, 2, 3, 4)
  26. vm.$emit('test2', 5, 6, 7, 8)
  27. expect(spy.calls.count()).toBe(2)
  28. expect(spy).toHaveBeenCalledWith(5, 6, 7, 8)
  29. })
  30. it('$off multi event', () => {
  31. vm.$on(['test1', 'test2', 'test3'], spy)
  32. vm.$off(['test1', 'test2'], spy)
  33. vm.$emit('test1')
  34. vm.$emit('test2')
  35. expect(spy).not.toHaveBeenCalled()
  36. vm.$emit('test3', 1, 2, 3, 4)
  37. expect(spy.calls.count()).toBe(1)
  38. })
  39. it('$once', () => {
  40. vm.$once('test', spy)
  41. vm.$emit('test', 1, 2, 3)
  42. vm.$emit('test', 2, 3, 4)
  43. expect(spy.calls.count()).toBe(1)
  44. expect(spy).toHaveBeenCalledWith(1, 2, 3)
  45. })
  46. it('$off', () => {
  47. vm.$on('test1', spy)
  48. vm.$on('test2', spy)
  49. vm.$off()
  50. vm.$emit('test1')
  51. vm.$emit('test2')
  52. expect(spy).not.toHaveBeenCalled()
  53. })
  54. it('$off event', () => {
  55. vm.$on('test1', spy)
  56. vm.$on('test2', spy)
  57. vm.$off('test1')
  58. vm.$off('test1') // test off something that's already off
  59. vm.$emit('test1', 1)
  60. vm.$emit('test2', 2)
  61. expect(spy.calls.count()).toBe(1)
  62. expect(spy).toHaveBeenCalledWith(2)
  63. })
  64. it('$off event + fn', () => {
  65. var spy2 = jasmine.createSpy('emitter')
  66. vm.$on('test', spy)
  67. vm.$on('test', spy2)
  68. vm.$off('test', spy)
  69. vm.$emit('test', 1, 2, 3)
  70. expect(spy).not.toHaveBeenCalled()
  71. expect(spy2.calls.count()).toBe(1)
  72. expect(spy2).toHaveBeenCalledWith(1, 2, 3)
  73. })
  74. })