Ajoute les tests des routes /api/cards, /api/cards/[id], /api/cards/random et /api/cards/themes, ainsi que les tests des helpers http (handleError, parseJsonBody) et de la factory getCardService. Corrige le formatage des fichiers sources embarqués non formatés par les commits précédents.
32 lines
916 B
TypeScript
32 lines
916 B
TypeScript
import { NextResponse, type NextRequest } from 'next/server'
|
|
import { ZodError } from 'zod'
|
|
import { AppError, ValidationError } from '@/domain/errors'
|
|
|
|
export function handleError(error: unknown): NextResponse {
|
|
if (error instanceof ZodError) {
|
|
return NextResponse.json(
|
|
{ error: 'ValidationError', message: 'Payload invalide', issues: error.flatten() },
|
|
{ status: 400 },
|
|
)
|
|
}
|
|
if (error instanceof AppError) {
|
|
return NextResponse.json(
|
|
{ error: error.name, message: error.message },
|
|
{ status: error.status },
|
|
)
|
|
}
|
|
console.error(error)
|
|
return NextResponse.json(
|
|
{ error: 'InternalServerError', message: 'Erreur interne' },
|
|
{ status: 500 },
|
|
)
|
|
}
|
|
|
|
export async function parseJsonBody(request: NextRequest): Promise<unknown> {
|
|
try {
|
|
return await request.json()
|
|
} catch {
|
|
throw new ValidationError('Corps de requête invalide (JSON attendu)')
|
|
}
|
|
}
|