From bd91d4a6494a4adb87bc592805d6f80ca281a4c8 Mon Sep 17 00:00:00 2001 From: vicent Date: Fri, 25 Nov 2022 11:50:24 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20a=C3=B1adida=20transacci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/methods/collection/setSaleQuantity.js | 29 +++++++++++++++---- .../collection/spec/setSaleQuantity.spec.js | 25 +++++++++++----- 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/back/methods/collection/setSaleQuantity.js b/back/methods/collection/setSaleQuantity.js index 644c44a60..b6c56ddc4 100644 --- a/back/methods/collection/setSaleQuantity.js +++ b/back/methods/collection/setSaleQuantity.js @@ -26,11 +26,30 @@ module.exports = Self => { Self.setSaleQuantity = async(saleId, quantity) => { const models = Self.app.models; + const myOptions = {}; + let tx; - const sale = await models.Sale.findById(saleId); - return await sale.updateAttributes({ - originalQuantity: sale.quantity, - quantity: quantity - }); + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + const sale = await models.Sale.findById(saleId, null, myOptions); + const saleUpdated = await sale.updateAttributes({ + originalQuantity: sale.quantity, + quantity: quantity + }, myOptions); + + if (tx) await tx.commit(); + + return saleUpdated; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } }; }; diff --git a/back/methods/collection/spec/setSaleQuantity.spec.js b/back/methods/collection/spec/setSaleQuantity.spec.js index 5d06a4383..63dc3bd2d 100644 --- a/back/methods/collection/spec/setSaleQuantity.spec.js +++ b/back/methods/collection/spec/setSaleQuantity.spec.js @@ -2,15 +2,26 @@ const models = require('vn-loopback/server/server').models; describe('setSaleQuantity()', () => { it('should change quantity sale', async() => { - const saleId = 30; - const newQuantity = 10; + const tx = await models.Ticket.beginTransaction({}); - const originalSale = await models.Sale.findById(saleId); + try { + const options = {transaction: tx}; - await models.Collection.setSaleQuantity(saleId, newQuantity); - const updateSale = await models.Sale.findById(saleId); + const saleId = 30; + const newQuantity = 10; - expect(updateSale.originalQuantity).toEqual(originalSale.quantity); - expect(updateSale.quantity).toEqual(newQuantity); + const originalSale = await models.Sale.findById(saleId, null, options); + + await models.Collection.setSaleQuantity(saleId, newQuantity, options); + const updateSale = await models.Sale.findById(saleId, null, options); + + expect(updateSale.originalQuantity).toEqual(originalSale.quantity); + expect(updateSale.quantity).toEqual(newQuantity); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } }); });