"
`;
-exports[`comile > directives > v-once 1`] = `
+exports[`comile > directives > v-once > as root node 1`] = `
+"import { watchEffect } from 'vue';
+import { template, setAttr } from 'vue/vapor';
+const t0 = template(\`<div></div>\`);
+export function render() {
+ const n0 = t0();
+ watchEffect(() => {
+ setAttr(n0, 'id', undefined, foo);
+ });
+ return n0;
+}
+"
+`;
+
+exports[`comile > directives > v-once > basic 1`] = `
"import { template, children, insert, setText, setAttr } from 'vue/vapor';
const t0 = template(\`<div> <span></span></div>\`);
export function render() {
})
})
- test('v-once', async () => {
- const code = await compile(
- `<div v-once>
+ describe('v-once', () => {
+ test('basic', async () => {
+ const code = await compile(
+ `<div v-once>
{{ msg }}
<span :class="clz" />
</div>`,
- {
- bindingMetadata: {
- msg: BindingTypes.SETUP_REF,
- clz: BindingTypes.SETUP_REF,
+ {
+ bindingMetadata: {
+ msg: BindingTypes.SETUP_REF,
+ clz: BindingTypes.SETUP_REF,
+ },
},
- },
- )
- expect(code).matchSnapshot()
+ )
+ expect(code).matchSnapshot()
+ })
+
+ test.fails('as root node', async () => {
+ const code = await compile(`<div :id="foo" v-once />`)
+ expect(code).toMatchSnapshot()
+ expect(code).not.contains('watchEffect')
+ })
})
})
})