Browse Source

wip: add test case

daiwei 1 year ago
parent
commit
277e1f08f7
1 changed files with 61 additions and 0 deletions
  1. 61 0
      packages/compiler-core/__tests__/transforms/vSkip.spec.ts

+ 61 - 0
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(`<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', () => {})
+})