vue2/test/unit/features/global-api/set-delete.spec.js

77 lines
2.1 KiB
JavaScript
Raw Normal View History

import Vue from 'vue'
describe('Global API: set/delete', () => {
describe('Vue.set', () => {
2016-04-26 00:58:37 +08:00
it('should update a vue object', done => {
const vm = new Vue({
template: '<div>{{x}}</div>',
2016-04-26 00:58:37 +08:00
data: { x: 1 }
}).$mount()
expect(vm.$el.innerHTML).toBe('1')
Vue.set(vm, 'x', 2)
waitForUpdate(() => {
expect(vm.$el.innerHTML).toBe('2')
2016-05-19 01:08:14 +08:00
}).then(done)
})
2016-04-26 00:58:37 +08:00
it('should update a observing object', done => {
const vm = new Vue({
template: '<div>{{foo.x}}</div>',
2016-04-26 00:58:37 +08:00
data: { foo: { x: 1 }}
}).$mount()
expect(vm.$el.innerHTML).toBe('1')
Vue.set(vm.foo, 'x', 2)
waitForUpdate(() => {
expect(vm.$el.innerHTML).toBe('2')
2016-05-19 01:08:14 +08:00
}).then(done)
})
2016-04-26 00:58:37 +08:00
it('should update a observing array', done => {
const vm = new Vue({
template: '<div><div v-for="v,k in list">{{k}}-{{v}}</div></div>',
2016-04-26 00:58:37 +08:00
data: { list: ['a', 'b', 'c'] }
}).$mount()
expect(vm.$el.innerHTML).toBe('<div>0-a</div><div>1-b</div><div>2-c</div>')
Vue.set(vm.list, 1, 'd')
waitForUpdate(() => {
expect(vm.$el.innerHTML).toBe('<div>0-a</div><div>1-d</div><div>2-c</div>')
2016-05-19 01:08:14 +08:00
}).then(done)
})
2016-04-26 00:58:37 +08:00
it('should update a vue object with nothing', done => {
const vm = new Vue({
template: '<div>{{x}}</div>',
2016-04-26 00:58:37 +08:00
data: { x: 1 }
}).$mount()
expect(vm.$el.innerHTML).toBe('1')
Vue.set(vm, 'x', null)
waitForUpdate(() => {
expect(vm.$el.innerHTML).toBe('')
Vue.set(vm, 'x')
}).then(() => {
expect(vm.$el.innerHTML).toBe('')
2016-05-19 01:08:14 +08:00
}).then(done)
})
})
describe('Vue.delete', () => {
2016-04-26 00:58:37 +08:00
it('should delete a key', done => {
const vm = new Vue({
2016-04-26 11:30:48 +08:00
template: '<div>{{obj.x}}</div>',
data: { obj: { x: 1 }}
}).$mount()
expect(vm.$el.innerHTML).toBe('1')
2016-04-26 11:30:48 +08:00
vm.obj.x = 2
waitForUpdate(() => {
expect(vm.$el.innerHTML).toBe('2')
2016-04-26 11:30:48 +08:00
Vue.delete(vm.obj, 'x')
}).then(() => {
expect(vm.$el.innerHTML).toBe('')
2016-04-26 11:30:48 +08:00
vm.obj.x = 3
}).then(() => {
expect(vm.$el.innerHTML).toBe('')
2016-05-19 01:08:14 +08:00
}).then(done)
})
})
})