From 2e25c22ddf1dc3adc2682dde8f615a2eb225f2fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E9=9B=BE=E4=B8=89=E8=AF=AD?= <32354856+baiwusanyu-c@users.noreply.github.com> Date: Tue, 12 Dec 2023 15:52:49 +0800 Subject: [PATCH] test: add v-show unit test (#56) --- .../runtime-vapor/__tests__/vShow.spec.ts | 59 +++++++++++++++++++ vitest.config.ts | 2 +- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 packages/runtime-vapor/__tests__/vShow.spec.ts diff --git a/packages/runtime-vapor/__tests__/vShow.spec.ts b/packages/runtime-vapor/__tests__/vShow.spec.ts new file mode 100644 index 000000000..66f5b4b1f --- /dev/null +++ b/packages/runtime-vapor/__tests__/vShow.spec.ts @@ -0,0 +1,59 @@ +import { template, children, withDirectives, on, vShow, render } from '../src' +import { ref, defineComponent, nextTick } from 'vue' +import { beforeEach, afterEach, describe, test, expect } from 'vitest' + +let host: HTMLElement + +const initHost = () => { + host = document.createElement('div') + host.setAttribute('id', 'host') + document.body.appendChild(host) +} +beforeEach(() => { + initHost() +}) +afterEach(() => { + host.remove() +}) + +describe('directive: v-show', () => { + test('basic', async () => { + const demo = defineComponent({ + setup() { + const visible = ref(true) + function handleClick() { + visible.value = !visible.value + } + const __returned__ = { visible, handleClick } + Object.defineProperty(__returned__, '__isScriptSetup', { + enumerable: false, + value: true, + }) + return __returned__ + }, + render(_ctx: any) { + const t0 = template('

hello world

') + const n0 = t0() + const { + 0: [n1], + 1: [n2], + } = children(n0 as ChildNode) + withDirectives(n2, [[vShow, () => _ctx.visible]]) + on( + n1 as HTMLElement, + 'click', + (...args) => _ctx.handleClick && _ctx.handleClick(...args), + ) + return n0 + }, + }) + render(demo as any, {}, '#host') + const btn = host.querySelector('button') + expect(host.innerHTML).toBe('

hello world

') + btn?.click() + await nextTick() + expect(host.innerHTML).toBe( + '

hello world

', + ) + }) +}) diff --git a/vitest.config.ts b/vitest.config.ts index e5d5f5934..fc5f18832 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -26,7 +26,7 @@ export default defineConfig({ threads: !process.env.GITHUB_ACTIONS, setupFiles: 'scripts/setupVitest.ts', environmentMatchGlobs: [ - ['packages/{vue,vue-compat,runtime-dom}/**', 'jsdom'] + ['packages/{vue,vue-compat,runtime-dom,runtime-vapor}/**', 'jsdom'] ], sequence: { hooks: 'list'