Release v2.6.19
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
const test = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
|
||||
require('../src/common');
|
||||
|
||||
const registerTimetableRoutes = require('../src/web/routes/data-sources/timetables/routes');
|
||||
|
||||
function createApp() {
|
||||
const handlers = {};
|
||||
return {
|
||||
handlers: handlers,
|
||||
app: {
|
||||
get(path, ...routeHandlers) {
|
||||
handlers['GET ' + path] = routeHandlers;
|
||||
},
|
||||
post(path, ...routeHandlers) {
|
||||
handlers['POST ' + path] = routeHandlers;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function createConnection() {
|
||||
const queries = [];
|
||||
return {
|
||||
queries: queries,
|
||||
async beginTransaction() {
|
||||
queries.push(['beginTransaction']);
|
||||
},
|
||||
async query(sql, params) {
|
||||
queries.push([sql, params]);
|
||||
if (String(sql).indexOf('INSERT INTO i_timetable_groups') !== -1) {
|
||||
return [{ insertId: 42 }];
|
||||
}
|
||||
return [{}];
|
||||
},
|
||||
async commit() {
|
||||
queries.push(['commit']);
|
||||
},
|
||||
async rollback() {
|
||||
queries.push(['rollback']);
|
||||
},
|
||||
release() {
|
||||
queries.push(['release']);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
test('timetable create and update persist the selected timezone', async () => {
|
||||
const connection = createConnection();
|
||||
const { app, handlers } = createApp();
|
||||
|
||||
registerTimetableRoutes(app, {
|
||||
pool: {
|
||||
getConnection() {
|
||||
return connection;
|
||||
}
|
||||
},
|
||||
common: {
|
||||
fetchTimetableGroupById: async function () {
|
||||
return {
|
||||
id: 7,
|
||||
name: 'Existing',
|
||||
short_description: 'Old description',
|
||||
timezone: 'Europe/London'
|
||||
};
|
||||
},
|
||||
fetchDuplicateName: async function () {
|
||||
return false;
|
||||
},
|
||||
buildTimetableGroupPayload: function (req) {
|
||||
return {
|
||||
name: req.body.name,
|
||||
shortDescription: req.body.short_description,
|
||||
timezone: req.body.timezone
|
||||
};
|
||||
},
|
||||
fetchTimetableEntriesByGroupId: async function () {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
getAuditUserId: function () {
|
||||
return 9;
|
||||
},
|
||||
redirectAfterSave: function (_req, res, url) {
|
||||
res.redirect(url);
|
||||
},
|
||||
parseDateTimeLocal: function (value) {
|
||||
return value ? new Date(value) : null;
|
||||
},
|
||||
requirePermission: function () {
|
||||
return function (_req, _res, next) {
|
||||
next();
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
const createRoute = handlers['POST /data-sources/timetables'][1];
|
||||
const updateRoute = handlers['POST /data-sources/timetables/:id'][1];
|
||||
|
||||
const createResponse = {
|
||||
redirects: [],
|
||||
redirect(url) {
|
||||
this.redirects.push(url);
|
||||
},
|
||||
status() {
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
await createRoute({
|
||||
body: {
|
||||
name: 'Morning',
|
||||
short_description: 'Breakfast block',
|
||||
timezone: 'Europe/Berlin'
|
||||
},
|
||||
currentUser: { id: 1 },
|
||||
query: {}
|
||||
}, createResponse, function () {});
|
||||
|
||||
assert.deepEqual(connection.queries[1], [
|
||||
'INSERT INTO i_timetable_groups (name, short_description, timezone, created_by, modified_by) VALUES (?, ?, ?, ?, ?)',
|
||||
['Morning', 'Breakfast block', 'Europe/Berlin', 9, 9]
|
||||
]);
|
||||
assert.equal(createResponse.redirects[0], '/data-sources/timetables/42/edit');
|
||||
|
||||
connection.queries.length = 0;
|
||||
|
||||
const updateResponse = {
|
||||
redirects: [],
|
||||
redirect(url) {
|
||||
this.redirects.push(url);
|
||||
},
|
||||
status() {
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
await updateRoute({
|
||||
params: { id: '7' },
|
||||
body: {
|
||||
name: 'Morning',
|
||||
short_description: 'Breakfast block',
|
||||
timezone: 'Europe/Berlin'
|
||||
},
|
||||
currentUser: { id: 1 },
|
||||
query: {}
|
||||
}, updateResponse, function () {});
|
||||
|
||||
assert.deepEqual(connection.queries[1], [
|
||||
'UPDATE i_timetable_groups SET name = ?, short_description = ?, timezone = ?, modified_by = ? WHERE id = ?',
|
||||
['Morning', 'Breakfast block', 'Europe/Berlin', 9, 7]
|
||||
]);
|
||||
assert.equal(updateResponse.redirects[0], '/data-sources/timetables/7/edit');
|
||||
});
|
||||
Reference in New Issue
Block a user