rwadurian/backend/services/leaderboard-service/test/setup-integration.ts

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>;
};
}