integration tests WIP

This commit is contained in:
Jan Prochazka
2021-05-27 09:26:37 +02:00
parent 0413075af6
commit 54fec7fd6d
7 changed files with 74 additions and 19 deletions

View File

@@ -25,7 +25,7 @@ async function connect(connection, database) {
describe('Analyse tests', () => {
test.each(engines.map(engine => [engine.label, engine.connection]))(
'Create table (%s)',
'Table - full analysis (%s)',
async (label, connection) => {
const conn = await connect(connection, randomDbName());
const driver = requireEngineDriver(connection);
@@ -48,4 +48,30 @@ describe('Analyse tests', () => {
await driver.close(conn);
}
);
test.each(engines.map(engine => [engine.label, engine.connection]))(
'Table add - incremental analysis (%s)',
async (label, connection) => {
const conn = await connect(connection, randomDbName());
const driver = requireEngineDriver(connection);
await driver.query(conn, 'CREATE TABLE t1 (id int)');
const structure1 = await driver.analyseFull(conn);
await driver.query(conn, 'CREATE TABLE t2 (id2 int)');
const structure2 = await driver.analyseIncremental(conn, structure1);
expect(structure2.tables.length).toEqual(2);
expect(structure2.tables.find(x => x.pureName == 't2')).toEqual(
expect.objectContaining({
pureName: 't2',
columns: [
expect.objectContaining({
columnName: 'id2',
}),
],
})
);
await driver.close(conn);
}
);
});

View File

@@ -9,6 +9,26 @@ const engines = [
port: 15001,
},
},
{
label: 'PostgreSQL',
connection: {
engine: 'postgres@dbgate-plugin-postgres',
server: 'localhost',
password: 'Pwd2020Db',
user: 'postgres',
port: 15000,
},
},
{
label: 'SQL Server',
connection: {
engine: 'mssql@dbgate-plugin-mssql',
server: 'localhost',
password: 'Pwd2020Db',
user: 'sa',
port: 15002,
},
},
];
module.exports = engines;

View File

@@ -9,9 +9,9 @@
"author": "Jan Prochazka",
"license": "MIT",
"scripts": {
"prepare": "cross-env DEVMODE=1 node prepare.js",
"wait": "cross-env DEVMODE=1 node wait.js",
"test": "cross-env DEVMODE=1 jest --runInBand",
"start": "docker-compose down && docker-compose up -d && node wait.js && yarn prepare && yarn test"
"run:all": "docker-compose down && docker-compose up -d && yarn wait && yarn test"
},
"devDependencies": {
"cross-env": "^7.0.3",

View File

@@ -1,14 +0,0 @@
const requireEngineDriver = require('dbgate-api/src/utility/requireEngineDriver');
const engines = require('./engines');
global.DBGATE_TOOLS = require('dbgate-tools');
async function run() {
for (const engine of engines) {
const driver = requireEngineDriver(engine.connection);
const conn = await driver.connect(engine.connection);
await driver.query(conn, 'CREATE DATABASE dbtest');
await driver.close(conn);
}
}
run();

View File

@@ -1,6 +1,23 @@
const requireEngineDriver = require('dbgate-api/src/utility/requireEngineDriver');
const engines = require('./engines');
global.DBGATE_TOOLS = require('dbgate-tools');
async function run() {
console.log('Waiting for starting containers...');
await new Promise(resolve => setTimeout(resolve, 20000));
for (const engine of engines) {
const driver = requireEngineDriver(engine.connection);
for (;;) {
try {
const conn = await driver.connect(engine.connection);
await driver.getVersion(conn);
await driver.close(conn);
break;
} catch (err) {
console.log(`Waiting for ${engine.label}`);
await new Promise(resolve => setTimeout(resolve, 1000));
continue;
}
}
}
}
run();

View File

@@ -63,6 +63,9 @@ const driver = {
return tediousConnect(conn);
},
async close(pool) {
return pool.close();
},
async queryCore(pool, sql, options) {
if (pool._connectionType == 'msnodesqlv8') {
return nativeQueryCore(pool, sql, options);

View File

@@ -113,6 +113,9 @@ const drivers = driverBases.map(driverBase => ({
await client.connect();
return client;
},
async close(pool) {
return pool.end();
},
async query(client, sql) {
if (sql == null) {
return {