Fix: Test-Schema für Kaufdatum-Validierung aktualisiert
This commit is contained in:
@@ -10,7 +10,29 @@ const bikeSchema = z.object({
|
|||||||
.min(1, 'Name darf nicht nur aus Leerzeichen bestehen'),
|
.min(1, 'Name darf nicht nur aus Leerzeichen bestehen'),
|
||||||
brand: z.string().optional().transform((val) => val?.trim() || undefined),
|
brand: z.string().optional().transform((val) => val?.trim() || undefined),
|
||||||
model: 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()),
|
purchaseDate: z
|
||||||
|
.union([z.date(), z.string()])
|
||||||
|
.optional()
|
||||||
|
.transform((val) => {
|
||||||
|
if (!val || val === undefined) return undefined
|
||||||
|
if (val instanceof Date) {
|
||||||
|
return isNaN(val.getTime()) ? undefined : val
|
||||||
|
}
|
||||||
|
if (typeof val === 'string') {
|
||||||
|
// Handle YYYY-MM-DD format (from HTML date input)
|
||||||
|
if (/^\d{4}-\d{2}-\d{2}$/.test(val)) {
|
||||||
|
const date = new Date(val + 'T00:00:00.000Z')
|
||||||
|
return isNaN(date.getTime()) ? undefined : date
|
||||||
|
}
|
||||||
|
// Handle ISO datetime format or any other parseable date string
|
||||||
|
const date = new Date(val)
|
||||||
|
return isNaN(date.getTime()) ? undefined : date
|
||||||
|
}
|
||||||
|
return undefined
|
||||||
|
})
|
||||||
|
.refine((val) => val === undefined || val instanceof Date, {
|
||||||
|
message: 'Ungültiges Datumsformat',
|
||||||
|
}),
|
||||||
notes: z.string().optional().transform((val) => val?.trim() || undefined),
|
notes: z.string().optional().transform((val) => val?.trim() || undefined),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user