feat: scheduler events tests

This commit is contained in:
Nybkox
2025-01-03 11:01:16 +01:00
parent 891fb15290
commit c90011fc27
3 changed files with 64 additions and 6 deletions

View File

@@ -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));
})
);
}
});

View File

@@ -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;