const app = require('vn-loopback/server/server'); const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; // 2277 solucionar problema al testear procedimiento con start transaction / rollback describe('ticket_componentMakeUpdate()', () => { it('should recalculate the ticket components without make modifications', async() => { let stmts = []; let stmt; let params = { ticketId: 11, clientId: 102, agencyModeId: 2, addressId: 122, zoneId: 3, warehouseId: 1, companyId: 442, isDeleted: 0, hasToBeUnrouted: 0, componentOption: 1 }; stmts.push('START TRANSACTION'); stmt = new ParameterizedSQL('SELECT * FROM vn.ticket WHERE id = ?', [ params.ticketId ]); stmts.push(stmt); let originalTicketIndex = stmts.push(stmt) - 1; stmt = new ParameterizedSQL('CALL vn.ticket_componentMakeUpdate(?, ?, ?, ?, ?, ?, ?, DATE_ADD(CURDATE(), INTERVAL +1 DAY), DATE_ADD(CURDATE(), INTERVAL +1 DAY), ?, ?, ?)', [ params.ticketId, params.clientId, params.agencyModeId, params.addressId, params.zoneId, params.warehouseId, params.companyId, params.isDeleted, params.hasToBeUnrouted, params.componentOption ]); stmts.push(stmt); stmt = new ParameterizedSQL('SELECT * FROM vn.ticket WHERE id = ?', [ params.ticketId ]); stmts.push(stmt); let updatedTicketIndex = stmts.push(stmt) - 1; stmts.push('ROLLBACK'); let sql = ParameterizedSQL.join(stmts, ';'); let result = await app.models.Ticket.rawStmt(sql); let originalTicketData = result[originalTicketIndex]; let updatedTicketData = result[updatedTicketIndex]; expect(originalTicketData[0].isDeleted).toEqual(updatedTicketData[0].isDeleted); expect(originalTicketData[0].routeFk).toEqual(updatedTicketData[0].routeFk); }); it('should delete and unroute a ticket and recalculate the components', async() => { let stmts = []; let stmt; let params = { ticketId: 11, clientId: 102, agencyModeId: 2, addressId: 122, zoneId: 3, warehouseId: 1, companyId: 442, isDeleted: 1, hasToBeUnrouted: 1, componentOption: 1 }; stmts.push('START TRANSACTION'); stmt = new ParameterizedSQL('SELECT * FROM vn.ticket WHERE id = ?', [ params.ticketId ]); stmts.push(stmt); let originalTicketIndex = stmts.push(stmt) - 1; stmt = new ParameterizedSQL('CALL vn.ticket_componentMakeUpdate(?, ?, ?, ?, ?, ?, ?, DATE_ADD(CURDATE(), INTERVAL +1 DAY), DATE_ADD(CURDATE(), INTERVAL +1 DAY), ?, ?, ?)', [ params.ticketId, params.clientId, params.agencyModeId, params.addressId, params.zoneId, params.warehouseId, params.companyId, params.isDeleted, params.hasToBeUnrouted, params.componentOption ]); stmts.push(stmt); stmt = new ParameterizedSQL('SELECT * FROM vn.ticket WHERE id = ?', [ params.ticketId ]); stmts.push(stmt); let updatedTicketIndex = stmts.push(stmt) - 1; stmts.push('ROLLBACK'); let sql = ParameterizedSQL.join(stmts, ';'); let result = await app.models.Ticket.rawStmt(sql); let originalTicketData = result[originalTicketIndex]; let updatedTicketData = result[updatedTicketIndex]; expect(originalTicketData[0].isDeleted).not.toEqual(updatedTicketData[0].isDeleted); expect(originalTicketData[0].routeFk).not.toEqual(updatedTicketData[0].routeFk); }); });