40 lines
998 B
TypeScript
40 lines
998 B
TypeScript
// test/factories/timesheet.factory.ts
|
|
|
|
export type TimesheetPayload = {
|
|
employee_id: number;
|
|
is_approved?: boolean;
|
|
};
|
|
|
|
/**
|
|
* Construit un payload valide pour POST /timesheets.
|
|
* Par défaut, is_approved=false.
|
|
*/
|
|
export function makeTimesheet(
|
|
employeeId: number,
|
|
overrides: Partial<TimesheetPayload> = {}
|
|
): TimesheetPayload {
|
|
return {
|
|
employee_id: employeeId,
|
|
is_approved: false,
|
|
...overrides,
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Payload délibérément invalide pour déclencher un 400 via ValidationPipe.
|
|
*/
|
|
export function makeInvalidTimesheet(): Record<string, unknown> {
|
|
return { employee_id: 'not-a-number' };
|
|
}
|
|
|
|
/**
|
|
* Helper pour récupérer un employee_id existant
|
|
* sans importer les types Prisma dans le factory.
|
|
*/
|
|
export async function pickAnyEmployeeId(
|
|
prisma: { employees: { findFirst: (args?: any) => Promise<{ id: number } | null> } }
|
|
): Promise<number | null> {
|
|
const emp = await prisma.employees.findFirst({ select: { id: true } });
|
|
return emp?.id ?? null;
|
|
}
|