import { PrismaClient } from '@prisma/client';
import { PrismaPg } from '@prisma/adapter-pg';
import 'dotenv/config';
let prismaTestClient: PrismaClient | null = null;
export function getTestPrisma(): PrismaClient {
if (!prismaTestClient) {
// Use test database URL
const connectionString = process.env.DATABASE_URL || 'postgres://user:password@localhost:5430/orbit_test';
const adapter = new PrismaPg({ connectionString });
prismaTestClient = new PrismaClient({ adapter });
}
return prismaTestClient;
}
export async function cleanupTestDb() {
const prisma = getTestPrisma();
// Delete in correct order due to foreign keys
// Add more tables as they're added to schema
try {
// When we add more models, delete them here in reverse order of dependencies
await prisma.user.deleteMany({});
} catch (err) {
console.error('Error cleaning test DB:', err);
}
}
export async function disconnectTestDb() {
if (prismaTestClient) {
await prismaTestClient.$disconnect();
prismaTestClient = null;
}
}
// Helper to create test users
export async function createTestUser(data?: {
email?: string;
firstName?: string;
lastName?: string;
encryptedPassword?: string;
}) {
const prisma = getTestPrisma();
return await prisma.user.create({
data: {
email: data?.email || 'test@example.com',
firstName: data?.firstName || 'Test',
lastName: data?.lastName || 'User',
encryptedPassword: data?.encryptedPassword || '$2a$10$test'
}
});
}