Fix: Leerzeichen-Validierung für Fahrrad-Namen

- Trimmen von Leerzeichen am Anfang und Ende des Namens
- Validierung verhindert Namen, die nur aus Leerzeichen bestehen
- Optional-Felder (brand, model, notes) werden ebenfalls getrimmt
- Leere optionale Strings werden zu undefined konvertiert
- Erweiterte Testfälle für Leerzeichen-Validierung hinzugefügt
This commit is contained in:
Denis Urs Rudolph
2025-12-05 22:18:25 +01:00
parent de193bc783
commit b525c07ccc
3 changed files with 131 additions and 8 deletions

View File

@@ -36,11 +36,15 @@ export const MaintenanceAction = z.enum([
])
export const bikeSchema = z.object({
name: z.string().min(1, 'Name ist erforderlich'),
brand: z.string().optional(),
model: z.string().optional(),
name: z
.string()
.min(1, 'Name ist erforderlich')
.trim()
.min(1, 'Name darf nicht nur aus Leerzeichen bestehen'),
brand: z.string().optional().transform((val) => val?.trim() || undefined),
model: z.string().optional().transform((val) => val?.trim() || undefined),
purchaseDate: z.string().datetime().optional().or(z.date().optional()),
notes: z.string().optional(),
notes: z.string().optional().transform((val) => val?.trim() || undefined),
})
export const wearPartSchema = z.object({