From f6bfc0ebab2320cfe01110dd51ba6c8d8cbfb153 Mon Sep 17 00:00:00 2001 From: Gulum Date: Sat, 6 Jun 2026 17:00:32 +0200 Subject: [PATCH] WURF-LINK-Addendum: Herkunft-Zeile zeigt originBreeder + Kontaktlink MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - originContactId gesetzt → Link /kontakte/{id} mit Kontaktname (Priorität) - Sonst originBreeder (Freitext) gesetzt → plain text - Sonst '—' (bisheriges Fallback) Behebt: 74 Tiere mit originBreeder sahen '—' obwohl Daten vorhanden e2e: 2 neue Tests (originBreeder-Text + Kontaktlink) Gate: vitest 82/82, e2e 126/126, build+tsc clean --- gerbil-manager-web/e2e/tiere.spec.ts | 19 +++++++++++++++++++ .../src/pages/GerbilDetailPage.tsx | 9 ++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/gerbil-manager-web/e2e/tiere.spec.ts b/gerbil-manager-web/e2e/tiere.spec.ts index d60d1a3..052b865 100644 --- a/gerbil-manager-web/e2e/tiere.spec.ts +++ b/gerbil-manager-web/e2e/tiere.spec.ts @@ -108,6 +108,25 @@ test('Detailseite: Wurf-Feld ist ein Link zur Wurf-Detailseite (WURF-LINK)', asy await expect(page.getByRole('heading', { name: 'Wurf K' })).toBeVisible() }) +test('Detailseite: Herkunft zeigt originBreeder als Text wenn kein Kontakt (WURF-LINK-Addendum)', async ({ page }) => { + skipUnlessMock() + // Fridolin hat originContactId=null + originBreeder='Zoohandlung Meier' → plain text, kein Link + await page.goto('/rennmaeuse/fridolin') + await expect(page.getByRole('heading', { name: 'Fridolin' })).toBeVisible() + await expect(page.getByText('Zoohandlung Meier')).toBeVisible() + // Kein Link mit diesem Namen — es ist reiner Text + await expect(page.getByRole('link', { name: 'Zoohandlung Meier' })).toBeHidden() +}) + +test('Detailseite: Herkunft zeigt Kontaktlink wenn originContactId gesetzt (WURF-LINK-Addendum)', async ({ page }) => { + skipUnlessMock() + // Krümel hat originContactId='con-meier' → Link /kontakte/con-meier (Priorität vor originBreeder) + await page.goto('/rennmaeuse/kruemel') + const originLink = page.getByRole('link', { name: 'Zoohandlung Meier' }) + await expect(originLink).toBeVisible() + await expect(originLink).toHaveAttribute('href', '/kontakte/con-meier') +}) + test('Tier bearbeiten — Notizen ändern', async ({ page }) => { skipUnlessMock() await page.goto('/rennmaeuse/kruemel/bearbeiten') diff --git a/gerbil-manager-web/src/pages/GerbilDetailPage.tsx b/gerbil-manager-web/src/pages/GerbilDetailPage.tsx index e002df0..ad3dd66 100644 --- a/gerbil-manager-web/src/pages/GerbilDetailPage.tsx +++ b/gerbil-manager-web/src/pages/GerbilDetailPage.tsx @@ -181,7 +181,14 @@ export default function GerbilDetailPage() { : lookup(litterName, g.litterId) } /> - + {contactName.get(g.originContactId)} + : (g.originBreeder || null) + } + />