From 7d0d9d3e22edc4621c13fac0caebf0b32c86a01a Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Mon, 11 Nov 2024 16:22:18 +0100 Subject: [PATCH] try to fix tests --- .../__tests__/deploy-database.spec.js | 130 +++++++++--------- packages/api/src/shell/deployDb.js | 46 ++++--- 2 files changed, 93 insertions(+), 83 deletions(-) diff --git a/integration-tests/__tests__/deploy-database.spec.js b/integration-tests/__tests__/deploy-database.spec.js index cdcea6ca..61fc3aa6 100644 --- a/integration-tests/__tests__/deploy-database.spec.js +++ b/integration-tests/__tests__/deploy-database.spec.js @@ -613,77 +613,77 @@ describe('Deploy database', () => { }) ); - // test.each(engines.filter(x => !x.skipDataModifications).map(engine => [engine.label, engine]))( - // 'Script drived deploy - basic predeploy - %s', - // testWrapper(async (conn, driver, engine) => { - // await testDatabaseDeploy(engine, conn, driver, [ - // [ - // { - // name: '1.predeploy.sql', - // text: 'create table t1 (id int primary key); insert into t1 (id) values (1);', - // }, - // ], - // ]); + test.each(engines.filter(x => !x.skipDataModifications).map(engine => [engine.label, engine]))( + 'Script drived deploy - basic predeploy - %s', + testWrapper(async (conn, driver, engine) => { + await testDatabaseDeploy(engine, conn, driver, [ + [ + { + name: '1.predeploy.sql', + text: 'create table t1 (id int primary key); insert into t1 (id) values (1);', + }, + ], + ]); - // const res1 = await driver.query(conn, 'SELECT COUNT(*) AS cnt FROM t1'); - // expect(res1.rows[0].cnt == 1).toBeTruthy(); + const res1 = await driver.query(conn, 'SELECT COUNT(*) AS cnt FROM t1'); + expect(res1.rows[0].cnt == 1).toBeTruthy(); - // const res2 = await driver.query(conn, 'SELECT COUNT(*) AS cnt FROM dbgate_deploy_journal'); - // expect(res2.rows[0].cnt == 1).toBeTruthy(); - // }) - // ); + const res2 = await driver.query(conn, 'SELECT COUNT(*) AS cnt FROM dbgate_deploy_journal'); + expect(res2.rows[0].cnt == 1).toBeTruthy(); + }) + ); - // test.each(engines.filter(x => !x.skipDataModifications).map(engine => [engine.label, engine]))( - // 'Script drived deploy - install+uninstall - %s', - // testWrapper(async (conn, driver, engine) => { - // await testDatabaseDeploy(engine, conn, driver, [ - // [ - // { - // name: 't1.uninstall.sql', - // text: 'drop table t1', - // }, - // { - // name: 't1.install.sql', - // text: 'create table t1 (id int primary key); insert into t1 (id) values (1)', - // }, - // { - // name: 't2.once.sql', - // text: 'create table t2 (id int primary key); insert into t2 (id) values (1)', - // }, - // ], - // [ - // { - // name: 't1.uninstall.sql', - // text: 'drop table t1', - // }, - // { - // name: 't1.install.sql', - // text: 'create table t1 (id int primary key, val int); insert into t1 (id, val) values (1, 11)', - // }, - // { - // name: 't2.once.sql', - // text: 'insert into t2 (id) values (2)', - // }, - // ], - // ]); + test.each(engines.filter(x => !x.skipDataModifications).map(engine => [engine.label, engine]))( + 'Script drived deploy - install+uninstall - %s', + testWrapper(async (conn, driver, engine) => { + await testDatabaseDeploy(engine, conn, driver, [ + [ + { + name: 't1.uninstall.sql', + text: 'drop table t1', + }, + { + name: 't1.install.sql', + text: 'create table t1 (id int primary key); insert into t1 (id) values (1)', + }, + { + name: 't2.once.sql', + text: 'create table t2 (id int primary key); insert into t2 (id) values (1)', + }, + ], + [ + { + name: 't1.uninstall.sql', + text: 'drop table t1', + }, + { + name: 't1.install.sql', + text: 'create table t1 (id int primary key, val int); insert into t1 (id, val) values (1, 11)', + }, + { + name: 't2.once.sql', + text: 'insert into t2 (id) values (2)', + }, + ], + ]); - // const res1 = await driver.query(conn, 'SELECT val from t1 where id = 1'); - // expect(res1.rows[0].val == 11).toBeTruthy(); + const res1 = await driver.query(conn, 'SELECT val from t1 where id = 1'); + expect(res1.rows[0].val == 11).toBeTruthy(); - // const res2 = await driver.query(conn, 'SELECT COUNT(*) AS cnt FROM t2'); - // expect(res2.rows[0].cnt == 1).toBeTruthy(); + const res2 = await driver.query(conn, 'SELECT COUNT(*) AS cnt FROM t2'); + expect(res2.rows[0].cnt == 1).toBeTruthy(); - // const res3 = await driver.query(conn, 'SELECT COUNT(*) AS cnt FROM dbgate_deploy_journal'); - // expect(res3.rows[0].cnt == 3).toBeTruthy(); + const res3 = await driver.query(conn, 'SELECT COUNT(*) AS cnt FROM dbgate_deploy_journal'); + expect(res3.rows[0].cnt == 3).toBeTruthy(); - // const res4 = await driver.query(conn, "SELECT run_count from dbgate_deploy_journal where name = 't2.once.sql'"); - // expect(res4.rows[0].run_count == 1).toBeTruthy(); + const res4 = await driver.query(conn, "SELECT run_count from dbgate_deploy_journal where name = 't2.once.sql'"); + expect(res4.rows[0].run_count == 1).toBeTruthy(); - // const res5 = await driver.query( - // conn, - // "SELECT run_count from dbgate_deploy_journal where name = 't1.install.sql'" - // ); - // expect(res5.rows[0].run_count == 2).toBeTruthy(); - // }) - // ); + const res5 = await driver.query( + conn, + "SELECT run_count from dbgate_deploy_journal where name = 't1.install.sql'" + ); + expect(res5.rows[0].run_count == 2).toBeTruthy(); + }) + ); }); diff --git a/packages/api/src/shell/deployDb.js b/packages/api/src/shell/deployDb.js index e9027968..47f73f77 100644 --- a/packages/api/src/shell/deployDb.js +++ b/packages/api/src/shell/deployDb.js @@ -17,28 +17,38 @@ async function deployDb({ ignoreNameRegex = '', targetSchema = null, }) { - const dbhan = systemConnection || (await connectUtility(driver, connection, 'read')); if (!driver) driver = requireEngineDriver(connection); + const dbhan = systemConnection || (await connectUtility(driver, connection, 'read')); - const scriptDeployer = new ScriptDrivedDeployer(dbhan, driver, loadedDbModel ?? (await loadModelFolder(modelFolder))); - await scriptDeployer.runPre(); + try { + const scriptDeployer = new ScriptDrivedDeployer( + dbhan, + driver, + loadedDbModel ?? (await loadModelFolder(modelFolder)) + ); + await scriptDeployer.runPre(); - const { sql } = await generateDeploySql({ - connection, - systemConnection: dbhan, - driver, - analysedStructure, - modelFolder, - loadedDbModel, - modelTransforms, - dbdiffOptionsExtra, - ignoreNameRegex, - targetSchema, - }); - // console.log('RUNNING DEPLOY SCRIPT:', sql); - await executeQuery({ connection, systemConnection: dbhan, driver, sql, logScriptItems: true }); + const { sql } = await generateDeploySql({ + connection, + systemConnection: dbhan, + driver, + analysedStructure, + modelFolder, + loadedDbModel, + modelTransforms, + dbdiffOptionsExtra, + ignoreNameRegex, + targetSchema, + }); + // console.log('RUNNING DEPLOY SCRIPT:', sql); + await executeQuery({ connection, systemConnection: dbhan, driver, sql, logScriptItems: true }); - await scriptDeployer.runPost(); + await scriptDeployer.runPost(); + } finally { + if (!systemConnection) { + await driver.close(dbhan); + } + } } module.exports = deployDb;