salix/db/tests/vn/ticket_recalcComponents.spe...

63 lines
2.0 KiB
JavaScript

const app = require('vn-loopback/server/server');
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
describe('ticket_recalcComponents()', () => {
it('should recalculate the components in a ticket and check it', async() => {
let stmts = [];
let stmt;
const ticketId = 11;
stmts.push('START TRANSACTION');
let sales = await app.models.Sale.find({where: {ticketFk: ticketId}});
stmt = new ParameterizedSQL('UPDATE vn.sale SET price=100 WHERE id IN(?,?)', [
sales[0].id,
sales[1].id
]);
stmts.push(stmt);
stmt = new ParameterizedSQL('SELECT * FROM vn.sale WHERE ticketFk = ?', [
ticketId
]);
stmts.push(stmt);
let modifiedSales = stmts.push(stmt) - 1;
stmt = new ParameterizedSQL('CALL vn.ticket_recalcComponents(?, NULL)', [
ticketId,
]);
stmts.push(stmt);
stmt = new ParameterizedSQL('SELECT * FROM vn.sale WHERE ticketFk = ?', [
ticketId
]);
stmts.push(stmt);
let expectedSales = stmts.push(stmt) - 1;
stmts.push('ROLLBACK');
let sql = ParameterizedSQL.join(stmts, ';');
let result = await app.models.Ticket.rawStmt(sql);
// original data
const firstPrice = sales[0].price;
const secondPrice = sales[1].price;
// alteratons for test purposes
const modifiedFirstPrice = result[modifiedSales][0].price;
const modifiedSecondPrice = result[modifiedSales][1].price;
// expected data after recalc
const expectedSalesFirstPrice = result[expectedSales][0].price;
const expectedSalesSecondPrice = result[expectedSales][1].price;
expect(firstPrice).not.toEqual(modifiedFirstPrice);
expect(secondPrice).not.toEqual(modifiedSecondPrice);
expect(firstPrice).toEqual(expectedSalesFirstPrice);
expect(secondPrice).toEqual(expectedSalesSecondPrice);
});
});