From: daiwei Date: Thu, 23 Jan 2025 03:59:46 +0000 (+0800) Subject: wip: add test case X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=277e1f08f77baac63463c85f23d2ac404a65ab4a;p=thirdparty%2Fvuejs%2Fcore.git wip: add test case --- diff --git a/packages/compiler-core/__tests__/transforms/vSkip.spec.ts b/packages/compiler-core/__tests__/transforms/vSkip.spec.ts new file mode 100644 index 0000000000..f7274d724e --- /dev/null +++ b/packages/compiler-core/__tests__/transforms/vSkip.spec.ts @@ -0,0 +1,61 @@ +import { + type CompilerOptions, + type ElementNode, + NodeTypes, + type RootNode, + type SimpleExpressionNode, + type SkipNode, + baseParse as parse, + transform, + transformBind, + transformElement, +} from '@vue/compiler-core' +import { transformIf } from '../../src/transforms/vIf' +import { transformFor } from '../../src/transforms/vFor' +import { transformSlotOutlet } from '../../src/transforms/transformSlotOutlet' +import { transformSkip } from '../../src/transforms/vSkip' + +export function parseWithSkipTransform( + template: string, + options: CompilerOptions = {}, +): { + root: RootNode + node: SkipNode +} { + const ast = parse(template, options) + transform(ast, { + nodeTransforms: [ + transformIf, + transformSkip, + transformFor, + transformSlotOutlet, + transformElement, + ], + directiveTransforms: { + bind: transformBind, + }, + ...options, + }) + return { + root: ast, + node: ast.children[0] as SkipNode, + } +} + +describe('compiler: v-skip', () => { + describe('transform', () => { + test('basic', () => { + const { node } = parseWithSkipTransform(`
`) + expect(node.type).toBe(NodeTypes.SKIP) + expect((node.test as SimpleExpressionNode).content).toBe(`ok`) + expect(node.consequent.children.length).toBe(0) + expect(node.alternate.children.length).toBe(1) + expect(node.alternate.children[0].type).toBe(NodeTypes.ELEMENT) + expect((node.alternate.children[0] as ElementNode).tag).toBe(`div`) + }) + }) + + describe.todo('codegen', () => {}) + + describe.todo('errors', () => {}) +})