/** * Component: Prisma Mock Factory * Documentation: documentation/backend/database.md */ import { vi } from 'vitest'; type PrismaModelMock = { findMany: ReturnType; findFirst: ReturnType; findUnique: ReturnType; create: ReturnType; update: ReturnType; updateMany: ReturnType; upsert: ReturnType; delete: ReturnType; deleteMany: ReturnType; count: ReturnType; }; const createModelMock = (): PrismaModelMock => ({ findMany: vi.fn(), findFirst: vi.fn(), findUnique: vi.fn(), create: vi.fn(() => Promise.resolve({})), update: vi.fn(), updateMany: vi.fn(), upsert: vi.fn(), delete: vi.fn(), deleteMany: vi.fn(), count: vi.fn(), }); export const createPrismaMock = () => ({ configuration: createModelMock(), user: createModelMock(), request: createModelMock(), audiobook: createModelMock(), downloadHistory: createModelMock(), plexLibrary: createModelMock(), audibleCache: createModelMock(), job: createModelMock(), jobEvent: createModelMock(), scheduledJob: createModelMock(), bookDateConfig: createModelMock(), bookDateRecommendation: createModelMock(), bookDateSwipe: createModelMock(), $queryRaw: vi.fn(), $disconnect: vi.fn(), });