32 lines
953 B
TypeScript
Executable File
32 lines
953 B
TypeScript
Executable File
import { Client } from 'pg';
|
|
|
|
async function waitForDb(retries = 20): Promise<void> {
|
|
const config = {
|
|
host: process.env.TEST_PGHOST || 'localhost',
|
|
port: parseInt(process.env.TEST_PGPORT || '55432', 10),
|
|
user: process.env.TEST_PGUSER || 'redefined_test',
|
|
password: process.env.TEST_PGPASSWORD || 'redefined_test',
|
|
database: process.env.TEST_PGDATABASE || 'redefined_test'
|
|
};
|
|
for (let i = 0; i < retries; i++) {
|
|
const client = new Client(config);
|
|
try {
|
|
await client.connect();
|
|
await client.end();
|
|
return;
|
|
} catch {
|
|
await new Promise(r => setTimeout(r, 1000));
|
|
}
|
|
}
|
|
throw new Error(
|
|
'Could not reach the test database on port 55432. Run `npm run db:test:up` before `npm run test:integration`.'
|
|
);
|
|
}
|
|
|
|
export default async function globalSetup(): Promise<void> {
|
|
await waitForDb();
|
|
const { migrate, closeDb } = await import('./testDb');
|
|
await migrate();
|
|
await closeDb();
|
|
}
|