diff --git a/db/tests/vn/ticket_componentMakeUpdate.spec.js b/db/tests/vn/ticket_componentMakeUpdate.spec.js new file mode 100644 index 000000000..4954c44f4 --- /dev/null +++ b/db/tests/vn/ticket_componentMakeUpdate.spec.js @@ -0,0 +1,123 @@ +const app = require('vn-loopback/server/server'); +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; + +// 2277 solucionar problema al testear procedimiento con start transaction / rollback +xdescribe('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); + }); +});