diff --git a/services/loopback/common/methods/sale/removes.js b/services/loopback/common/methods/sale/removes.js index 5a74e6946..9f21a1b66 100644 --- a/services/loopback/common/methods/sale/removes.js +++ b/services/loopback/common/methods/sale/removes.js @@ -22,12 +22,15 @@ module.exports = Self => { }); Self.removes = async params => { + console.log(params); let thisTicketIsEditable = await Self.app.models.Ticket.isEditable(params.actualTicketFk); if (!thisTicketIsEditable) throw new UserError(`The sales of this ticket can't be modified`); + let promises = []; for (let i = 0; i < params.sales.length; i++) { - await Self.app.models.Sale.destroyById(params.sales[i].id); + promises.push(Self.app.models.Sale.destroyById(params.sales[i].id)); } + return Promise.all(promises); }; }; diff --git a/services/loopback/common/methods/sale/specs/removes.spec.js b/services/loopback/common/methods/sale/specs/removes.spec.js new file mode 100644 index 000000000..b78e170e3 --- /dev/null +++ b/services/loopback/common/methods/sale/specs/removes.spec.js @@ -0,0 +1,41 @@ +const app = require(`${servicesDir}/ticket/server/server`); +const restoreFixtures = require(`${servicesDir}/db/testing_fixtures`); + +describe('sale removes()', () => { + let sqlStatements = {deletes: ``, inserts: ` + INSERT INTO vn2008.Movimientos (Id_Movimiento, Id_Article, Id_Ticket, Concepte, Cantidad, Preu, Descuento, CostFixat, Reservado, OK, PrecioFijado, odbc_date) VALUES ('1', '1', '1', 'Gem of Time', '5.00', '23.50', '0', '0.00', '0', '0', '0', '2018-08-20 00:00:00'); + INSERT INTO vn2008.Movimientos (Id_Movimiento, Id_Article, Id_Ticket, Concepte, Cantidad, Preu, Descuento, CostFixat, Reservado, OK, PrecioFijado, odbc_date) VALUES ('2', '2', '1', 'Gem of Mind', '10.00', '4.50', '0', '0.00', '0', '0', '0', '2018-08-20 00:00:00'); + `, updates: ``}; + + afterAll(() => { + restoreFixtures(sqlStatements); + }); + + it('should throw an error if the ticket of the given sales is not editable', async() => { + let error; + + let params = { + sales: [{id: 1, instance: 0}, {id: 2, instance: 1}], + actualTicketFk: 2 + }; + + try { + await app.models.Sale.removes(params); + } catch (e) { + error = e; + } + + expect(error).toEqual(new Error(`The sales of this ticket can't be modified`)); + }); + + it('should delete the sales', async() => { + let params = { + sales: [{id: 1, instance: 0}, {id: 2, instance: 1}], + actualTicketFk: 1 + }; + + let res = await app.models.Sale.removes(params); + + expect(res).toEqual([{count: 1}, {count: 1}]); + }); +});