From 817a6b1289cb27aeda9567dc56c831e7dc180739 Mon Sep 17 00:00:00 2001 From: jorgep Date: Fri, 19 Jan 2024 14:35:10 +0100 Subject: [PATCH] feat: refs #6276 test operator_add --- loopback/locale/en.json | 4 +-- loopback/locale/es.json | 3 +- modules/worker/back/methods/operator/add.js | 22 +++++++++++++-- .../back/methods/operator/spec/add.spec.js | 28 +++++++++++++++++++ 4 files changed, 51 insertions(+), 6 deletions(-) create mode 100644 modules/worker/back/methods/operator/spec/add.spec.js diff --git a/loopback/locale/en.json b/loopback/locale/en.json index b10ea2e71..c22aeb311 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -208,6 +208,6 @@ "the plate does not exist": "The plate {{plate}} does not exist", "This pallet does not exist": "This pallet does not exist", "We do not have availability for the selected item": "We do not have availability for the selected item", - "You are already using a machine": "You are already using a machine" - + "You are already using a machine": "You are already using a machine", + "This worker does not exist": "This worker does not exist" } \ No newline at end of file diff --git a/loopback/locale/es.json b/loopback/locale/es.json index c704cb8fd..e5293d856 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -345,5 +345,6 @@ "This pallet does not exist": "Este palet no existe", "We do not have availability for the selected item": "No tenemos disponible el item seleccionado", "You are already using a machine": "Ya estás usando una máquina.", - "Ya estás usando una máquina.": "Ya estás usando una máquina." + "This worker does not exist": "Este trabajador no existe", + "Este trabajador no existe": "Este trabajador no existe" } \ No newline at end of file diff --git a/modules/worker/back/methods/operator/add.js b/modules/worker/back/methods/operator/add.js index eaf74e7b4..d330bc25b 100644 --- a/modules/worker/back/methods/operator/add.js +++ b/modules/worker/back/methods/operator/add.js @@ -1,3 +1,4 @@ +const UserError = require('vn-loopback/util/user-error'); module.exports = Self => { Self.remoteMethodCtx('add', { description: 'Add a new operator', @@ -8,13 +9,28 @@ module.exports = Self => { } }); - Self.add = async ctx => { + Self.add = async(ctx, options) => { const userId = ctx.req.accessToken.userId; - const user = await Self.findById(userId); - if (!user) { + const myOptions = {}; + const $t = ctx.req.__; + let tx; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { await Self.create({ workerFk: userId }); + if (tx) await tx.commit(); + } catch (e) { + if (tx) await tx.rollback(); + throw new UserError($t('This worker does not exist')); } }; }; diff --git a/modules/worker/back/methods/operator/spec/add.spec.js b/modules/worker/back/methods/operator/spec/add.spec.js new file mode 100644 index 000000000..c2b244ada --- /dev/null +++ b/modules/worker/back/methods/operator/spec/add.spec.js @@ -0,0 +1,28 @@ +const {models} = require('vn-loopback/server/server'); + +describe('operator add()', () => { + beforeAll(async() => { + ctx = { + req: { + accessToken: {userId: 100000}, + headers: {origin: 'http://localhost'}, + __: value => value + } + }; + }); + + it('should throw an error if the worker does not exist', async() => { + const tx = await models.Operator.beginTransaction({}); + const options = {transaction: tx}; + + try { + await models.Operator.add(ctx, options); + await tx.rollback(); + } catch (e) { + const error = e; + + expect(error.message).toEqual('This worker does not exist'); + await tx.rollback(); + } + }); +});