diff --git a/packages/compiler-vapor/__tests__/transforms/_utils.ts b/packages/compiler-vapor/__tests__/transforms/_utils.ts new file mode 100644 index 000000000..0ace066db --- /dev/null +++ b/packages/compiler-vapor/__tests__/transforms/_utils.ts @@ -0,0 +1,22 @@ +import { type CompilerOptions, generate, parse, transform } from '../../src' + +export function makeCompile(options: CompilerOptions = {}) { + return (template: string, overrideOptions: CompilerOptions = {}) => { + const ast = parse(template, { + prefixIdentifiers: true, + ...options, + ...overrideOptions, + }) + const ir = transform(ast, { + prefixIdentifiers: true, + ...options, + ...overrideOptions, + }) + const { code, helpers, vaporHelpers } = generate(ir, { + prefixIdentifiers: true, + ...options, + ...overrideOptions, + }) + return { ast, ir, code, helpers, vaporHelpers } + } +} diff --git a/packages/compiler-vapor/__tests__/transforms/vBind.spec.ts b/packages/compiler-vapor/__tests__/transforms/vBind.spec.ts index 6381f1830..9629a9274 100644 --- a/packages/compiler-vapor/__tests__/transforms/vBind.spec.ts +++ b/packages/compiler-vapor/__tests__/transforms/vBind.spec.ts @@ -1,35 +1,13 @@ import { ErrorCodes, NodeTypes } from '@vue/compiler-dom' -import { - type CompilerOptions, - IRNodeTypes, - type RootIRNode, - compile as _compile, - generate, - parse, - transform, - transformElement, - transformVBind, -} from '../../src' +import { IRNodeTypes, transformElement, transformVBind } from '../../src' +import { makeCompile } from './_utils' -function compileWithVBind( - template: string, - options: CompilerOptions = {}, -): { - ir: RootIRNode - code: string -} { - const ast = parse(template, { prefixIdentifiers: true, ...options }) - const ir = transform(ast, { - nodeTransforms: [transformElement], - directiveTransforms: { - bind: transformVBind, - }, - prefixIdentifiers: true, - ...options, - }) - const { code } = generate(ir, { prefixIdentifiers: true, ...options }) - return { ir, code } -} +const compileWithVBind = makeCompile({ + nodeTransforms: [transformElement], + directiveTransforms: { + bind: transformVBind, + }, +}) describe('compiler v-bind', () => { test('basic', () => { diff --git a/packages/compiler-vapor/__tests__/transforms/vHtml.spec.ts b/packages/compiler-vapor/__tests__/transforms/vHtml.spec.ts index bebc1a800..30512bddb 100644 --- a/packages/compiler-vapor/__tests__/transforms/vHtml.spec.ts +++ b/packages/compiler-vapor/__tests__/transforms/vHtml.spec.ts @@ -1,33 +1,13 @@ -import { - BindingTypes, - DOMErrorCodes, - NodeTypes, - parse, -} from '@vue/compiler-dom' -import { - type CompilerOptions, - IRNodeTypes, - compile as _compile, - generate, - transform, -} from '../../src' -import { getBaseTransformPreset } from '../../src/compile' +import { BindingTypes, DOMErrorCodes, NodeTypes } from '@vue/compiler-dom' +import { IRNodeTypes, transformElement, transformVHtml } from '../../src' +import { makeCompile } from './_utils' -function compileWithVHtml(template: string, options: CompilerOptions = {}) { - const ast = parse(template, { prefixIdentifiers: true, ...options }) - const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(true) - const ir = transform(ast, { - nodeTransforms, - directiveTransforms, - prefixIdentifiers: true, - ...options, - }) - const { code, helpers, vaporHelpers } = generate(ir, { - prefixIdentifiers: true, - ...options, - }) - return { ir, code, helpers, vaporHelpers } -} +const compileWithVHtml = makeCompile({ + nodeTransforms: [transformElement], + directiveTransforms: { + html: transformVHtml, + }, +}) describe('v-html', () => { test('should convert v-html to innerHTML', () => { diff --git a/packages/compiler-vapor/__tests__/transforms/vOn.spec.ts b/packages/compiler-vapor/__tests__/transforms/vOn.spec.ts index 3b2d0c626..80ba34445 100644 --- a/packages/compiler-vapor/__tests__/transforms/vOn.spec.ts +++ b/packages/compiler-vapor/__tests__/transforms/vOn.spec.ts @@ -1,31 +1,13 @@ -import { BindingTypes, ErrorCodes, NodeTypes, parse } from '@vue/compiler-dom' -import { - type CompilerOptions, - IRNodeTypes, - compile as _compile, - generate, - transform, -} from '../../src' +import { BindingTypes, ErrorCodes, NodeTypes } from '@vue/compiler-dom' +import { IRNodeTypes, transformElement, transformVOn } from '../../src' +import { makeCompile } from './_utils' -import { transformVOn } from '../../src/transforms/vOn' -import { transformElement } from '../../src/transforms/transformElement' - -function compileWithVOn(template: string, options: CompilerOptions = {}) { - const ast = parse(template, { prefixIdentifiers: true, ...options }) - const ir = transform(ast, { - nodeTransforms: [transformElement], - directiveTransforms: { - on: transformVOn, - }, - prefixIdentifiers: true, - ...options, - }) - const { code, helpers, vaporHelpers } = generate(ir, { - prefixIdentifiers: true, - ...options, - }) - return { ir, code, helpers, vaporHelpers } -} +const compileWithVOn = makeCompile({ + nodeTransforms: [transformElement], + directiveTransforms: { + on: transformVOn, + }, +}) describe('v-on', () => { test('simple expression', () => { diff --git a/packages/compiler-vapor/__tests__/transforms/vOnce.spec.ts b/packages/compiler-vapor/__tests__/transforms/vOnce.spec.ts index d905f3957..12aa08af6 100644 --- a/packages/compiler-vapor/__tests__/transforms/vOnce.spec.ts +++ b/packages/compiler-vapor/__tests__/transforms/vOnce.spec.ts @@ -1,28 +1,13 @@ -import { BindingTypes, NodeTypes, parse } from '@vue/compiler-dom' -import { - type CompilerOptions, - IRNodeTypes, - compile as _compile, - generate as generate, - transform, -} from '../../src' +import { BindingTypes, NodeTypes } from '@vue/compiler-dom' +import { IRNodeTypes } from '../../src' import { getBaseTransformPreset } from '../../src/compile' +import { makeCompile } from './_utils' -function compileWithOnce(template: string, options: CompilerOptions = {}) { - const ast = parse(template, { prefixIdentifiers: true, ...options }) - const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(true) - const ir = transform(ast, { - nodeTransforms, - directiveTransforms, - prefixIdentifiers: true, - ...options, - }) - const { code, helpers, vaporHelpers } = generate(ir, { - prefixIdentifiers: true, - ...options, - }) - return { ir, code, helpers, vaporHelpers } -} +const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(true) +const compileWithOnce = makeCompile({ + nodeTransforms, + directiveTransforms, +}) describe('compiler: v-once', () => { test('basic', () => { @@ -38,9 +23,10 @@ describe('compiler: v-once', () => { }, }, ) - expect(helpers.size).toBe(0) - expect(ir.effect).toEqual([]) + expect(code).toMatchSnapshot() + expect(helpers).lengthOf(0) + expect(ir.effect).lengthOf(0) expect(ir.operation).toMatchObject([ { id: 1, @@ -80,16 +66,14 @@ describe('compiler: v-once', () => { parent: 3, }, ]) - - expect(code).toMatchSnapshot() }) test('as root node', () => { const { ir, code, helpers } = compileWithOnce(`
`) - expect(helpers.size).toBe(0) - expect(ir.effect).toEqual([]) - + expect(code).toMatchSnapshot() + expect(helpers).lengthOf(0) + expect(ir.effect).lengthOf(0) expect(ir.operation).toMatchObject([ { type: IRNodeTypes.SET_PROP, @@ -106,8 +90,6 @@ describe('compiler: v-once', () => { }, }, ]) - - expect(code).toMatchSnapshot() expect(code).not.contains('effect') }) @@ -115,9 +97,10 @@ describe('compiler: v-once', () => { const { ir, code, helpers } = compileWithOnce( `