]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
test(compiler-core): test expression transform w/ bindingMetadata
authorEvan You <yyx990803@gmail.com>
Fri, 4 Dec 2020 21:46:00 +0000 (16:46 -0500)
committerEvan You <yyx990803@gmail.com>
Fri, 4 Dec 2020 21:46:00 +0000 (16:46 -0500)
packages/compiler-core/__tests__/transforms/__snapshots__/transformExpressions.spec.ts.snap [new file with mode: 0644]
packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts

diff --git a/packages/compiler-core/__tests__/transforms/__snapshots__/transformExpressions.spec.ts.snap b/packages/compiler-core/__tests__/transforms/__snapshots__/transformExpressions.spec.ts.snap
new file mode 100644 (file)
index 0000000..782d7a5
--- /dev/null
@@ -0,0 +1,15 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`compiler: expression transform bindingMetadata inline mode 1`] = `
+"(_ctx, _cache) => {
+  return (_openBlock(), _createBlock(\\"div\\", null, _toDisplayString(__props.props) + \\" \\" + _toDisplayString(_unref(setup)) + \\" \\" + _toDisplayString(setupConst) + \\" \\" + _toDisplayString(_ctx.data) + \\" \\" + _toDisplayString(_ctx.options), 1 /* TEXT */))
+}"
+`;
+
+exports[`compiler: expression transform bindingMetadata non-inline mode 1`] = `
+"const { toDisplayString: _toDisplayString, createVNode: _createVNode, openBlock: _openBlock, createBlock: _createBlock } = Vue
+
+return function render(_ctx, _cache, $props, $setup, $data, $options) {
+  return (_openBlock(), _createBlock(\\"div\\", null, _toDisplayString($props.props) + \\" \\" + _toDisplayString($setup.setup) + \\" \\" + _toDisplayString($data.data) + \\" \\" + _toDisplayString($options.options), 1 /* TEXT */))
+}"
+`;
index e3d7e5058e9d3c254ce9222f0b611c5866385d95..2466fffe8afcfa00bb8997116a6a42223712bdb3 100644 (file)
@@ -6,7 +6,9 @@ import {
   NodeTypes,
   CompilerOptions,
   InterpolationNode,
-  ConstantTypes
+  ConstantTypes,
+  BindingTypes,
+  baseCompile
 } from '../../src'
 import { transformIf } from '../../src/transforms/vIf'
 import { transformExpression } from '../../src/transforms/transformExpression'
@@ -457,4 +459,50 @@ describe('compiler: expression transform', () => {
       })
     })
   })
+
+  describe('bindingMetadata', () => {
+    const bindingMetadata = {
+      props: BindingTypes.PROPS,
+      setup: BindingTypes.SETUP_MAYBE_REF,
+      setupConst: BindingTypes.SETUP_CONST,
+      data: BindingTypes.DATA,
+      options: BindingTypes.OPTIONS
+    }
+
+    function compileWithBindingMetadata(
+      template: string,
+      options?: CompilerOptions
+    ) {
+      return baseCompile(template, {
+        prefixIdentifiers: true,
+        bindingMetadata,
+        ...options
+      })
+    }
+
+    test('non-inline mode', () => {
+      const { code } = compileWithBindingMetadata(
+        `<div>{{ props }} {{ setup }} {{ data }} {{ options }}</div>`
+      )
+      expect(code).toMatch(`$props.props`)
+      expect(code).toMatch(`$setup.setup`)
+      expect(code).toMatch(`$data.data`)
+      expect(code).toMatch(`$options.options`)
+      expect(code).toMatch(`_ctx, _cache, $props, $setup, $data, $options`)
+      expect(code).toMatchSnapshot()
+    })
+
+    test('inline mode', () => {
+      const { code } = compileWithBindingMetadata(
+        `<div>{{ props }} {{ setup }} {{ setupConst }} {{ data }} {{ options }}</div>`,
+        { inline: true }
+      )
+      expect(code).toMatch(`__props.props`)
+      expect(code).toMatch(`_unref(setup)`)
+      expect(code).toMatch(`_toDisplayString(setupConst)`)
+      expect(code).toMatch(`_ctx.data`)
+      expect(code).toMatch(`_ctx.options`)
+      expect(code).toMatchSnapshot()
+    })
+  })
 })