1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-03-23 00:16:25 +01:00
unleash.unleash/scripts/jest-setup.ts
Gastón Fournier 9f0155e0cf
chore: cleanup old test dbs ()
This cleans up old dbs before running a new test
2025-03-14 11:44:58 +02:00

41 lines
1.7 KiB
TypeScript

import { Client, type ClientConfig } from 'pg';
import { migrateDb } from '../src/migrator';
import { getDbConfig } from '../src/test/e2e/helpers/database-config';
import { testDbPrefix } from '../src/test/e2e/helpers/database-init';
let initializationPromise: Promise<void> | null = null;
const initializeTemplateDb = (db: ClientConfig): Promise<void> => {
if (!initializationPromise) {
initializationPromise = (async () => {
const testDBTemplateName = process.env.TEST_DB_TEMPLATE_NAME;
const client = new Client(db);
await client.connect();
console.log(`Initializing template database ${testDBTemplateName}`);
// first clean up databases from previous runs
const result = await client.query(
`select datname from pg_database where datname like '${testDbPrefix}%';`,
);
result.rows.forEach(async (row: any) => {
console.log(`Dropping test database ${row.datname}`);
await client.query(`DROP DATABASE ${row.datname}`);
});
await client.query(`DROP DATABASE IF EXISTS ${testDBTemplateName}`);
await client.query(`CREATE DATABASE ${testDBTemplateName}`);
await client.end();
await migrateDb({
db: { ...db, database: testDBTemplateName },
} as any);
console.log(`Template database ${testDBTemplateName} migrated`);
})();
}
return initializationPromise;
};
export default async function globalSetup() {
process.env.TZ = 'UTC';
process.env.TEST_DB_TEMPLATE_NAME = 'unleash_template_db';
await initializeTemplateDb(getDbConfig());
}