diff --git a/modules/claim/back/methods/claim/specs/updateClaimAction.spec.js b/modules/claim/back/methods/claim/specs/updateClaimAction.spec.js index 4848974fe..8cdcea4da 100644 --- a/modules/claim/back/methods/claim/specs/updateClaimAction.spec.js +++ b/modules/claim/back/methods/claim/specs/updateClaimAction.spec.js @@ -1,9 +1,8 @@ const app = require('vn-loopback/server/server'); describe('Update Claim', () => { - let newDate = new Date(); - let newInstance; - let original = { + const newDate = new Date(); + const original = { ticketFk: 3, clientFk: 101, ticketCreated: newDate, @@ -14,30 +13,43 @@ describe('Update Claim', () => { observation: 'observation' }; - beforeAll(async done => { - newInstance = await app.models.Claim.create(original); - - done(); - }); - - afterAll(async done => { - await app.models.Claim.destroyById(newInstance.id); - done(); - }); - it('should update the claim isChargedToMana attribute', async() => { - const ctx = {args: {isChargedToMana: false}}; - const result = await app.models.Claim.updateClaimAction(ctx, newInstance.id); + const tx = await app.models.Claim.beginTransaction({}); - expect(result.id).toEqual(newInstance.id); - expect(result.isChargedToMana).toBeFalsy(); + try { + const options = {transaction: tx}; + const ctx = {args: {isChargedToMana: false}}; + + const newInstance = await app.models.Claim.create(original, options); + const result = await app.models.Claim.updateClaimAction(ctx, newInstance.id, options); + + expect(result.id).toEqual(newInstance.id); + expect(result.isChargedToMana).toBeFalsy(); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } }); it('should update the claim responsibility attribute', async() => { - const ctx = {args: {responsibility: 2}}; - const result = await app.models.Claim.updateClaimAction(ctx, newInstance.id); + const tx = await app.models.Claim.beginTransaction({}); - expect(result.id).toEqual(newInstance.id); - expect(result.responsibility).toEqual(2); + try { + const options = {transaction: tx}; + const ctx = {args: {responsibility: 2}}; + + const newInstance = await app.models.Claim.create(original, options); + const result = await app.models.Claim.updateClaimAction(ctx, newInstance.id, options); + + expect(result.id).toEqual(newInstance.id); + expect(result.responsibility).toEqual(2); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } }); }); diff --git a/modules/claim/back/methods/claim/updateClaimAction.js b/modules/claim/back/methods/claim/updateClaimAction.js index d11e2ed08..12749fb6b 100644 --- a/modules/claim/back/methods/claim/updateClaimAction.js +++ b/modules/claim/back/methods/claim/updateClaimAction.js @@ -28,12 +28,32 @@ module.exports = Self => { } }); - Self.updateClaimAction = async(ctx, id) => { - const models = Self.app.models; - const claim = await models.Claim.findById(id); - const args = ctx.args; - delete args.ctx; + Self.updateClaimAction = async(ctx, id, options) => { + let tx; + let myOptions = {}; - return await claim.updateAttributes(args); + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + const models = Self.app.models; + const claim = await models.Claim.findById(id, null, myOptions); + const args = ctx.args; + delete args.ctx; + + const updatedClaim = await claim.updateAttributes(args, myOptions); + + if (tx) await tx.commit(); + + return updatedClaim; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } }; };