From bb09fc97463565b0574b89a15a1c484d50774efd Mon Sep 17 00:00:00 2001 From: Bernat Exposito Domenech Date: Thu, 6 Feb 2020 11:50:32 +0100 Subject: [PATCH] update ticket.isEditable --- .../ticket/back/methods/state/isEditable.js | 3 +- .../methods/state/specs/isEditable.spec.js | 37 +++++++++++++------ 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/modules/ticket/back/methods/state/isEditable.js b/modules/ticket/back/methods/state/isEditable.js index 00b4f4c4f..34d86aad1 100644 --- a/modules/ticket/back/methods/state/isEditable.js +++ b/modules/ticket/back/methods/state/isEditable.js @@ -28,8 +28,7 @@ module.exports = Self => { let isAdministrative = await models.Account.hasRole(userId, 'administrative'); let state = await models.State.findById(stateId); - - let salesPersonAllowed = (isSalesPerson && state.code == 'PICKER_DESIGNED'); + let salesPersonAllowed = (isSalesPerson && (state.code == 'PICKER_DESIGNED' || state.code == 'PRINTED')); let isAllowed = isProduction || isAdministrative || salesPersonAllowed || state.alertLevel == 0; return isAllowed; diff --git a/modules/ticket/back/methods/state/specs/isEditable.spec.js b/modules/ticket/back/methods/state/specs/isEditable.spec.js index b90cc8eee..158a010dc 100644 --- a/modules/ticket/back/methods/state/specs/isEditable.spec.js +++ b/modules/ticket/back/methods/state/specs/isEditable.spec.js @@ -1,48 +1,61 @@ const app = require('vn-loopback/server/server'); describe('state isEditable()', () => { - it('should return false if the given state is not editable by a specific role', async() => { + it('should return false if the state is not editable by a specific role', async() => { const salesPersonRole = 18; const onDeliveryState = 13; let ctx = {req: {accessToken: {userId: salesPersonRole}}}; let result = await app.models.State.isEditable(ctx, onDeliveryState); - expect(result).toBeFalsy(); + expect(result).toBe(false); }); - it('should return true if the given state is editable by a specific role', async() => { + it('should return true if the state is editable by a specific role', async() => { const salesPersonRole = 18; const asignedState = 20; let ctx = {req: {accessToken: {userId: salesPersonRole}}}; let result = await app.models.State.isEditable(ctx, asignedState); - expect(result).toBeTruthy(); + expect(result).toBe(true); }); - it('should return true again if the given state is editable by a specific role', async() => { + it('should return true again if the state is editable by a specific role', async() => { const employeeRole = 1; const fixingState = 1; let ctx = {req: {accessToken: {userId: employeeRole}}}; let result = await app.models.State.isEditable(ctx, fixingState); - expect(result).toBeTruthy(); + expect(result).toBe(true); }); - it('should return false if the given state is not editable for the given role', async() => { + it('should return false if the state is not editable for the given role', async() => { const employeeRole = 1; const asignedState = 20; let ctx = {req: {accessToken: {userId: employeeRole}}}; let result = await app.models.State.isEditable(ctx, asignedState); - expect(result).toBeFalsy(); + expect(result).toBe(false); }); - it('should return true if the given state is editable for the given role', async() => { + it('should return true if the state is editable for the given role', async() => { const productionRole = 49; - const checkedState = 13; + const onDeliveryState = 13; let ctx = {req: {accessToken: {userId: productionRole}}}; - let result = await app.models.State.isEditable(ctx, checkedState); + let result = await app.models.State.isEditable(ctx, onDeliveryState); - expect(result).toBeTruthy(); + expect(result).toBe(true); + }); + + it('should return true if the ticket is editable, the role is salesPerson and the ticket state is printed', async() => { + const salesPersonRole = 18; + const printedState = 4; + const okState = 3; + const ctx = {req: {accessToken: {userId: salesPersonRole}}}; + + let canEditCurrent = await app.models.State.isEditable(ctx, printedState); + let canAsignNew = await app.models.State.isEditable(ctx, okState); + let result = canEditCurrent && canAsignNew; + + expect(result).toBe(true); }); });