From 93d46e93d998bf4ea27388eb45fb3d4e05a81341 Mon Sep 17 00:00:00 2001 From: kilisamemarisaaa <1798456934@qq.com> Date: Sat, 5 Sep 2026 10:17:58 +0800 Subject: [PATCH] style(@vben-core/shadcn-ui): format collapsible test --- .../collapsible/__tests__/collapsible.test.ts | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 packages/@core/ui-kit/shadcn-ui/src/components/collapsible/__tests__/collapsible.test.ts diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/collapsible/__tests__/collapsible.test.ts b/packages/@core/ui-kit/shadcn-ui/src/components/collapsible/__tests__/collapsible.test.ts new file mode 100644 index 000000000..eaa5d2572 --- /dev/null +++ b/packages/@core/ui-kit/shadcn-ui/src/components/collapsible/__tests__/collapsible.test.ts @@ -0,0 +1,47 @@ +import { createApp, defineComponent, h, nextTick, ref } from 'vue'; + +import { afterEach, describe, expect, it } from 'vitest'; + +import VbenCollapsible from '../collapsible.vue'; + +let activeApp: ReturnType | undefined; + +afterEach(() => { + activeApp?.unmount(); + activeApp = undefined; + document.body.innerHTML = ''; +}); + +describe('VbenCollapsible', () => { + it('keeps a one-pixel paint buffer around animated content', async () => { + const host = document.createElement('div'); + document.body.append(host); + + const open = ref(true); + const Consumer = defineComponent( + () => () => + h( + VbenCollapsible, + { open: open.value }, + { + collapsibleContent: () => h('div', { class: 'content-probe' }), + }, + ), + ); + + activeApp = createApp(Consumer); + activeApp.mount(host); + await nextTick(); + + const content = host.querySelector('[class~="-mx-px"]'); + expect(content).toBeInstanceOf(HTMLElement); + if (!(content instanceof HTMLElement)) return; + + expect(content.classList.contains('px-px')).toBe(true); + expect(content.classList.contains('overflow-hidden')).toBe(true); + + open.value = false; + await nextTick(); + expect(content.getAttribute('data-state')).toBe('closed'); + }); +});