This commit is contained in:
parent
bda3937417
commit
386de69bce
|
@ -1,3 +1,5 @@
|
|||
const UserError = require('vn-loopback/util/user-error');
|
||||
|
||||
module.exports = Self => {
|
||||
Self.remoteMethod('addExpeditionState', {
|
||||
description: 'Update an expedition state',
|
||||
|
@ -31,8 +33,7 @@ module.exports = Self => {
|
|||
tx = await Self.beginTransaction({});
|
||||
myOptions.transaction = tx;
|
||||
}
|
||||
|
||||
const promises = [];
|
||||
let expeditionId;
|
||||
try {
|
||||
for (const expedition of expeditions) {
|
||||
const expeditionStateType = await models.ExpeditionStateType.findOne(
|
||||
|
@ -42,30 +43,24 @@ module.exports = Self => {
|
|||
}
|
||||
);
|
||||
if (!expeditionStateType)
|
||||
throw new Error(`The state code: ${expedition.stateCode} does not exist.`);
|
||||
throw new UserError(`Invalid state code: ${expedition.stateCode}.`);
|
||||
|
||||
const typeFk = expeditionStateType.id;
|
||||
expeditionId = expedition.expeditionFk;
|
||||
|
||||
const existsExpedition = await models.Expedition.findOne({
|
||||
fields: ['id'],
|
||||
where: {id: expedition.expeditionFk}
|
||||
});
|
||||
if (!existsExpedition)
|
||||
throw new Error(`The expedition with id: ${expedition.expeditionFk} does not exist.`);
|
||||
|
||||
const newExpeditionState = models.ExpeditionState.create({
|
||||
await models.ExpeditionState.create({
|
||||
expeditionFk: expedition.expeditionFk,
|
||||
typeFk,
|
||||
});
|
||||
promises.push(newExpeditionState);
|
||||
}
|
||||
|
||||
await Promise.all(promises);
|
||||
|
||||
if (tx) await tx.commit();
|
||||
} catch (e) {
|
||||
if (tx) await tx.rollback();
|
||||
throw e;
|
||||
if (e instanceof UserError)
|
||||
throw e;
|
||||
|
||||
throw new UserError(`Invalid expedition id: ${expeditionId}.`);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
|
|
@ -8,7 +8,7 @@ describe('expeditionState addExpeditionState()', () => {
|
|||
const options = {transaction: tx};
|
||||
const payload = [
|
||||
{
|
||||
expeditionFk: 5,
|
||||
expeditionFk: 8,
|
||||
stateCode: 'ON DELIVERY'
|
||||
},
|
||||
];
|
||||
|
@ -47,7 +47,7 @@ describe('expeditionState addExpeditionState()', () => {
|
|||
await tx.rollback();
|
||||
}
|
||||
|
||||
expect(error.message).toContain('The state code: DUMMY does not exist.');
|
||||
expect(error.message).toContain('Invalid state code: DUMMY.');
|
||||
});
|
||||
|
||||
it('should throw an error when expeditionFk does not exist', async() => {
|
||||
|
@ -70,6 +70,6 @@ describe('expeditionState addExpeditionState()', () => {
|
|||
await tx.rollback();
|
||||
}
|
||||
|
||||
expect(error.message).toContain('The expedition with id: 50 does not exist.');
|
||||
expect(error.message).toContain('Invalid expedition id: 50.');
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue