From d97cd06f7068709fa514f5b1f7dc82d9eaf08989 Mon Sep 17 00:00:00 2001 From: Marcel Date: Sun, 26 Apr 2026 00:39:21 +0200 Subject: [PATCH] refactor(persons): export normalizePersonType from edit server module Tests now import from production code instead of a local copy, giving real regression protection if the inline logic is changed. Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/routes/persons/[id]/edit/+page.server.ts | 8 +++++++- frontend/src/routes/persons/[id]/edit/page.server.test.ts | 7 +------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/frontend/src/routes/persons/[id]/edit/+page.server.ts b/frontend/src/routes/persons/[id]/edit/+page.server.ts index 2d01ce1f..ecf62e0e 100644 --- a/frontend/src/routes/persons/[id]/edit/+page.server.ts +++ b/frontend/src/routes/persons/[id]/edit/+page.server.ts @@ -2,6 +2,12 @@ import { error, fail, redirect } from '@sveltejs/kit'; import { createApiClient } from '$lib/api.server'; import { getErrorMessage } from '$lib/errors'; +type PersonType = 'PERSON' | 'INSTITUTION' | 'GROUP' | 'UNKNOWN' | 'SKIP'; + +export function normalizePersonType(raw: string | undefined | null): Exclude { + return raw === 'SKIP' ? 'UNKNOWN' : ((raw ?? 'PERSON') as Exclude); +} + export async function load({ params, fetch, locals }) { const canWrite = (locals.user as { groups?: { permissions: string[] }[] } | undefined)?.groups?.some((g) => @@ -23,7 +29,7 @@ export async function load({ params, fetch, locals }) { } const person = result.data!; - const personType = person.personType === 'SKIP' ? 'UNKNOWN' : person.personType; + const personType = normalizePersonType(person.personType); return { person: { ...person, personType }, aliases: aliasesResult.data ?? [] }; } diff --git a/frontend/src/routes/persons/[id]/edit/page.server.test.ts b/frontend/src/routes/persons/[id]/edit/page.server.test.ts index a5e76b1a..83688903 100644 --- a/frontend/src/routes/persons/[id]/edit/page.server.test.ts +++ b/frontend/src/routes/persons/[id]/edit/page.server.test.ts @@ -1,10 +1,5 @@ import { describe, it, expect } from 'vitest'; - -type PersonType = 'PERSON' | 'INSTITUTION' | 'GROUP' | 'UNKNOWN' | 'SKIP'; - -function normalizePersonType(raw: string | undefined | null): PersonType { - return raw === 'SKIP' ? 'UNKNOWN' : ((raw ?? 'PERSON') as PersonType); -} +import { normalizePersonType } from './+page.server'; describe('edit load — SKIP → UNKNOWN normalization', () => { it('maps SKIP to UNKNOWN', () => {