feat(core): allow passing explicit refs via props

This commit is contained in:
Evan You
2019-11-06 12:51:06 -05:00
parent e79c918676
commit d9c6ff372c
7 changed files with 76 additions and 18 deletions

View File

@@ -9,7 +9,8 @@ import {
lock,
unlock,
effect,
ref
ref,
readonlyProps
} from '../src'
import { mockWarn } from '@vue/runtime-test'
@@ -442,4 +443,32 @@ describe('reactivity/readonly', () => {
`Set operation on key "value" failed: target is readonly.`
).toHaveBeenWarned()
})
describe('readonlyProps', () => {
test('should not unwrap root-level refs', () => {
const props = readonlyProps({ n: ref(1) })
expect(props.n.value).toBe(1)
})
test('should unwrap nested refs', () => {
const props = readonlyProps({ foo: { bar: ref(1) } })
expect(props.foo.bar).toBe(1)
})
test('should make properties readonly', () => {
const props = readonlyProps({ n: ref(1) })
props.n.value = 2
expect(props.n.value).toBe(1)
expect(
`Set operation on key "value" failed: target is readonly.`
).toHaveBeenWarned()
// @ts-ignore
props.n = 2
expect(props.n.value).toBe(1)
expect(
`Set operation on key "n" failed: target is readonly.`
).toHaveBeenWarned()
})
})
})