salix/services/db/tests/vn/buyUltimateFromInterval.spe...

144 lines
4.8 KiB
JavaScript

const app = require(`${loopbackApp}`);
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
describe('buyUltimateFromInterval()', () => {
let today;
let future;
beforeAll(() => {
let date = new Date();
let month = `${date.getMonth() + 1}`;
let futureMonth = `${date.getMonth() + 2}`;
let day = date.getDate();
let year = date.getFullYear();
let futureYear = year;
if (month.toString().length < 2) month = '0' + month;
if (futureMonth.toString().length < 2) futureMonth = '0' + futureMonth;
if (futureMonth.toString() == '13') {
futureMonth = '01';
futureYear + 1;
}
if (day.toString().length < 2) day = `0${day}`;
today = [year, month, day].join('-');
future = [futureYear, futureMonth, day].join('-');
});
it(`should create a temporal table with it's data`, async() => {
let stmts = [];
let stmt;
stmts.push('START TRANSACTION');
let params = {
warehouseFk: 1,
started: today,
ended: today
};
stmt = new ParameterizedSQL('CALL vn.buyUltimateFromInterval(?, ?, ?)', [
params.warehouseFk,
params.started,
params.ended
]);
stmts.push(stmt);
let buyUltimateFromIntervalTableIndex = stmts.push(`SELECT * FROM tmp.buyUltimateFromInterval`) - 1;
stmts.push('ROLLBACK');
let sql = ParameterizedSQL.join(stmts, ';');
let result = await app.models.Ticket.rawStmt(sql);
let buyUltimateFromIntervalTable = result[buyUltimateFromIntervalTableIndex];
expect(buyUltimateFromIntervalTable.length).toEqual(2);
expect(buyUltimateFromIntervalTable[0].itemFk).toEqual(1);
expect(buyUltimateFromIntervalTable[1].itemFk).toEqual(3);
expect(buyUltimateFromIntervalTable[0].warehouseFk).toEqual(1);
expect(buyUltimateFromIntervalTable[1].warehouseFk).toEqual(1);
expect(buyUltimateFromIntervalTable[0].buyFk).toEqual(3);
expect(buyUltimateFromIntervalTable[1].buyFk).toEqual(5);
expect(buyUltimateFromIntervalTable[0].landed).toEqual(new Date(today));
expect(buyUltimateFromIntervalTable[1].landed).toEqual(new Date(today));
});
it(`should create a temporal table with it's data in which started value is assigned to ended`, async() => {
let params = {
warehouseFk: 1,
started: today,
ended: null
};
let query = `
START TRANSACTION;
CALL vn.buyUltimateFromInterval(?, ?, ?);
SELECT * FROM tmp.buyUltimateFromInterval;
ROLLBACK;`;
let result = await app.models.Ticket.rawSql(query, [
params.warehouseFk,
params.started,
params.ended
]);
let buyUltimateFromIntervalTable = result[2];
expect(buyUltimateFromIntervalTable.length).toEqual(2);
expect(buyUltimateFromIntervalTable[0].itemFk).toEqual(1);
expect(buyUltimateFromIntervalTable[1].itemFk).toEqual(3);
expect(buyUltimateFromIntervalTable[0].warehouseFk).toEqual(1);
expect(buyUltimateFromIntervalTable[1].warehouseFk).toEqual(1);
expect(buyUltimateFromIntervalTable[0].buyFk).toEqual(3);
expect(buyUltimateFromIntervalTable[1].buyFk).toEqual(5);
expect(buyUltimateFromIntervalTable[0].landed).toEqual(new Date(today));
expect(buyUltimateFromIntervalTable[1].landed).toEqual(new Date(today));
});
it(`should create a temporal table with it's data in which ended value is a date in the future`, async() => {
let params = {
warehouseFk: 1,
started: today,
ended: future
};
let query = `
START TRANSACTION;
CALL vn.buyUltimateFromInterval(?, ?, ?);
SELECT * FROM tmp.buyUltimateFromInterval;
ROLLBACK;`;
let result = await app.models.Ticket.rawSql(query, [
params.warehouseFk,
params.started,
params.ended
]);
let buyUltimateFromIntervalTable = result[2];
expect(buyUltimateFromIntervalTable.length).toEqual(2);
expect(buyUltimateFromIntervalTable[0].itemFk).toEqual(1);
expect(buyUltimateFromIntervalTable[1].itemFk).toEqual(3);
expect(buyUltimateFromIntervalTable[0].warehouseFk).toEqual(1);
expect(buyUltimateFromIntervalTable[1].warehouseFk).toEqual(1);
expect(buyUltimateFromIntervalTable[0].buyFk).toEqual(3);
expect(buyUltimateFromIntervalTable[1].buyFk).toEqual(5);
expect(buyUltimateFromIntervalTable[0].landed).toEqual(new Date(today));
expect(buyUltimateFromIntervalTable[1].landed).toEqual(new Date(today));
});
});