]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
wip: add test case
authordaiwei <daiwei521@126.com>
Thu, 23 Jan 2025 03:59:46 +0000 (11:59 +0800)
committerdaiwei <daiwei521@126.com>
Thu, 23 Jan 2025 03:59:46 +0000 (11:59 +0800)
packages/compiler-core/__tests__/transforms/vSkip.spec.ts [new file with mode: 0644]

diff --git a/packages/compiler-core/__tests__/transforms/vSkip.spec.ts b/packages/compiler-core/__tests__/transforms/vSkip.spec.ts
new file mode 100644 (file)
index 0000000..f7274d7
--- /dev/null
@@ -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(`<div v-skip="ok"/>`)
+      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', () => {})
+})