mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-02 18:23:59 +00:00
alter table - flat tests
This commit is contained in:
@@ -90,7 +90,7 @@ const TESTED_COLUMNS = ['col_pk', 'col_std', 'col_def', 'col_fk', 'col_ref', 'co
|
|||||||
// const TESTED_COLUMNS = ['col_std'];
|
// const TESTED_COLUMNS = ['col_std'];
|
||||||
// const TESTED_COLUMNS = ['col_ref'];
|
// const TESTED_COLUMNS = ['col_ref'];
|
||||||
|
|
||||||
function create_engines_columns_source(engines) {
|
function createEnginesColumnsSource(engines) {
|
||||||
return _.flatten(
|
return _.flatten(
|
||||||
engines.map(engine =>
|
engines.map(engine =>
|
||||||
TESTED_COLUMNS.filter(col => col.endsWith('_pk') || !engine.skipNonPkRename)
|
TESTED_COLUMNS.filter(col => col.endsWith('_pk') || !engine.skipNonPkRename)
|
||||||
@@ -116,45 +116,28 @@ describe('Alter table', () => {
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
const columnsSource = create_engines_columns_source(engines);
|
test.each(
|
||||||
const dropableColumnsSrouce = columnsSource.filter(
|
createEnginesColumnsSource(engines).filter(([_label, col, engine]) => !engine.skipPkDrop || !col.endsWith('_pk'))
|
||||||
([_label, col, engine]) => !engine.skipPkDrop || !col.endsWith('_pk')
|
)(
|
||||||
|
'Drop column - %s - %s',
|
||||||
|
testWrapper(async (conn, driver, column, engine) => {
|
||||||
|
await testTableDiff(engine, conn, driver, tbl => (tbl.columns = tbl.columns.filter(x => x.columnName != column)));
|
||||||
|
})
|
||||||
);
|
);
|
||||||
const hasDropableColumns = dropableColumnsSrouce.length > 0;
|
|
||||||
|
|
||||||
if (hasDropableColumns) {
|
test.each(createEnginesColumnsSource(engines.filter(x => !x.skipNullable)))(
|
||||||
test.each(dropableColumnsSrouce)(
|
'Change nullability - %s - %s',
|
||||||
'Drop column - %s - %s',
|
testWrapper(async (conn, driver, column, engine) => {
|
||||||
testWrapper(async (conn, driver, column, engine) => {
|
await testTableDiff(
|
||||||
await testTableDiff(
|
engine,
|
||||||
engine,
|
conn,
|
||||||
conn,
|
driver,
|
||||||
driver,
|
tbl => (tbl.columns = tbl.columns.map(x => (x.columnName == column ? { ...x, notNull: true } : x)))
|
||||||
tbl => (tbl.columns = tbl.columns.filter(x => x.columnName != column))
|
);
|
||||||
);
|
})
|
||||||
})
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const hasEnginesWithNullable = engines.filter(x => !x.skipNullable).length > 0;
|
test.each(createEnginesColumnsSource(engines))(
|
||||||
|
|
||||||
if (hasEnginesWithNullable) {
|
|
||||||
const source = create_engines_columns_source(engines.filter(x => !x.skipNullable));
|
|
||||||
|
|
||||||
test.each(source)(
|
|
||||||
'Change nullability - %s - %s',
|
|
||||||
testWrapper(async (conn, driver, column, engine) => {
|
|
||||||
await testTableDiff(
|
|
||||||
engine,
|
|
||||||
conn,
|
|
||||||
driver,
|
|
||||||
tbl => (tbl.columns = tbl.columns.map(x => (x.columnName == column ? { ...x, notNull: true } : x)))
|
|
||||||
);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
test.each(columnsSource)(
|
|
||||||
'Rename column - %s - %s',
|
'Rename column - %s - %s',
|
||||||
testWrapper(async (conn, driver, column, engine) => {
|
testWrapper(async (conn, driver, column, engine) => {
|
||||||
await testTableDiff(
|
await testTableDiff(
|
||||||
@@ -165,7 +148,7 @@ describe('Alter table', () => {
|
|||||||
);
|
);
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
test.each(engines.map(engine => [engine.label, engine]))(
|
test.each(engines.map(engine => [engine.label, engine]))(
|
||||||
'Drop index - %s',
|
'Drop index - %s',
|
||||||
testWrapper(async (conn, driver, engine) => {
|
testWrapper(async (conn, driver, engine) => {
|
||||||
@@ -174,38 +157,33 @@ describe('Alter table', () => {
|
|||||||
});
|
});
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
const enginesWithDefault = engines.filter(x => !x.skipDefaultValue);
|
test.each(engines.filter(x => !x.skipDefaultValue).map(engine => [engine.label, engine]))(
|
||||||
const hasEnginesWithDefault = enginesWithDefault.length > 0;
|
'Add default value - %s',
|
||||||
|
testWrapper(async (conn, driver, engine) => {
|
||||||
if (hasEnginesWithDefault) {
|
await testTableDiff(engine, conn, driver, tbl => {
|
||||||
test.each(enginesWithDefault.map(engine => [engine.label, engine]))(
|
tbl.columns.find(x => x.columnName == 'col_std').defaultValue = '123';
|
||||||
'Add default value - %s',
|
});
|
||||||
testWrapper(async (conn, driver, engine) => {
|
})
|
||||||
await testTableDiff(engine, conn, driver, tbl => {
|
);
|
||||||
tbl.columns.find(x => x.columnName == 'col_std').defaultValue = '123';
|
|
||||||
});
|
test.each(engines.filter(x => !x.skipDefaultValue).map(engine => [engine.label, engine]))(
|
||||||
})
|
'Unset default value - %s',
|
||||||
);
|
testWrapper(async (conn, driver, engine) => {
|
||||||
|
await testTableDiff(engine, conn, driver, tbl => {
|
||||||
test.each(enginesWithDefault.map(engine => [engine.label, engine]))(
|
tbl.columns.find(x => x.columnName == 'col_def').defaultValue = undefined;
|
||||||
'Unset default value - %s',
|
});
|
||||||
testWrapper(async (conn, driver, engine) => {
|
})
|
||||||
await testTableDiff(engine, conn, driver, tbl => {
|
);
|
||||||
tbl.columns.find(x => x.columnName == 'col_def').defaultValue = undefined;
|
|
||||||
});
|
test.each(engines.filter(x => !x.skipDefaultValue).map(engine => [engine.label, engine]))(
|
||||||
})
|
'Change default value - %s',
|
||||||
);
|
testWrapper(async (conn, driver, engine) => {
|
||||||
|
await testTableDiff(engine, conn, driver, tbl => {
|
||||||
test.each(enginesWithDefault.map(engine => [engine.label, engine]))(
|
tbl.columns.find(x => x.columnName == 'col_def').defaultValue = '567';
|
||||||
'Change default value - %s',
|
});
|
||||||
testWrapper(async (conn, driver, engine) => {
|
})
|
||||||
await testTableDiff(engine, conn, driver, tbl => {
|
);
|
||||||
tbl.columns.find(x => x.columnName == 'col_def').defaultValue = '567';
|
|
||||||
});
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// test.each(engines.map(engine => [engine.label, engine]))(
|
// test.each(engines.map(engine => [engine.label, engine]))(
|
||||||
// 'Change autoincrement - %s',
|
// 'Change autoincrement - %s',
|
||||||
|
|||||||
Reference in New Issue
Block a user