From 3b430828b7d8ce905efe57392abbbe455cc5046c Mon Sep 17 00:00:00 2001 From: Marcel Date: Tue, 28 Apr 2026 17:37:21 +0200 Subject: [PATCH] =?UTF-8?q?test(stammbaum):=20component=20tests=20for=20St?= =?UTF-8?q?ammbaumCard=20=E2=80=94=20heading,=20empty=20state,=20toggle,?= =?UTF-8?q?=20error=20display?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- .../components/StammbaumCard.svelte.spec.ts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 frontend/src/lib/components/StammbaumCard.svelte.spec.ts diff --git a/frontend/src/lib/components/StammbaumCard.svelte.spec.ts b/frontend/src/lib/components/StammbaumCard.svelte.spec.ts new file mode 100644 index 00000000..292b8280 --- /dev/null +++ b/frontend/src/lib/components/StammbaumCard.svelte.spec.ts @@ -0,0 +1,40 @@ +import { describe, it, expect, afterEach, vi } from 'vitest'; +import { cleanup, render } from 'vitest-browser-svelte'; +import { page } from 'vitest/browser'; +import StammbaumCard from './StammbaumCard.svelte'; + +vi.mock('$app/forms', () => ({ enhance: () => () => {} })); +vi.mock('$lib/components/RelationshipChip.svelte', () => ({ default: () => null })); +vi.mock('$lib/components/AddRelationshipForm.svelte', () => ({ default: () => null })); + +afterEach(cleanup); + +const baseProps = { + personId: 'person-1', + familyMember: false, + relationships: [], + inferredRelationships: [], + canWrite: false +}; + +describe('StammbaumCard', () => { + it('renders the section heading', async () => { + render(StammbaumCard, baseProps); + await expect.element(page.getByText('Stammbaum & Beziehungen')).toBeInTheDocument(); + }); + + it('shows empty-relationships message when relationships list is empty', async () => { + render(StammbaumCard, baseProps); + await expect.element(page.getByText('Noch keine Beziehungen bekannt.')).toBeInTheDocument(); + }); + + it('renders the family-member toggle when canWrite is true', async () => { + render(StammbaumCard, { ...baseProps, canWrite: true }); + await expect.element(page.getByText('Als Familienmitglied')).toBeInTheDocument(); + }); + + it('displays relationshipError text when provided', async () => { + render(StammbaumCard, { ...baseProps, relationshipError: 'Test Fehler' }); + await expect.element(page.getByText('Test Fehler')).toBeInTheDocument(); + }); +});