dev #1731
|
@ -1,3 +1,5 @@
|
||||||
|
const UserError = require('vn-loopback/util/user-error');
|
||||||
|
|
||||||
module.exports = Self => {
|
module.exports = Self => {
|
||||||
Self.remoteMethod('addExpeditionState', {
|
Self.remoteMethod('addExpeditionState', {
|
||||||
description: 'Update an expedition state',
|
description: 'Update an expedition state',
|
||||||
|
@ -31,8 +33,7 @@ module.exports = Self => {
|
||||||
tx = await Self.beginTransaction({});
|
tx = await Self.beginTransaction({});
|
||||||
myOptions.transaction = tx;
|
myOptions.transaction = tx;
|
||||||
}
|
}
|
||||||
|
let expeditionId;
|
||||||
const promises = [];
|
|
||||||
try {
|
try {
|
||||||
for (const expedition of expeditions) {
|
for (const expedition of expeditions) {
|
||||||
const expeditionStateType = await models.ExpeditionStateType.findOne(
|
const expeditionStateType = await models.ExpeditionStateType.findOne(
|
||||||
|
@ -42,30 +43,24 @@ module.exports = Self => {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
if (!expeditionStateType)
|
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;
|
const typeFk = expeditionStateType.id;
|
||||||
|
expeditionId = expedition.expeditionFk;
|
||||||
|
|
||||||
const existsExpedition = await models.Expedition.findOne({
|
await models.ExpeditionState.create({
|
||||||
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({
|
|
||||||
expeditionFk: expedition.expeditionFk,
|
expeditionFk: expedition.expeditionFk,
|
||||||
typeFk,
|
typeFk,
|
||||||
});
|
});
|
||||||
promises.push(newExpeditionState);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await Promise.all(promises);
|
|
||||||
|
|
||||||
if (tx) await tx.commit();
|
if (tx) await tx.commit();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (tx) await tx.rollback();
|
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 options = {transaction: tx};
|
||||||
const payload = [
|
const payload = [
|
||||||
{
|
{
|
||||||
expeditionFk: 5,
|
expeditionFk: 8,
|
||||||
stateCode: 'ON DELIVERY'
|
stateCode: 'ON DELIVERY'
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
@ -47,7 +47,7 @@ describe('expeditionState addExpeditionState()', () => {
|
||||||
await tx.rollback();
|
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() => {
|
it('should throw an error when expeditionFk does not exist', async() => {
|
||||||
|
@ -70,6 +70,6 @@ describe('expeditionState addExpeditionState()', () => {
|
||||||
await tx.rollback();
|
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