From: daiwei Date: Wed, 26 Nov 2025 07:25:48 +0000 (+0800) Subject: test(compile): add tests for v-on multi statements, v-slot, and v-for X-Git-Tag: v3.6.0-alpha.6~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0fe3a34ea66bc35a4402f0a9d1ff14bd99222790;p=thirdparty%2Fvuejs%2Fcore.git test(compile): add tests for v-on multi statements, v-slot, and v-for --- 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', () => {