]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
test: add v-show unit test (#56)
author白雾三语 <32354856+baiwusanyu-c@users.noreply.github.com>
Tue, 12 Dec 2023 07:52:49 +0000 (15:52 +0800)
committerGitHub <noreply@github.com>
Tue, 12 Dec 2023 07:52:49 +0000 (15:52 +0800)
packages/runtime-vapor/__tests__/vShow.spec.ts [new file with mode: 0644]
vitest.config.ts

diff --git a/packages/runtime-vapor/__tests__/vShow.spec.ts b/packages/runtime-vapor/__tests__/vShow.spec.ts
new file mode 100644 (file)
index 0000000..66f5b4b
--- /dev/null
@@ -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('<button>toggle</button><h1>hello world</h1>')
+        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('<button>toggle</button><h1>hello world</h1>')
+    btn?.click()
+    await nextTick()
+    expect(host.innerHTML).toBe(
+      '<button>toggle</button><h1 style="display: none;">hello world</h1>',
+    )
+  })
+})
index e5d5f59345f71ac06ca9705b8f81e23dc0df4c95..fc5f18832cb38718f0303ff1699ebea5d0df6852 100644 (file)
@@ -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'