test: test slotFunction codegen

This commit is contained in:
Evan You 2019-09-28 13:12:41 -04:00
parent a792d697a3
commit 96749e0178
2 changed files with 87 additions and 0 deletions

View File

@ -1,5 +1,18 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`compiler: codegen SlotFunctionExpression 1`] = `
"
return function render() {
with (this) {
return _createVNode(Comp, 0, {
default: ({ foo }) => [
_toString(foo)
]
})
}
}"
`;
exports[`compiler: codegen callExpression + objectExpression + arrayExpression 1`] = ` exports[`compiler: codegen callExpression + objectExpression + arrayExpression 1`] = `
" "
return function render() { return function render() {

View File

@ -457,6 +457,80 @@ describe('compiler: codegen', () => {
expect(code).toMatchSnapshot() expect(code).toMatchSnapshot()
}) })
test('SlotFunctionExpression', () => {
const { code } = generate(
createRoot({
children: [
{
type: NodeTypes.ELEMENT,
tagType: ElementTypes.COMPONENT,
ns: Namespaces.HTML,
isSelfClosing: false,
tag: `Comp`,
loc: mockLoc,
props: [],
children: [],
codegenNode: {
type: NodeTypes.JS_CALL_EXPRESSION,
loc: mockLoc,
callee: `_${CREATE_VNODE}`,
arguments: [
`Comp`,
`0`,
{
type: NodeTypes.JS_OBJECT_EXPRESSION,
loc: mockLoc,
properties: [
{
type: NodeTypes.JS_PROPERTY,
loc: mockLoc,
key: {
type: NodeTypes.SIMPLE_EXPRESSION,
isStatic: true,
content: `default`,
loc: mockLoc
},
value: {
type: NodeTypes.JS_SLOT_FUNCTION,
loc: mockLoc,
params: {
type: NodeTypes.SIMPLE_EXPRESSION,
isStatic: false,
content: `{ foo }`,
loc: mockLoc
},
returns: [
{
type: NodeTypes.INTERPOLATION,
loc: mockLoc,
content: {
type: NodeTypes.SIMPLE_EXPRESSION,
isStatic: false,
content: `foo`,
loc: mockLoc
}
}
]
}
}
]
}
]
}
}
]
})
)
expect(code).toMatch(
`return _createVNode(Comp, 0, {
default: ({ foo }) => [
_toString(foo)
]
})`
)
expect(code).toMatchSnapshot()
})
test('callExpression + objectExpression + arrayExpression', () => { test('callExpression + objectExpression + arrayExpression', () => {
function createElementWithCodegen( function createElementWithCodegen(
args: CallExpression['arguments'] args: CallExpression['arguments']