test: record snapshots for text optimization

This commit is contained in:
Evan You 2019-09-30 14:58:20 -04:00
parent e5e40e1e38
commit da0d785d84
2 changed files with 79 additions and 2 deletions

View File

@ -0,0 +1,60 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`compiler: optimize interpolation consecutive text 1`] = `
"const _Vue = Vue
return function render() {
with (this) {
const { toString: _toString } = _Vue
return _toString(foo) + \\" bar \\" + _toString(baz)
}
}"
`;
exports[`compiler: optimize interpolation consecutive text between elements 1`] = `
"const _Vue = Vue
return function render() {
with (this) {
const { createVNode: _createVNode, toString: _toString } = _Vue
return [
_createVNode(\\"div\\"),
_toString(foo) + \\" bar \\" + _toString(baz),
_createVNode(\\"div\\")
]
}
}"
`;
exports[`compiler: optimize interpolation consecutive text mixed with elements 1`] = `
"const _Vue = Vue
return function render() {
with (this) {
const { createVNode: _createVNode, toString: _toString } = _Vue
return [
_createVNode(\\"div\\"),
_toString(foo) + \\" bar \\" + _toString(baz),
_createVNode(\\"div\\"),
_toString(foo) + \\" bar \\" + _toString(baz),
_createVNode(\\"div\\")
]
}
}"
`;
exports[`compiler: optimize interpolation no consecutive text 1`] = `
"const _Vue = Vue
return function render() {
with (this) {
const { toString: _toString } = _Vue
return _toString(foo)
}
}"
`;
exports[`compiler: optimize interpolation with prefixIdentifiers: true 1`] = `
"const { toString } = Vue
return function render() {
const _ctx = this
return toString(_ctx.foo) + \\" bar \\" + toString(_ctx.baz + _ctx.qux)
}"
`;

View File

@ -1,13 +1,21 @@
import { CompilerOptions, parse, transform, NodeTypes } from '../../src' import {
CompilerOptions,
parse,
transform,
NodeTypes,
generate
} from '../../src'
import { optimizeText } from '../../src/transforms/optimizeText' import { optimizeText } from '../../src/transforms/optimizeText'
import { transformExpression } from '../../src/transforms/transformExpression' import { transformExpression } from '../../src/transforms/transformExpression'
import { transformElement } from '../../src/transforms/transformElement'
function transformWithTextOpt(template: string, options: CompilerOptions = {}) { function transformWithTextOpt(template: string, options: CompilerOptions = {}) {
const ast = parse(template) const ast = parse(template)
transform(ast, { transform(ast, {
nodeTransforms: [ nodeTransforms: [
...(options.prefixIdentifiers ? [transformExpression] : []), ...(options.prefixIdentifiers ? [transformExpression] : []),
optimizeText optimizeText,
transformElement
], ],
...options ...options
}) })
@ -23,6 +31,7 @@ describe('compiler: optimize interpolation', () => {
content: `foo` content: `foo`
} }
}) })
expect(generate(root).code).toMatchSnapshot()
}) })
test('consecutive text', () => { test('consecutive text', () => {
@ -38,6 +47,7 @@ describe('compiler: optimize interpolation', () => {
{ type: NodeTypes.INTERPOLATION, content: { content: `baz` } } { type: NodeTypes.INTERPOLATION, content: { content: `baz` } }
] ]
}) })
expect(generate(root).code).toMatchSnapshot()
}) })
test('consecutive text between elements', () => { test('consecutive text between elements', () => {
@ -55,6 +65,7 @@ describe('compiler: optimize interpolation', () => {
] ]
}) })
expect(root.children[2].type).toBe(NodeTypes.ELEMENT) expect(root.children[2].type).toBe(NodeTypes.ELEMENT)
expect(generate(root).code).toMatchSnapshot()
}) })
test('consecutive text mixed with elements', () => { test('consecutive text mixed with elements', () => {
@ -85,6 +96,7 @@ describe('compiler: optimize interpolation', () => {
] ]
}) })
expect(root.children[4].type).toBe(NodeTypes.ELEMENT) expect(root.children[4].type).toBe(NodeTypes.ELEMENT)
expect(generate(root).code).toMatchSnapshot()
}) })
test('with prefixIdentifiers: true', () => { test('with prefixIdentifiers: true', () => {
@ -108,5 +120,10 @@ describe('compiler: optimize interpolation', () => {
} }
] ]
}) })
expect(
generate(root, {
prefixIdentifiers: true
}).code
).toMatchSnapshot()
}) })
}) })