test(compiler-core): add v-if with comments test case (#1389)

This commit is contained in:
Joseph Xia 2020-06-18 04:01:12 +08:00 committed by GitHub
parent bf5aba8f19
commit d57749cbf7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -13,7 +13,8 @@ import {
ConditionalExpression,
IfConditionalExpression,
VNodeCall,
ElementTypes
ElementTypes,
IfBranchNode
} from '../../src/ast'
import { ErrorCodes } from '../../src/errors'
import { CompilerOptions, generate } from '../../src'
@ -527,6 +528,50 @@ describe('compiler: v-if', () => {
expect(generate(root).code).toMatchSnapshot()
})
test.todo('with comments')
test('with comments', () => {
const { node } = parseWithIfTransform(`
<template v-if="ok">
<!--comment1-->
<div v-if="ok2">
<!--comment2-->
</div>
<!--comment3-->
<b v-else/>
<!--comment4-->
<p/>
</template>
`)
expect(node.type).toBe(NodeTypes.IF)
expect(node.branches.length).toBe(1)
const b1 = node.branches[0]
expect((b1.condition as SimpleExpressionNode).content).toBe(`ok`)
expect(b1.children.length).toBe(4)
expect(b1.children[0].type).toBe(NodeTypes.COMMENT)
expect((b1.children[0] as CommentNode).content).toBe(`comment1`)
expect(b1.children[1].type).toBe(NodeTypes.IF)
expect((b1.children[1] as IfNode).branches.length).toBe(2)
const b1b1: ElementNode = (b1.children[1] as IfNode).branches[0]
.children[0] as ElementNode
expect(b1b1.type).toBe(NodeTypes.ELEMENT)
expect(b1b1.tag).toBe('div')
expect(b1b1.children[0].type).toBe(NodeTypes.COMMENT)
expect((b1b1.children[0] as CommentNode).content).toBe('comment2')
const b1b2: IfBranchNode = (b1.children[1] as IfNode)
.branches[1] as IfBranchNode
expect(b1b2.children[0].type).toBe(NodeTypes.COMMENT)
expect((b1b2.children[0] as CommentNode).content).toBe(`comment3`)
expect(b1b2.children[1].type).toBe(NodeTypes.ELEMENT)
expect((b1b2.children[1] as ElementNode).tag).toBe(`b`)
expect(b1.children[2].type).toBe(NodeTypes.COMMENT)
expect((b1.children[2] as CommentNode).content).toBe(`comment4`)
expect(b1.children[3].type).toBe(NodeTypes.ELEMENT)
expect((b1.children[3] as ElementNode).tag).toBe(`p`)
})
})
})