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) + } + />