test: align jest db bootstrap with ci

This commit is contained in:
2025-10-16 23:01:29 -05:00
parent 8ca2756d7b
commit 2ad5946a4b
6 changed files with 46 additions and 22 deletions

View File

@@ -12,6 +12,15 @@ module.exports = async () => {
process.env.POSTGRES_HOST = process.env.POSTGRES_HOST || '127.0.0.1';
process.env.POSTGRES_PORT = process.env.POSTGRES_PORT || '55432';
const useDocker = process.env.USE_DOCKER_TEST_DB !== 'false';
if (useDocker) {
process.env.POSTGRES_DB = process.env.POSTGRES_DB || 'merchantsofhope_test';
process.env.POSTGRES_USER = process.env.POSTGRES_USER || 'postgres';
process.env.POSTGRES_PASSWORD = process.env.POSTGRES_PASSWORD || 'postgres';
process.env.POSTGRES_HOST = process.env.POSTGRES_HOST || '127.0.0.1';
process.env.POSTGRES_PORT = process.env.POSTGRES_PORT || '55432';
const composeFile = path.join(__dirname, '..', '..', '..', 'docker-compose.test.yml');
const upResult = spawnSync(
@@ -47,19 +56,30 @@ module.exports = async () => {
sleep(1000);
}
if (!ready) {
throw new Error('Database did not become ready in time');
}
}
const migratePath = path.join(__dirname, '..', 'database', 'migrate.js');
const result = spawnSync('node', [migratePath], {
cwd: path.join(__dirname, '..', '..'),
stdio: 'inherit',
env: process.env
});
const waitScript = path.join(__dirname, '..', '..', 'scripts', 'wait-for-db.js');
const waitResult = spawnSync('node', [waitScript], {
cwd: path.join(__dirname, '..', '..'),
stdio: 'inherit',
env: process.env
});
if (result.status !== 0) {
throw new Error('Database migration failed before running tests');
}
if (waitResult.status !== 0) {
throw new Error('Database wait script failed');
}
const migratePath = path.join(__dirname, '..', 'database', 'migrate.js');
const result = spawnSync('node', [migratePath], {
cwd: path.join(__dirname, '..', '..'),
stdio: 'inherit',
env: process.env
});
if (result.status !== 0) {
throw new Error('Database migration failed before running tests');
}
};

View File

@@ -7,14 +7,16 @@ module.exports = async () => {
await cleanupUploads();
await pool.end();
const composeFile = path.join(__dirname, '..', '..', '..', 'docker-compose.test.yml');
spawnSync(
'docker',
['compose', '-f', composeFile, 'down', '--volumes'],
{
cwd: path.join(__dirname, '..', '..'),
stdio: 'inherit',
env: process.env
}
);
if (process.env.USE_DOCKER_TEST_DB !== 'false') {
const composeFile = path.join(__dirname, '..', '..', '..', 'docker-compose.test.yml');
spawnSync(
'docker',
['compose', '-f', composeFile, 'down', '--volumes'],
{
cwd: path.join(__dirname, '..', '..'),
stdio: 'inherit',
env: process.env
}
);
}
};