99 lines
2.1 KiB
TypeScript
99 lines
2.1 KiB
TypeScript
|
import { nodeOps, render } from '@vue/runtime-test'
|
||
|
import { defineComponent, h, ref } from '../src'
|
||
|
|
||
|
describe('api: expose', () => {
|
||
|
test('via setup context', () => {
|
||
|
const Child = defineComponent({
|
||
|
render() {},
|
||
|
setup(_, { expose }) {
|
||
|
expose({
|
||
|
foo: ref(1),
|
||
|
bar: ref(2)
|
||
|
})
|
||
|
return {
|
||
|
bar: ref(3),
|
||
|
baz: ref(4)
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
|
||
|
const childRef = ref()
|
||
|
const Parent = {
|
||
|
setup() {
|
||
|
return () => h(Child, { ref: childRef })
|
||
|
}
|
||
|
}
|
||
|
const root = nodeOps.createElement('div')
|
||
|
render(h(Parent), root)
|
||
|
expect(childRef.value).toBeTruthy()
|
||
|
expect(childRef.value.foo).toBe(1)
|
||
|
expect(childRef.value.bar).toBe(2)
|
||
|
expect(childRef.value.baz).toBeUndefined()
|
||
|
})
|
||
|
|
||
|
test('via options', () => {
|
||
|
const Child = defineComponent({
|
||
|
render() {},
|
||
|
data() {
|
||
|
return {
|
||
|
foo: 1
|
||
|
}
|
||
|
},
|
||
|
setup() {
|
||
|
return {
|
||
|
bar: ref(2),
|
||
|
baz: ref(3)
|
||
|
}
|
||
|
},
|
||
|
expose: ['foo', 'bar']
|
||
|
})
|
||
|
|
||
|
const childRef = ref()
|
||
|
const Parent = {
|
||
|
setup() {
|
||
|
return () => h(Child, { ref: childRef })
|
||
|
}
|
||
|
}
|
||
|
const root = nodeOps.createElement('div')
|
||
|
render(h(Parent), root)
|
||
|
expect(childRef.value).toBeTruthy()
|
||
|
expect(childRef.value.foo).toBe(1)
|
||
|
expect(childRef.value.bar).toBe(2)
|
||
|
expect(childRef.value.baz).toBeUndefined()
|
||
|
})
|
||
|
|
||
|
test('options + context', () => {
|
||
|
const Child = defineComponent({
|
||
|
render() {},
|
||
|
expose: ['foo'],
|
||
|
data() {
|
||
|
return {
|
||
|
foo: 1
|
||
|
}
|
||
|
},
|
||
|
setup(_, { expose }) {
|
||
|
expose({
|
||
|
bar: ref(2)
|
||
|
})
|
||
|
return {
|
||
|
bar: ref(3),
|
||
|
baz: ref(4)
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
|
||
|
const childRef = ref()
|
||
|
const Parent = {
|
||
|
setup() {
|
||
|
return () => h(Child, { ref: childRef })
|
||
|
}
|
||
|
}
|
||
|
const root = nodeOps.createElement('div')
|
||
|
render(h(Parent), root)
|
||
|
expect(childRef.value).toBeTruthy()
|
||
|
expect(childRef.value.foo).toBe(1)
|
||
|
expect(childRef.value.bar).toBe(2)
|
||
|
expect(childRef.value.baz).toBeUndefined()
|
||
|
})
|
||
|
})
|