wip: compat test coverage

This commit is contained in:
Evan You
2021-04-30 18:05:03 -04:00
parent 324a00c85d
commit 80303bcf5a
4 changed files with 93 additions and 9 deletions

View File

@@ -1,5 +1,6 @@
import Vue from '@vue/compat'
import { effect, isReactive } from '@vue/reactivity'
import { nextTick } from '@vue/runtime-core'
import {
DeprecationTypes,
deprecationData,
@@ -333,4 +334,50 @@ describe('GLOBAL_PRIVATE_UTIL', () => {
deprecationData[DeprecationTypes.GLOBAL_PRIVATE_UTIL].message
).toHaveBeenWarned()
})
test('defineReactive on instance', async () => {
const vm = new Vue({
beforeCreate() {
// @ts-ignore
Vue.util.defineReactive(this, 'foo', 1)
},
template: `<div>{{ foo }}</div>`
}).$mount() as any
expect(vm.$el.textContent).toBe('1')
vm.foo = 2
await nextTick()
expect(vm.$el.textContent).toBe('2')
})
test('defineReactive with object value', () => {
const obj: any = {}
const val = { a: 1 }
// @ts-ignore
Vue.util.defineReactive(obj, 'foo', val)
let n
effect(() => {
n = obj.foo.a
})
expect(n).toBe(1)
// mutating original
val.a++
expect(n).toBe(2)
})
test('defineReactive with array value', () => {
const obj: any = {}
const val = [1]
// @ts-ignore
Vue.util.defineReactive(obj, 'foo', val)
let n
effect(() => {
n = obj.foo.length
})
expect(n).toBe(1)
// mutating original
val.push(2)
expect(n).toBe(2)
})
})