db.mock.ts•1.8 kB
/**
* Mock implementation for the database module
* This allows tests to run without requiring a real database connection
*/
import { jest } from '@jest/globals';
// Define type for transaction callback to avoid 'unknown' error
type TransactionCallback<T> = (prisma: any) => Promise<T>;
// Mock the database module
jest.mock('../../utils/db', () => {
// Create mock implementation for the db object
const dbMock = {
connect: jest.fn().mockResolvedValue(undefined as any),
disconnect: jest.fn().mockResolvedValue(undefined as any)
};
// Create mock implementation for the Prisma client
// Use type assertion to avoid circular reference errors
const prismaMock: any = {
article: {
findMany: jest.fn().mockResolvedValue([] as any[]),
findUnique: jest.fn().mockResolvedValue(null as any),
create: jest.fn().mockResolvedValue({} as any),
update: jest.fn().mockResolvedValue({} as any),
delete: jest.fn().mockResolvedValue({} as any)
},
source: {
findMany: jest.fn().mockResolvedValue([] as any[]),
findUnique: jest.fn().mockResolvedValue(null as any),
create: jest.fn().mockResolvedValue({} as any),
update: jest.fn().mockResolvedValue({} as any),
delete: jest.fn().mockResolvedValue({} as any)
},
$queryRaw: jest.fn().mockResolvedValue([{ test: 1 }] as any),
$transaction: jest.fn().mockImplementation(async <T>(cb: TransactionCallback<T>): Promise<T> => {
try {
return await cb(prismaMock);
} catch (error) {
throw error;
}
})
};
// Export the mock implementations
return {
db: dbMock,
prisma: prismaMock,
connectDb: jest.fn().mockResolvedValue(undefined as any),
disconnectDb: jest.fn().mockResolvedValue(undefined as any)
};
});