diff --git a/integration-tests/__tests__/alter-processor.spec.js b/integration-tests/__tests__/alter-processor.spec.js index 4d1e1b7c..d7ec6fba 100644 --- a/integration-tests/__tests__/alter-processor.spec.js +++ b/integration-tests/__tests__/alter-processor.spec.js @@ -1,23 +1,10 @@ const stableStringify = require('json-stable-stringify'); const _ = require('lodash'); -const fp = require('lodash/fp'); const uuidv1 = require('uuid/v1'); -const { testWrapper } = require('../tools'); +const { testWrapper, checkTableStructure } = require('../tools'); const engines = require('../engines'); const { getAlterTableScript, extendDatabaseInfo, generateDbPairingId } = require('dbgate-tools'); -function pickImportantTableInfo(table) { - return { - pureName: table.pureName, - columns: table.columns.map(fp.pick(['columnName', 'notNull', 'autoIncrement'])), - }; -} - -function checkTableStructure(t1, t2) { - // expect(t1.pureName).toEqual(t2.pureName) - expect(pickImportantTableInfo(t1)).toEqual(pickImportantTableInfo(t2)); -} - async function testTableDiff(conn, driver, mangle) { await driver.query(conn, `create table t0 (id int not null primary key)`); diff --git a/integration-tests/__tests__/table-create.spec.js b/integration-tests/__tests__/table-create.spec.js new file mode 100644 index 00000000..9d57ded8 --- /dev/null +++ b/integration-tests/__tests__/table-create.spec.js @@ -0,0 +1,41 @@ +const engines = require('../engines'); +const { testWrapper, checkTableStructure } = require('../tools'); +const { extendDatabaseInfo } = require('dbgate-tools'); + +async function testTableCreate(conn, driver, table) { + const dmp = driver.createDumper(); + const table1 = { + ...table, + pureName: 'tested', + }; + dmp.createTable(table1); + + console.log('RUNNING CREATE SQL', driver.engine, ':', dmp.s); + await driver.query(conn, dmp.s); + + const db = extendDatabaseInfo(await driver.analyseFull(conn)); + const table2 = db.tables.find(x => x.pureName == 'tested'); + + checkTableStructure(table1, table2); +} + +describe('Table create', () => { + test.each(engines.map(engine => [engine.label, engine]))( + 'Table structure - full analysis - %s', + testWrapper(async (conn, driver, engine) => { + await testTableCreate(conn, driver, { + columns: [ + { + columnName: 'col1', + dataType: 'int', + notNull: true, + autoIncrement: false, + }, + ], + primaryKey: { + columns: [{ columnName: 'col1' }], + }, + }); + }) + ); +}); diff --git a/integration-tests/engines.js b/integration-tests/engines.js index 26962699..11414919 100644 --- a/integration-tests/engines.js +++ b/integration-tests/engines.js @@ -16,7 +16,7 @@ const matviews = { const engines = [ { label: 'MySQL', - skipLocal: true, + // skipLocal: true, connection: { engine: 'mysql@dbgate-plugin-mysql', password: 'Pwd2020Db', @@ -94,7 +94,7 @@ const engines = [ }, { label: 'SQLite', - skipLocal: true, + // skipLocal: true, generateDbFile: true, connection: { engine: 'sqlite@dbgate-plugin-sqlite', diff --git a/integration-tests/tools.js b/integration-tests/tools.js index 821ea7eb..36fafe70 100644 --- a/integration-tests/tools.js +++ b/integration-tests/tools.js @@ -1,6 +1,7 @@ global.DBGATE_TOOLS = require('dbgate-tools'); const requireEngineDriver = require('dbgate-api/src/utility/requireEngineDriver'); const crypto = require('crypto'); +const fp = require('lodash/fp'); function randomDbName() { const generatedKey = crypto.randomBytes(6); @@ -55,9 +56,22 @@ const testWrapper = body => async (label, ...other) => { } }; +function pickImportantTableInfo(table) { + return { + pureName: table.pureName, + columns: table.columns.map(fp.pick(['columnName', 'notNull', 'autoIncrement'])), + }; +} + +function checkTableStructure(t1, t2) { + // expect(t1.pureName).toEqual(t2.pureName) + expect(pickImportantTableInfo(t1)).toEqual(pickImportantTableInfo(t2)); +} + module.exports = { randomDbName, connect, extractConnection, testWrapper, + checkTableStructure, };