From 84582ea4ab802fee46bbd07bc6a15611ddbef691 Mon Sep 17 00:00:00 2001 From: taherd <183945978+taherdhanera@users.noreply.github.com> Date: Wed, 13 May 2026 14:42:06 +0530 Subject: [PATCH 1/5] test: cover template page hydration --- .../interface/pages/template/index.test.tsx | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 plugins/interface/pages/template/index.test.tsx diff --git a/plugins/interface/pages/template/index.test.tsx b/plugins/interface/pages/template/index.test.tsx new file mode 100644 index 0000000..6e3f13c --- /dev/null +++ b/plugins/interface/pages/template/index.test.tsx @@ -0,0 +1,47 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' + +const hydrateRoot = vi.hoisted(() => vi.fn()) + +vi.mock('hono/jsx/dom/client', () => ({ + hydrateRoot, +})) + +vi.mock('../../public/global.css', () => ({})) + +describe('template page entrypoint', () => { + beforeEach(() => { + vi.resetModules() + hydrateRoot.mockClear() + }) + + afterEach(() => { + vi.unstubAllGlobals() + }) + + it('does not hydrate when the template root is missing', async () => { + const querySelector = vi.fn(() => null) + vi.stubGlobal('document', { querySelector }) + + await import('./index') + + expect(querySelector).toHaveBeenCalledWith( + '#root[data-client="template"]' + ) + expect(hydrateRoot).not.toHaveBeenCalled() + }) + + it('hydrates the template page when the server root is present', async () => { + const root = { + dataset: { + serverProps: '{}', + }, + } + const querySelector = vi.fn(() => root) + vi.stubGlobal('document', { querySelector }) + + await import('./index') + + expect(hydrateRoot).toHaveBeenCalledTimes(1) + expect(hydrateRoot).toHaveBeenCalledWith(root, expect.any(Object)) + }) +}) From ede63420ff0e32a98ee9aa89764d71fcae8c949b Mon Sep 17 00:00:00 2001 From: taherd <183945978+taherdhanera@users.noreply.github.com> Date: Wed, 13 May 2026 21:06:56 +0530 Subject: [PATCH 2/5] test: cover interface primitives --- .../interface/components/primitives.test.tsx | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 plugins/interface/components/primitives.test.tsx diff --git a/plugins/interface/components/primitives.test.tsx b/plugins/interface/components/primitives.test.tsx new file mode 100644 index 0000000..d701376 --- /dev/null +++ b/plugins/interface/components/primitives.test.tsx @@ -0,0 +1,98 @@ +import { renderToString } from 'hono/jsx/dom/server' +import { describe, expect, it } from 'vitest' + +import { Avatar } from './avatar' +import { Card } from './card' +import { Label } from './label/Label' +import { Loader } from './loader/Loader' +import { Toggle } from './toggle' + +describe('interface primitive components', () => { + it('renders avatar links with fallback initials and custom classes', () => { + const html = renderToString( + + ) + + expect(html).toContain('O

') + }) + + it('renders avatar images with accessible alt text and selected state', () => { + const html = renderToString( + + ) + + expect(html).toContain(' { + const link = renderToString( + + Docs + + ) + const panel = renderToString( + + Panel + + ) + + expect(link).toContain(' { + const invalid = renderToString( + + ) + const valid = renderToString( +