targo-backend/test/factories/timesheet.factory.ts

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;
}