feat(core): allow passing explicit refs via props
This commit is contained in:
@@ -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()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user