test(compiler-core): test expression transform w/ bindingMetadata
This commit is contained in:
		
							parent
							
								
									d2d27b2e66
								
							
						
					
					
						commit
						338d869c70
					
				@ -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 */))
 | 
			
		||||
}"
 | 
			
		||||
`;
 | 
			
		||||
@ -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()
 | 
			
		||||
    })
 | 
			
		||||
  })
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user