From f8aa8c6574de5cbc836e4e7698affe489bf4741a Mon Sep 17 00:00:00 2001 From: Marcel Date: Tue, 28 Apr 2026 17:36:01 +0200 Subject: [PATCH] =?UTF-8?q?test(stammbaum):=20component=20tests=20for=20St?= =?UTF-8?q?ammbaumSidePanel=20=E2=80=94=20displayName,=20empty=20state,=20?= =?UTF-8?q?loading=20indicator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- .../StammbaumSidePanel.svelte.spec.ts | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/frontend/src/lib/components/StammbaumSidePanel.svelte.spec.ts b/frontend/src/lib/components/StammbaumSidePanel.svelte.spec.ts index f924bbd4..4d426a02 100644 --- a/frontend/src/lib/components/StammbaumSidePanel.svelte.spec.ts +++ b/frontend/src/lib/components/StammbaumSidePanel.svelte.spec.ts @@ -43,4 +43,30 @@ describe('StammbaumSidePanel', () => { btn!.click(); expect(onClose).toHaveBeenCalledOnce(); }); + + it('renders the person displayName as heading', async () => { + render(StammbaumSidePanel, { node: makeNode(), onClose: vi.fn(), canWrite: false }); + await expect.element(page.getByText('Alice Müller')).toBeInTheDocument(); + }); + + it('shows empty-relationships message when no direct relationships are loaded', async () => { + render(StammbaumSidePanel, { node: makeNode(), onClose: vi.fn(), canWrite: false }); + await expect.element(page.getByText('Noch keine Beziehungen bekannt.')).toBeInTheDocument(); + }); + + it('shows loading indicator while fetching', async () => { + let resolveFirst: (v: unknown) => void; + vi.stubGlobal( + 'fetch', + vi.fn().mockImplementation( + () => + new Promise((resolve) => { + resolveFirst = resolve; + }) + ) + ); + render(StammbaumSidePanel, { node: makeNode(), onClose: vi.fn(), canWrite: false }); + await expect.element(page.getByText('…')).toBeInTheDocument(); + resolveFirst!({ ok: true, json: () => Promise.resolve([]) }); + }); });