Просмотр исходного кода

test(compiler-vapor): add test for .prop modifier with dynamic arg and prefixIdentifiers (#14139)

edison 5 месяцев назад
Родитель
Сommit
8b4487e8df

+ 11 - 0
packages/compiler-vapor/__tests__/transforms/__snapshots__/vBind.spec.ts.snap

@@ -471,6 +471,17 @@ export function render(_ctx) {
 }"
 `;
 
+exports[`compiler v-bind > .prop modifier w/ dynamic arg + prefixIdentifiers 1`] = `
+"import { setDynamicProps as _setDynamicProps, renderEffect as _renderEffect, template as _template } from 'vue';
+const t0 = _template("<div></div>", true)
+
+export function render(_ctx) {
+  const n0 = t0()
+  _renderEffect(() => _setDynamicProps(n0, [{ ["." + _ctx.foo(_ctx.bar)]: _ctx.id }]))
+  return n0
+}"
+`;
+
 exports[`compiler v-bind > .prop modifier w/ dynamic arg 1`] = `
 "import { setDynamicProps as _setDynamicProps, renderEffect as _renderEffect, template as _template } from 'vue';
 const t0 = _template("<div></div>", true)

+ 28 - 1
packages/compiler-vapor/__tests__/transforms/vBind.spec.ts

@@ -455,7 +455,34 @@ describe('compiler v-bind', () => {
     )
   })
 
-  test.todo('.prop modifier w/ dynamic arg + prefixIdentifiers')
+  test('.prop modifier w/ dynamic arg + prefixIdentifiers', () => {
+    const { ir, code } = compileWithVBind(
+      `<div v-bind:[foo(bar)].prop="id"/>`,
+      { prefixIdentifiers: true },
+    )
+    expect(code).matchSnapshot()
+    expect(ir.block.effect[0].operations[0]).toMatchObject({
+      type: IRNodeTypes.SET_DYNAMIC_PROPS,
+      props: [
+        [
+          {
+            key: {
+              content: `foo(bar)`,
+              isStatic: false,
+            },
+            values: [
+              {
+                content: `id`,
+                isStatic: false,
+              },
+            ],
+            runtimeCamelize: false,
+            modifier: '.',
+          },
+        ],
+      ],
+    })
+  })
 
   test('.prop modifier (shorthand)', () => {
     const { ir, code } = compileWithVBind(`<div .fooBar="id"/>`)