From 0fe3a34ea66bc35a4402f0a9d1ff14bd99222790 Mon Sep 17 00:00:00 2001 From: daiwei Date: Wed, 26 Nov 2025 15:25:48 +0800 Subject: [PATCH] test(compile): add tests for v-on multi statements, v-slot, and v-for --- .../__snapshots__/compile.spec.ts.snap | 42 +++++++++++++++++++ .../compiler-vapor/__tests__/compile.spec.ts | 22 +++++++++- 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/packages/compiler-vapor/__tests__/__snapshots__/compile.spec.ts.snap b/packages/compiler-vapor/__tests__/__snapshots__/compile.spec.ts.snap index 9527a9dbd6..a5d422aed2 100644 --- a/packages/compiler-vapor/__tests__/__snapshots__/compile.spec.ts.snap +++ b/packages/compiler-vapor/__tests__/__snapshots__/compile.spec.ts.snap @@ -290,6 +290,48 @@ exports[`compile > expression parsing > v-bind 1`] = ` " `; +exports[`compile > expression parsing > v-for 1`] = ` +"import { createFor as _createFor, template as _template } from 'vue'; +const t0 = _template("
") + +export function render(_ctx) { + const n0 = _createFor(() => (_ctx.a.b), (_for_item0, _for_key0, _for_index0) => { + const n2 = t0() + return n2 + }) + return n0 +}" +`; + +exports[`compile > expression parsing > v-on multi statements 1`] = ` +"import { createInvoker as _createInvoker, delegateEvents as _delegateEvents, template as _template } from 'vue'; +const t0 = _template("
", true) +_delegateEvents("click") + +export function render(_ctx) { + const n0 = t0() + n0.$evtclick = _createInvoker(() => {_ctx.a++;_ctx.b++}) + return n0 +}" +`; + +exports[`compile > expression parsing > v-slot 1`] = ` +"import { resolveComponent as _resolveComponent, toDisplayString as _toDisplayString, setText as _setText, renderEffect as _renderEffect, withVaporCtx as _withVaporCtx, createComponentWithFallback as _createComponentWithFallback, template as _template } from 'vue'; +const t0 = _template(" ") + +export function render(_ctx) { + const _component_Comp = _resolveComponent("Comp") + const n1 = _createComponentWithFallback(_component_Comp, null, { + "foo": _withVaporCtx((_slotProps0) => { + const n0 = t0() + _renderEffect(() => _setText(n0, _toDisplayString(_slotProps0["a"] + _slotProps0["b"]))) + return n0 + }) + }, true) + return n1 +}" +`; + exports[`compile > fragment 1`] = ` "import { template as _template } from 'vue'; const t0 = _template("

") diff --git a/packages/compiler-vapor/__tests__/compile.spec.ts b/packages/compiler-vapor/__tests__/compile.spec.ts index 58800e02c2..bec1bfc696 100644 --- a/packages/compiler-vapor/__tests__/compile.spec.ts +++ b/packages/compiler-vapor/__tests__/compile.spec.ts @@ -85,7 +85,6 @@ describe('compile', () => { ) expect(code).toMatchSnapshot() - // Waiting for TODO, There should be more here. }) }) @@ -196,7 +195,26 @@ describe('compile', () => { ) }) - // TODO: add more test for expression parsing (v-on, v-slot, v-for) + test('v-on multi statements', () => { + const code = compile(`
`, { + prefixIdentifiers: true, + }) + expect(code).matchSnapshot() + }) + + test('v-slot', () => { + const code = compile(`{{ a + b }}`, { + prefixIdentifiers: true, + }) + expect(code).matchSnapshot() + }) + + test('v-for', () => { + const code = compile(`
`, { + prefixIdentifiers: true, + }) + expect(code).matchSnapshot() + }) }) describe('custom directive', () => { -- 2.47.3