mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-30 08:03:58 +00:00
feat: scheduler events tests
This commit is contained in:
@@ -23,6 +23,12 @@ function flatSourceTriggers() {
|
||||
return _.flatten(engines.map(engine => (engine.triggers || []).map(trigger => [engine.label, trigger, engine])));
|
||||
}
|
||||
|
||||
function flatSourceSchedulerEvents() {
|
||||
return _.flatten(
|
||||
engines.map(engine => (engine.schedulerEvents || []).map(schedulerEvent => [engine.label, schedulerEvent, engine]))
|
||||
);
|
||||
}
|
||||
|
||||
const obj1Match = expect.objectContaining({
|
||||
pureName: 'obj1',
|
||||
});
|
||||
@@ -168,6 +174,22 @@ describe('Object analyse', () => {
|
||||
expect(createdTrigger2).toEqual(expect.objectContaining(expected));
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
console.log(flatSourceTriggers());
|
||||
const schedulerEvents = flatSourceSchedulerEvents();
|
||||
if (schedulerEvents.length > 0) {
|
||||
test.each(schedulerEvents)(
|
||||
'Test scheduler events - %s - %s',
|
||||
testWrapper(async (conn, driver, event) => {
|
||||
for (const sql of initSql) await runCommandOnDriver(conn, driver, sql);
|
||||
const { create, drop, objectTypeField, expected } = event;
|
||||
|
||||
await runCommandOnDriver(conn, driver, create);
|
||||
const structure = await driver.analyseFull(conn);
|
||||
await runCommandOnDriver(conn, driver, drop);
|
||||
|
||||
const createdEvent = structure[objectTypeField].find(x => x.pureName == expected.pureName);
|
||||
expect(createdEvent).toEqual(expect.objectContaining(expected));
|
||||
})
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -28,6 +28,13 @@ const mysqlEngine = {
|
||||
},
|
||||
objects: [
|
||||
views,
|
||||
{
|
||||
type: 'schedulerEvents',
|
||||
create1: 'CREATE EVENT obj1 ON SCHEDULE EVERY 1 HOUR DO BEGIN END',
|
||||
create2: 'CREATE EVENT obj2 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY DO BEGIN END',
|
||||
drop1: 'DROP EVENT obj1',
|
||||
drop2: 'DROP EVENT obj2',
|
||||
},
|
||||
{
|
||||
type: 'procedures',
|
||||
create1: 'CREATE PROCEDURE obj1() BEGIN SELECT * FROM t1; END',
|
||||
@@ -130,6 +137,34 @@ const mysqlEngine = {
|
||||
},
|
||||
},
|
||||
],
|
||||
schedulerEvents: [
|
||||
{
|
||||
create: 'CREATE EVENT obj1 ON SCHEDULE EVERY 1 HOUR DO BEGIN END',
|
||||
drop: 'DROP EVENT obj1',
|
||||
objectTypeField: 'schedulerEvents',
|
||||
expected: {
|
||||
pureName: 'obj1',
|
||||
status: 'ENABLED',
|
||||
eventType: 'RECURRING',
|
||||
enableSql: 'ALTER EVENT obj1 ENABLE;',
|
||||
disableSql: 'ALTER EVENT obj1 DISABLE;',
|
||||
intervalValue: '1',
|
||||
intervalField: 'HOUR',
|
||||
},
|
||||
},
|
||||
{
|
||||
create: 'CREATE EVENT obj1 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY DO BEGIN END',
|
||||
drop: 'DROP EVENT obj1',
|
||||
objectTypeField: 'schedulerEvents',
|
||||
expected: {
|
||||
pureName: 'obj1',
|
||||
status: 'ENABLED',
|
||||
eventType: 'ONE TIME',
|
||||
enableSql: 'ALTER EVENT obj1 ENABLE;',
|
||||
disableSql: 'ALTER EVENT obj1 DISABLE;',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const mariaDbEngine = {
|
||||
@@ -355,12 +390,12 @@ const sqlServerEngine = {
|
||||
drop2: 'DROP PROCEDURE obj2',
|
||||
},
|
||||
{
|
||||
type:'triggers',
|
||||
type: 'triggers',
|
||||
create1: 'CREATE TRIGGER obj1 ON t1 AFTER INSERT AS BEGIN SELECT * FROM t1 END',
|
||||
create2: 'CREATE TRIGGER obj2 ON t2 AFTER INSERT AS BEGIN SELECT * FROM t2 END',
|
||||
drop1: 'DROP TRIGGER obj1',
|
||||
drop2: 'DROP TRIGGER obj2',
|
||||
}
|
||||
},
|
||||
],
|
||||
parametersOtherSql: ['CREATE PROCEDURE obj2 (@p1 int, @p2 int) AS SELECT id from t1'],
|
||||
parameters: [
|
||||
@@ -577,14 +612,14 @@ const enginesOnCi = [
|
||||
|
||||
const enginesOnLocal = [
|
||||
// all engines, which would be run on local test
|
||||
// mysqlEngine,
|
||||
mysqlEngine,
|
||||
// mariaDbEngine,
|
||||
// postgreSqlEngine,
|
||||
// sqlServerEngine,
|
||||
// sqliteEngine,
|
||||
// cockroachDbEngine,
|
||||
// clickhouseEngine,
|
||||
oracleEngine,
|
||||
// oracleEngine,
|
||||
];
|
||||
|
||||
module.exports = process.env.CITEST ? enginesOnCi : enginesOnLocal;
|
||||
|
||||
@@ -1492,6 +1492,7 @@ export const chinookDbInfo: DatabaseInfo = {
|
||||
collections: [],
|
||||
matviews: [],
|
||||
triggers: [],
|
||||
schedulerEvents: [],
|
||||
};
|
||||
|
||||
// const ARTIST_TABLE: TableInfo = {
|
||||
|
||||
Reference in New Issue
Block a user