@@ -1,51 +1,48 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`scopeId compiler support should push scopeId for hoisted nodes 1`] = `
|
||||
"import { createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, withScopeId as _withScopeId, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \\"vue\\"
|
||||
const _withId = /*#__PURE__*/_withScopeId(\\"test\\")
|
||||
"import { createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, setScopeId as _setScopeId } from \\"vue\\"
|
||||
|
||||
_pushScopeId(\\"test\\")
|
||||
_setScopeId(\\"test\\")
|
||||
const _hoisted_1 = /*#__PURE__*/_createVNode(\\"div\\", null, \\"hello\\", -1 /* HOISTED */)
|
||||
const _hoisted_2 = /*#__PURE__*/_createVNode(\\"div\\", null, \\"world\\", -1 /* HOISTED */)
|
||||
_popScopeId()
|
||||
_setScopeId(null)
|
||||
|
||||
export const render = /*#__PURE__*/_withId((_ctx, _cache) => {
|
||||
export function render(_ctx, _cache) {
|
||||
return (_openBlock(), _createBlock(\\"div\\", null, [
|
||||
_hoisted_1,
|
||||
_createTextVNode(_toDisplayString(_ctx.foo), 1 /* TEXT */),
|
||||
_hoisted_2
|
||||
]))
|
||||
})"
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`scopeId compiler support should wrap default slot 1`] = `
|
||||
"import { createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, withScopeId as _withScopeId } from \\"vue\\"
|
||||
const _withId = /*#__PURE__*/_withScopeId(\\"test\\")
|
||||
"import { createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \\"vue\\"
|
||||
|
||||
export const render = /*#__PURE__*/_withId((_ctx, _cache) => {
|
||||
export function render(_ctx, _cache) {
|
||||
const _component_Child = _resolveComponent(\\"Child\\")
|
||||
|
||||
return (_openBlock(), _createBlock(_component_Child, null, {
|
||||
default: _withId(() => [
|
||||
default: _withCtx(() => [
|
||||
_createVNode(\\"div\\")
|
||||
]),
|
||||
_: 1 /* STABLE */
|
||||
}))
|
||||
})"
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`scopeId compiler support should wrap dynamic slots 1`] = `
|
||||
"import { createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, renderList as _renderList, createSlots as _createSlots, openBlock as _openBlock, createBlock as _createBlock, withScopeId as _withScopeId } from \\"vue\\"
|
||||
const _withId = /*#__PURE__*/_withScopeId(\\"test\\")
|
||||
"import { createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, renderList as _renderList, createSlots as _createSlots, openBlock as _openBlock, createBlock as _createBlock } from \\"vue\\"
|
||||
|
||||
export const render = /*#__PURE__*/_withId((_ctx, _cache) => {
|
||||
export function render(_ctx, _cache) {
|
||||
const _component_Child = _resolveComponent(\\"Child\\")
|
||||
|
||||
return (_openBlock(), _createBlock(_component_Child, null, _createSlots({ _: 2 /* DYNAMIC */ }, [
|
||||
(_ctx.ok)
|
||||
? {
|
||||
name: \\"foo\\",
|
||||
fn: _withId(() => [
|
||||
fn: _withCtx(() => [
|
||||
_createVNode(\\"div\\")
|
||||
])
|
||||
}
|
||||
@@ -53,39 +50,29 @@ export const render = /*#__PURE__*/_withId((_ctx, _cache) => {
|
||||
_renderList(_ctx.list, (i) => {
|
||||
return {
|
||||
name: i,
|
||||
fn: _withId(() => [
|
||||
fn: _withCtx(() => [
|
||||
_createVNode(\\"div\\")
|
||||
])
|
||||
}
|
||||
})
|
||||
]), 1024 /* DYNAMIC_SLOTS */))
|
||||
})"
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`scopeId compiler support should wrap named slots 1`] = `
|
||||
"import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, withScopeId as _withScopeId } from \\"vue\\"
|
||||
const _withId = /*#__PURE__*/_withScopeId(\\"test\\")
|
||||
"import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \\"vue\\"
|
||||
|
||||
export const render = /*#__PURE__*/_withId((_ctx, _cache) => {
|
||||
export function render(_ctx, _cache) {
|
||||
const _component_Child = _resolveComponent(\\"Child\\")
|
||||
|
||||
return (_openBlock(), _createBlock(_component_Child, null, {
|
||||
foo: _withId(({ msg }) => [
|
||||
foo: _withCtx(({ msg }) => [
|
||||
_createTextVNode(_toDisplayString(msg), 1 /* TEXT */)
|
||||
]),
|
||||
bar: _withId(() => [
|
||||
bar: _withCtx(() => [
|
||||
_createVNode(\\"div\\")
|
||||
]),
|
||||
_: 1 /* STABLE */
|
||||
}))
|
||||
})"
|
||||
`;
|
||||
|
||||
exports[`scopeId compiler support should wrap render function 1`] = `
|
||||
"import { createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, withScopeId as _withScopeId } from \\"vue\\"
|
||||
const _withId = /*#__PURE__*/_withScopeId(\\"test\\")
|
||||
|
||||
export const render = /*#__PURE__*/_withId((_ctx, _cache) => {
|
||||
return (_openBlock(), _createBlock(\\"div\\"))
|
||||
})"
|
||||
}"
|
||||
`;
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import { baseCompile } from '../src/compile'
|
||||
import {
|
||||
WITH_SCOPE_ID,
|
||||
PUSH_SCOPE_ID,
|
||||
POP_SCOPE_ID
|
||||
} from '../src/runtimeHelpers'
|
||||
import { SET_SCOPE_ID } from '../src/runtimeHelpers'
|
||||
import { PatchFlags } from '@vue/shared'
|
||||
import { genFlagText } from './testUtils'
|
||||
|
||||
/**
|
||||
* Ensure all slot functions are wrapped with _withCtx
|
||||
* which sets the currentRenderingInstance and currentScopeId when rendering
|
||||
* the slot.
|
||||
*/
|
||||
describe('scopeId compiler support', () => {
|
||||
test('should only work in module mode', () => {
|
||||
expect(() => {
|
||||
@@ -14,25 +15,12 @@ describe('scopeId compiler support', () => {
|
||||
}).toThrow(`"scopeId" option is only supported in module mode`)
|
||||
})
|
||||
|
||||
test('should wrap render function', () => {
|
||||
const { ast, code } = baseCompile(`<div/>`, {
|
||||
mode: 'module',
|
||||
scopeId: 'test'
|
||||
})
|
||||
expect(ast.helpers).toContain(WITH_SCOPE_ID)
|
||||
expect(code).toMatch(`const _withId = /*#__PURE__*/_withScopeId("test")`)
|
||||
expect(code).toMatch(
|
||||
`export const render = /*#__PURE__*/_withId((_ctx, _cache) => {`
|
||||
)
|
||||
expect(code).toMatchSnapshot()
|
||||
})
|
||||
|
||||
test('should wrap default slot', () => {
|
||||
const { code } = baseCompile(`<Child><div/></Child>`, {
|
||||
mode: 'module',
|
||||
scopeId: 'test'
|
||||
})
|
||||
expect(code).toMatch(`default: _withId(() => [`)
|
||||
expect(code).toMatch(`default: _withCtx(() => [`)
|
||||
expect(code).toMatchSnapshot()
|
||||
})
|
||||
|
||||
@@ -48,8 +36,8 @@ describe('scopeId compiler support', () => {
|
||||
scopeId: 'test'
|
||||
}
|
||||
)
|
||||
expect(code).toMatch(`foo: _withId(({ msg }) => [`)
|
||||
expect(code).toMatch(`bar: _withId(() => [`)
|
||||
expect(code).toMatch(`foo: _withCtx(({ msg }) => [`)
|
||||
expect(code).toMatch(`bar: _withCtx(() => [`)
|
||||
expect(code).toMatchSnapshot()
|
||||
})
|
||||
|
||||
@@ -65,8 +53,8 @@ describe('scopeId compiler support', () => {
|
||||
scopeId: 'test'
|
||||
}
|
||||
)
|
||||
expect(code).toMatch(/name: "foo",\s+fn: _withId\(/)
|
||||
expect(code).toMatch(/name: i,\s+fn: _withId\(/)
|
||||
expect(code).toMatch(/name: "foo",\s+fn: _withCtx\(/)
|
||||
expect(code).toMatch(/name: i,\s+fn: _withCtx\(/)
|
||||
expect(code).toMatchSnapshot()
|
||||
})
|
||||
|
||||
@@ -79,19 +67,18 @@ describe('scopeId compiler support', () => {
|
||||
hoistStatic: true
|
||||
}
|
||||
)
|
||||
expect(ast.helpers).toContain(PUSH_SCOPE_ID)
|
||||
expect(ast.helpers).toContain(POP_SCOPE_ID)
|
||||
expect(ast.helpers).toContain(SET_SCOPE_ID)
|
||||
expect(ast.hoists.length).toBe(2)
|
||||
expect(code).toMatch(
|
||||
[
|
||||
`_pushScopeId("test")`,
|
||||
`_setScopeId("test")`,
|
||||
`const _hoisted_1 = /*#__PURE__*/_createVNode("div", null, "hello", ${genFlagText(
|
||||
PatchFlags.HOISTED
|
||||
)})`,
|
||||
`const _hoisted_2 = /*#__PURE__*/_createVNode("div", null, "world", ${genFlagText(
|
||||
PatchFlags.HOISTED
|
||||
)})`,
|
||||
`_popScopeId()`
|
||||
`_setScopeId(null)`
|
||||
].join('\n')
|
||||
)
|
||||
expect(code).toMatchSnapshot()
|
||||
|
||||
Reference in New Issue
Block a user