import { compile } from '../src' const scopeId = 'data-v-xxxxxxx' describe('ssr: scopeId', () => { test('basic', () => { expect( compile(`
hello
`, { scopeId, mode: 'module', }).code, ).toMatchInlineSnapshot(` "import { ssrRenderAttrs as _ssrRenderAttrs } from "vue/server-renderer" export function ssrRender(_ctx, _push, _parent, _attrs) { _push(\`hello\`) }" `) }) test('inside slots (only text)', () => { // should have no branching inside slot expect( compile(`foo`, { scopeId, mode: 'module', }).code, ).toMatchInlineSnapshot(` "import { resolveComponent as _resolveComponent, withCtx as _withCtx, createTextVNode as _createTextVNode } from "vue" import { ssrRenderComponent as _ssrRenderComponent } from "vue/server-renderer" export function ssrRender(_ctx, _push, _parent, _attrs) { const _component_foo = _resolveComponent("foo") _push(_ssrRenderComponent(_component_foo, _attrs, { default: _withCtx((_, _push, _parent, _scopeId) => { if (_push) { _push(\`foo\`) } else { return [ _createTextVNode("foo") ] } }), _: 1 /* STABLE */ }, _parent)) }" `) }) test('inside slots (with elements)', () => { expect( compile(`hello`, { scopeId, mode: 'module', }).code, ).toMatchInlineSnapshot(` "import { resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode } from "vue" import { ssrRenderComponent as _ssrRenderComponent } from "vue/server-renderer" export function ssrRender(_ctx, _push, _parent, _attrs) { const _component_foo = _resolveComponent("foo") _push(_ssrRenderComponent(_component_foo, _attrs, { default: _withCtx((_, _push, _parent, _scopeId) => { if (_push) { _push(\`hello\`) } else { return [ _createVNode("span", null, "hello") ] } }), _: 1 /* STABLE */ }, _parent)) }" `) }) test('nested slots', () => { expect( compile(`hello`, { scopeId, mode: 'module', }).code, ).toMatchInlineSnapshot(` "import { resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode } from "vue" import { ssrRenderComponent as _ssrRenderComponent } from "vue/server-renderer" export function ssrRender(_ctx, _push, _parent, _attrs) { const _component_foo = _resolveComponent("foo") const _component_bar = _resolveComponent("bar") _push(_ssrRenderComponent(_component_foo, _attrs, { default: _withCtx((_, _push, _parent, _scopeId) => { if (_push) { _push(\`hello\`) _push(_ssrRenderComponent(_component_bar, null, { default: _withCtx((_, _push, _parent, _scopeId) => { if (_push) { _push(\`\`) } else { return [ _createVNode("span") ] } }), _: 1 /* STABLE */ }, _parent, _scopeId)) } else { return [ _createVNode("span", null, "hello"), _createVNode(_component_bar, null, { default: _withCtx(() => [ _createVNode("span") ]), _: 1 /* STABLE */ }) ] } }), _: 1 /* STABLE */ }, _parent)) }" `) }) // #7554 test('scopeId is correctly transform to scope attribute of transition-group ', () => { expect( compile( `hello`, { scopeId, mode: 'module', }, ).code, ).toMatchInlineSnapshot(` "import { mergeProps as _mergeProps } from "vue" import { ssrRenderAttrs as _ssrRenderAttrs } from "vue/server-renderer" export function ssrRender(_ctx, _push, _parent, _attrs) { _push(\`hello\`) }" `) // with dynamic tag expect( compile( `hello`, { scopeId, mode: 'module', }, ).code, ).toMatchInlineSnapshot(` "import { mergeProps as _mergeProps } from "vue" import { ssrRenderAttrs as _ssrRenderAttrs } from "vue/server-renderer" export function ssrRender(_ctx, _push, _parent, _attrs) { _push(\`<\${ _ctx.someTag }\${ _ssrRenderAttrs(_mergeProps({ class: "red" }, _attrs)) } data-v-xxxxxxx>hello\`) }" `) }) })