45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import { PrismaClient } from '@prisma/client';
|
|
|
|
const prisma = new PrismaClient();
|
|
|
|
beforeAll(async () => {
|
|
// Database connection check
|
|
try {
|
|
await prisma.$connect();
|
|
console.log('Database connected for integration tests');
|
|
} catch (error) {
|
|
console.warn('Database not available for integration tests, some tests may be skipped');
|
|
}
|
|
});
|
|
|
|
afterAll(async () => {
|
|
await prisma.$disconnect();
|
|
});
|
|
|
|
// Global test utilities
|
|
global.testUtils = {
|
|
prisma,
|
|
cleanDatabase: async () => {
|
|
const tablenames = await prisma.$queryRaw<
|
|
Array<{ tablename: string }>
|
|
>`SELECT tablename FROM pg_tables WHERE schemaname='public'`;
|
|
|
|
for (const { tablename } of tablenames) {
|
|
if (tablename !== '_prisma_migrations') {
|
|
try {
|
|
await prisma.$executeRawUnsafe(`TRUNCATE TABLE "public"."${tablename}" CASCADE;`);
|
|
} catch (error) {
|
|
console.log(`Could not truncate table ${tablename}`);
|
|
}
|
|
}
|
|
}
|
|
},
|
|
};
|
|
|
|
declare global {
|
|
var testUtils: {
|
|
prisma: PrismaClient;
|
|
cleanDatabase: () => Promise<void>;
|
|
};
|
|
}
|