2
0

methods-data.spec.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import Vue from 'vue'
  2. describe('Instance methods data', () => {
  3. it('$set/$delete', done => {
  4. const vm = new Vue({
  5. template: '<div>{{ a.msg }}</div>',
  6. data: {
  7. a: {}
  8. }
  9. }).$mount()
  10. expect(vm.$el.innerHTML).toBe('')
  11. vm.$set(vm.a, 'msg', 'hello')
  12. waitForUpdate(() => {
  13. expect(vm.$el.innerHTML).toBe('hello')
  14. vm.$delete(vm.a, 'msg')
  15. }).then(() => {
  16. expect(vm.$el.innerHTML).toBe('')
  17. }).then(done)
  18. })
  19. describe('$watch', () => {
  20. let vm, spy
  21. beforeEach(() => {
  22. vm = new Vue({
  23. data: {
  24. a: {
  25. b: 1
  26. }
  27. }
  28. })
  29. spy = jasmine.createSpy('watch')
  30. })
  31. it('basic usage', done => {
  32. vm.$watch('a.b', spy)
  33. vm.a.b = 2
  34. waitForUpdate(() => {
  35. expect(spy.calls.count()).toBe(1)
  36. expect(spy).toHaveBeenCalledWith(2, 1)
  37. vm.a = { b: 3 }
  38. }).then(() => {
  39. expect(spy.calls.count()).toBe(2)
  40. expect(spy).toHaveBeenCalledWith(3, 2)
  41. }).then(done)
  42. })
  43. it('immediate', () => {
  44. vm.$watch('a.b', spy, { immediate: true })
  45. expect(spy.calls.count()).toBe(1)
  46. expect(spy).toHaveBeenCalledWith(1)
  47. })
  48. it('unwatch', done => {
  49. const unwatch = vm.$watch('a.b', spy)
  50. unwatch()
  51. vm.a.b = 2
  52. waitForUpdate(() => {
  53. expect(spy.calls.count()).toBe(0)
  54. }).then(done)
  55. })
  56. it('function watch', done => {
  57. vm.$watch(function () {
  58. return this.a.b
  59. }, spy)
  60. vm.a.b = 2
  61. waitForUpdate(() => {
  62. expect(spy).toHaveBeenCalledWith(2, 1)
  63. }).then(done)
  64. })
  65. it('deep watch', done => {
  66. var oldA = vm.a
  67. vm.$watch('a', spy, { deep: true })
  68. vm.a.b = 2
  69. waitForUpdate(() => {
  70. expect(spy).toHaveBeenCalledWith(oldA, oldA)
  71. vm.a = { b: 3 }
  72. }).then(() => {
  73. expect(spy).toHaveBeenCalledWith(vm.a, oldA)
  74. }).then(done)
  75. })
  76. it('warn expresssion', () => {
  77. vm.$watch('a + b', spy)
  78. expect('Watcher only accepts simple dot-delimited paths').toHaveBeenWarned()
  79. })
  80. })
  81. })