mirror of https://github.com/vuejs/core.git
test: add test
This commit is contained in:
parent
58ae877c31
commit
711e42b3bb
|
@ -1131,6 +1131,92 @@ describe('defineCustomElement', () => {
|
|||
expect(target.innerHTML).toBe(`<span>default</span>`)
|
||||
app.unmount()
|
||||
})
|
||||
|
||||
test('toggle nested custom element with shadowRoot: false', async () => {
|
||||
customElements.define(
|
||||
'my-el-child-shadow-false',
|
||||
defineCustomElement(
|
||||
{
|
||||
render(ctx: any) {
|
||||
return h('div', null, [renderSlot(ctx.$slots, 'default')])
|
||||
},
|
||||
},
|
||||
{ shadowRoot: false },
|
||||
),
|
||||
)
|
||||
const ChildWrapper = {
|
||||
render() {
|
||||
return h('my-el-child-shadow-false', null, 'child')
|
||||
},
|
||||
}
|
||||
|
||||
customElements.define(
|
||||
'my-el-parent-shadow-false',
|
||||
defineCustomElement(
|
||||
{
|
||||
props: {
|
||||
isShown: { type: Boolean, required: true },
|
||||
},
|
||||
render(ctx: any, _: any, $props: any) {
|
||||
return $props.isShown
|
||||
? h('div', { key: 0 }, [renderSlot(ctx.$slots, 'default')])
|
||||
: null
|
||||
},
|
||||
},
|
||||
{ shadowRoot: false },
|
||||
),
|
||||
)
|
||||
const ParentWrapper = {
|
||||
props: {
|
||||
isShown: { type: Boolean, required: true },
|
||||
},
|
||||
render(ctx: any, _: any, $props: any) {
|
||||
return h('my-el-parent-shadow-false', { isShown: $props.isShown }, [
|
||||
renderSlot(ctx.$slots, 'default'),
|
||||
])
|
||||
},
|
||||
}
|
||||
|
||||
const isShown = ref(true)
|
||||
const App = {
|
||||
render() {
|
||||
return h(ParentWrapper, { isShown: isShown.value } as any, {
|
||||
default: () => [h(ChildWrapper)],
|
||||
})
|
||||
},
|
||||
}
|
||||
const container = document.createElement('div')
|
||||
document.body.appendChild(container)
|
||||
const app = createApp(App)
|
||||
app.mount(container)
|
||||
expect(container.innerHTML).toBe(
|
||||
`<my-el-parent-shadow-false is-shown="" data-v-app="">` +
|
||||
`<div>` +
|
||||
`<my-el-child-shadow-false data-v-app="">` +
|
||||
`<div>child</div>` +
|
||||
`</my-el-child-shadow-false>` +
|
||||
`</div>` +
|
||||
`</my-el-parent-shadow-false>`,
|
||||
)
|
||||
|
||||
isShown.value = false
|
||||
await nextTick()
|
||||
expect(container.innerHTML).toBe(
|
||||
`<my-el-parent-shadow-false data-v-app=""><!----></my-el-parent-shadow-false>`,
|
||||
)
|
||||
|
||||
isShown.value = true
|
||||
await nextTick()
|
||||
expect(container.innerHTML).toBe(
|
||||
`<my-el-parent-shadow-false data-v-app="" is-shown="">` +
|
||||
`<div>` +
|
||||
`<my-el-child-shadow-false data-v-app="">` +
|
||||
`<div>child</div>` +
|
||||
`</my-el-child-shadow-false>` +
|
||||
`</div>` +
|
||||
`</my-el-parent-shadow-false>`,
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe('helpers', () => {
|
||||
|
|
Loading…
Reference in New Issue