mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			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());
 | 
						|
}
 |