import type { PersonDepartment, PrismaClient, UserRole, } from "@/generated/prisma/client" let sequence = 0 function nextSuffix() { sequence += 1 return `${Date.now()}-${sequence}` } export async function createTestUser( prisma: PrismaClient, overrides: Partial<{ username: string email: string name: string role: UserRole isActive: boolean }> = {}, ) { const suffix = nextSuffix() return prisma.user.create({ data: { username: overrides.username ?? `test-user-${suffix}`, email: overrides.email ?? `test-user-${suffix}@example.test`, name: overrides.name ?? "Test User", password: "hashed-password", role: overrides.role ?? "ADMIN", isActive: overrides.isActive ?? true, }, }) } export async function createTestCategory( prisma: PrismaClient, overrides: Partial<{ name: string }> = {}, ) { const suffix = nextSuffix() return prisma.category.create({ data: { name: overrides.name ?? `Test Category ${suffix}`, }, }) } export async function createTestPerson( prisma: PrismaClient, overrides: Partial<{ firstName: string lastName: string department: PersonDepartment email: string | null phone: string | null }> = {}, ) { const suffix = nextSuffix() return prisma.person.create({ data: { firstName: overrides.firstName ?? "Test", lastName: overrides.lastName ?? `Person-${suffix}`, department: overrides.department ?? "OTHER", email: overrides.email ?? null, phone: overrides.phone ?? null, }, }) } export async function createTestItem( prisma: PrismaClient, overrides: Partial<{ name: string stock: number categoryId: string }> = {}, ) { const categoryId = overrides.categoryId ?? (await createTestCategory(prisma)).id const suffix = nextSuffix() return prisma.item.create({ data: { name: overrides.name ?? `Test Item ${suffix}`, stock: overrides.stock ?? 0, category: { connect: { id: categoryId } }, }, }) }