Răsfoiți Sursa

test(compiler): test for DirectiveTransform returning needRuntime: Symbol

Evan You 6 ani în urmă
părinte
comite
e6d0d08a43

+ 25 - 1
packages/compiler-core/__tests__/transforms/transformElement.spec.ts

@@ -5,7 +5,8 @@ import {
   MERGE_PROPS,
   RESOLVE_DIRECTIVE,
   APPLY_DIRECTIVES,
-  TO_HANDLERS
+  TO_HANDLERS,
+  helperNameMap
 } from '../../src/runtimeHelpers'
 import {
   CallExpression,
@@ -349,6 +350,29 @@ describe('compiler: element transform', () => {
     ])
   })
 
+  test('directiveTransform with needRuntime: Symbol', () => {
+    const { root, node } = parseWithElementTransform(
+      `<div v-foo:bar="hello" />`,
+      {
+        directiveTransforms: {
+          foo() {
+            return {
+              props: [],
+              needRuntime: CREATE_VNODE
+            }
+          }
+        }
+      }
+    )
+
+    expect(root.helpers).toContain(CREATE_VNODE)
+    expect(root.helpers).not.toContain(RESOLVE_DIRECTIVE)
+    expect(root.directives.length).toBe(0)
+    expect((node as any).arguments[1].elements[0].elements[0]).toBe(
+      `_${helperNameMap[CREATE_VNODE]}`
+    )
+  })
+
   test('runtime directives', () => {
     const { root, node } = parseWithElementTransform(
       `<div v-foo v-bar="x" v-baz:[arg].mod.mad="y" />`