diff --git a/integration-tests/__tests__/object-analyse.spec.js b/integration-tests/__tests__/object-analyse.spec.js index 27305f5c7..c59b0e259 100644 --- a/integration-tests/__tests__/object-analyse.spec.js +++ b/integration-tests/__tests__/object-analyse.spec.js @@ -1,4 +1,4 @@ -const { connect, randomDbName } = require('../tools'); +const { connect, randomDbName, testWrapper } = require('../tools'); const requireEngineDriver = require('dbgate-api/src/utility/requireEngineDriver'); const engines = require('../engines'); const _ = require('lodash'); @@ -7,7 +7,7 @@ const initSql = ['CREATE TABLE t1 (id int)', 'CREATE TABLE t2 (id int)']; function flatSource() { return _.flatten( - engines.map(engine => (engine.objects || []).map(object => [engine.label, object.type, engine, object])) + engines.map(engine => (engine.objects || []).map(object => [engine.label, engine, object.type, object])) ); } @@ -16,47 +16,47 @@ const obj1Match = expect.objectContaining({ }); describe('Object analyse', () => { - test.each(flatSource())('Full analysis (%s - %s)', async (label, type, engine, object) => { - const conn = await connect(engine, randomDbName()); - const driver = requireEngineDriver(engine.connection); - for (const sql of initSql) await driver.query(conn, sql); + test.each(flatSource())( + 'Full analysis (%s - %s)', + testWrapper(async (conn, driver, engine, type, object) => { + for (const sql of initSql) await driver.query(conn, sql); - await driver.query(conn, object.create1); - const structure = await driver.analyseFull(conn); + await driver.query(conn, object.create1); + const structure = await driver.analyseFull(conn); - expect(structure[type].length).toEqual(1); - expect(structure[type][0]).toEqual(obj1Match); - await driver.close(conn); - }); + expect(structure[type].length).toEqual(1); + expect(structure[type][0]).toEqual(obj1Match); + }) + ); - test.each(flatSource())('Incremental analysis - add (%s - %s)', async (label, type, engine, object) => { - const conn = await connect(engine, randomDbName()); - const driver = requireEngineDriver(engine.connection); - for (const sql of initSql) await driver.query(conn, sql); + test.each(flatSource())( + 'Incremental analysis - add (%s - %s)', + testWrapper(async (conn, driver, engine, type, object) => { + for (const sql of initSql) await driver.query(conn, sql); - await driver.query(conn, object.create2); - const structure1 = await driver.analyseFull(conn); - await driver.query(conn, object.create1); - const structure2 = await driver.analyseIncremental(conn, structure1); + await driver.query(conn, object.create2); + const structure1 = await driver.analyseFull(conn); + await driver.query(conn, object.create1); + const structure2 = await driver.analyseIncremental(conn, structure1); - expect(structure2[type].length).toEqual(2); - expect(structure2[type].find(x => x.pureName == 'obj1')).toEqual(obj1Match); - await driver.close(conn); - }); + expect(structure2[type].length).toEqual(2); + expect(structure2[type].find(x => x.pureName == 'obj1')).toEqual(obj1Match); + }) + ); - test.each(flatSource())('Incremental analysis - drop (%s - %s)', async (label, type, engine, object) => { - const conn = await connect(engine, randomDbName()); - const driver = requireEngineDriver(engine.connection); - for (const sql of initSql) await driver.query(conn, sql); + test.each(flatSource())( + 'Incremental analysis - drop (%s - %s)', + testWrapper(async (conn, driver, engine, type, object) => { + for (const sql of initSql) await driver.query(conn, sql); - await driver.query(conn, object.create1); - await driver.query(conn, object.create2); - const structure1 = await driver.analyseFull(conn); - await driver.query(conn, object.drop2); - const structure2 = await driver.analyseIncremental(conn, structure1); + await driver.query(conn, object.create1); + await driver.query(conn, object.create2); + const structure1 = await driver.analyseFull(conn); + await driver.query(conn, object.drop2); + const structure2 = await driver.analyseIncremental(conn, structure1); - expect(structure2[type].length).toEqual(1); - expect(structure2[type][0]).toEqual(obj1Match); - await driver.close(conn); - }); + expect(structure2[type].length).toEqual(1); + expect(structure2[type][0]).toEqual(obj1Match); + }) + ); }); diff --git a/integration-tests/__tests__/table-analyse.spec.js b/integration-tests/__tests__/table-analyse.spec.js index 54b7f46bd..881aecdf8 100644 --- a/integration-tests/__tests__/table-analyse.spec.js +++ b/integration-tests/__tests__/table-analyse.spec.js @@ -1,6 +1,6 @@ const requireEngineDriver = require('dbgate-api/src/utility/requireEngineDriver'); const engines = require('../engines'); -const { connect, randomDbName } = require('../tools'); +const { connect, randomDbName, testWrapper } = require('../tools'); const t1Sql = 'CREATE TABLE t1 (id int not null primary key, val varchar(50) null)'; const t1Match = expect.objectContaining({ @@ -26,33 +26,22 @@ const t1Match = expect.objectContaining({ }), }); - describe('Table analyse', () => { test.each(engines.map(engine => [engine.label, engine]))( 'Table structure - full analysis (%s)', - async (label, engine) => { - const conn = await connect(engine, randomDbName()); - try { - const driver = requireEngineDriver(engine.connection); + testWrapper(async (conn, driver, engine) => { + await driver.query(conn, t1Sql); - await driver.query(conn, t1Sql); + const structure = await driver.analyseFull(conn); - const structure = await driver.analyseFull(conn); - - expect(structure.tables.length).toEqual(1); - expect(structure.tables[0]).toEqual(t1Match); - } finally { - await driver.close(conn); - } - } + expect(structure.tables.length).toEqual(1); + expect(structure.tables[0]).toEqual(t1Match); + }) ); test.each(engines.map(engine => [engine.label, engine]))( 'Table add - incremental analysis (%s)', - async (label, engine) => { - const conn = await connect(engine, randomDbName()); - const driver = requireEngineDriver(engine.connection); - + testWrapper(async (conn, driver, engine) => { await driver.query(conn, 'CREATE TABLE t0 (id0 int)'); const structure1 = await driver.analyseFull(conn); await driver.query(conn, t1Sql); @@ -60,16 +49,12 @@ describe('Table analyse', () => { expect(structure2.tables.length).toEqual(2); expect(structure2.tables.find(x => x.pureName == 't1')).toEqual(t1Match); - await driver.close(conn); - } + }) ); test.each(engines.map(engine => [engine.label, engine]))( 'Table remove - incremental analysis (%s)', - async (label, engine) => { - const conn = await connect(engine, randomDbName()); - const driver = requireEngineDriver(engine.connection); - + testWrapper(async (conn, driver, engine) => { await driver.query(conn, t1Sql); await driver.query(conn, 'CREATE TABLE t2 (id2 int)'); const structure1 = await driver.analyseFull(conn); @@ -78,7 +63,6 @@ describe('Table analyse', () => { expect(structure2.tables.length).toEqual(1); expect(structure2.tables[0]).toEqual(t1Match); - await driver.close(conn); - } + }) ); }); diff --git a/integration-tests/tools.js b/integration-tests/tools.js index 0c8384649..29593adbb 100644 --- a/integration-tests/tools.js +++ b/integration-tests/tools.js @@ -45,10 +45,10 @@ async function connect(engine, database) { } const testWrapper = body => async (label, engine, ...other) => { + const driver = requireEngineDriver(engine.connection); const conn = await connect(engine, randomDbName()); try { - const driver = requireEngineDriver(engine.connection); - await body(driver, engine, ...other); + await body(conn, driver, engine, ...other); } finally { await driver.close(conn); }