fix(cloneWithEntries): endpoint was broken due to production changes

This commit is contained in:
Carlos Jimenez Ruiz 2021-09-02 14:17:35 +02:00
parent 71f77ea69c
commit f2f81442d9
5 changed files with 49 additions and 43 deletions

View File

@ -119,7 +119,7 @@ describe('Travel descriptor path', () => {
await page.waitToClick(selectors.travelDescriptor.acceptClonation); await page.waitToClick(selectors.travelDescriptor.acceptClonation);
const message = await page.waitForSnackbar(); const message = await page.waitForSnackbar();
expect(message.text).toContain('A travel with this data already exists'); expect(message.text).toContain('Unable to clone this travel');
}); });
it('should update the landed date to a future date to enable cloneWithEntries', async() => { it('should update the landed date to a future date to enable cloneWithEntries', async() => {

View File

@ -95,7 +95,7 @@
"The nif cannot be empty": "The nif cannot be empty", "The nif cannot be empty": "The nif cannot be empty",
"Amount cannot be zero": "Amount cannot be zero", "Amount cannot be zero": "Amount cannot be zero",
"Company has to be official": "Company has to be official", "Company has to be official": "Company has to be official",
"A travel with this data already exists": "A travel with this data already exists", "Unable to clone this travel": "Unable to clone this travel",
"The observation type can't be repeated": "The observation type can't be repeated", "The observation type can't be repeated": "The observation type can't be repeated",
"New ticket request has been created with price": "New ticket request has been created *'{{description}}'* for day *{{shipped}}*, with a quantity of *{{quantity}}* and a price of *{{price}} €*", "New ticket request has been created with price": "New ticket request has been created *'{{description}}'* for day *{{shipped}}*, with a quantity of *{{quantity}}* and a price of *{{price}} €*",
"New ticket request has been created": "New ticket request has been created *'{{description}}'* for day *{{shipped}}*, with a quantity of *{{quantity}}*", "New ticket request has been created": "New ticket request has been created *'{{description}}'* for day *{{shipped}}*, with a quantity of *{{quantity}}*",

View File

@ -143,7 +143,7 @@
"ORDER_ROW_UNAVAILABLE": "No hay disponibilidad de este producto", "ORDER_ROW_UNAVAILABLE": "No hay disponibilidad de este producto",
"Distance must be lesser than 1000": "La distancia debe ser inferior a 1000", "Distance must be lesser than 1000": "La distancia debe ser inferior a 1000",
"This ticket is deleted": "Este ticket está eliminado", "This ticket is deleted": "Este ticket está eliminado",
"A travel with this data already exists": "Ya existe un travel con estos datos", "Unable to clone this travel": "No ha sido posible clonar este travel",
"This thermograph id already exists": "La id del termógrafo ya existe", "This thermograph id already exists": "La id del termógrafo ya existe",
"Choose a date range or days forward": "Selecciona un rango de fechas o días en adelante", "Choose a date range or days forward": "Selecciona un rango de fechas o días en adelante",
"ORDER_ALREADY_CONFIRMED": "ORDER_ALREADY_CONFIRMED", "ORDER_ALREADY_CONFIRMED": "ORDER_ALREADY_CONFIRMED",

View File

@ -18,8 +18,8 @@ describe('Client', () => {
describe('onAccept()', () => { describe('onAccept()', () => {
it('should perform a POST query and show a success snackbar', () => { it('should perform a POST query and show a success snackbar', () => {
let params = {name: 'New Jersey', countryFk: 1}; const params = {name: 'New Jersey', autonomyFk: 1};
controller.province = {name: 'New Jersey', countryFk: 1}; controller.province = {name: 'New Jersey', autonomyFk: 1};
jest.spyOn(controller.vnApp, 'showMessage'); jest.spyOn(controller.vnApp, 'showMessage');
$httpBackend.expect('PATCH', `provinces`, params).respond(200, params); $httpBackend.expect('PATCH', `provinces`, params).respond(200, params);

View File

@ -14,7 +14,7 @@ module.exports = Self => {
http: {source: 'path'} http: {source: 'path'}
}], }],
returns: { returns: {
type: 'Object', type: 'object',
description: 'The new cloned travel id', description: 'The new cloned travel id',
root: true, root: true,
}, },
@ -48,46 +48,52 @@ module.exports = Self => {
let stmts = []; let stmts = [];
let stmt; let stmt;
try { stmt = new ParameterizedSQL(
stmt = new ParameterizedSQL( `CALL travel_cloneWithEntries(?, ?, ?, ?, ?, ?, ?, @vTravelFk)`, [
`CALL travel_cloneWithEntries(?, ?, ?, ?, @vTravelFk)`, [ id,
id, started, ended, travel.ref]); started,
ended,
travel.warehouseOutFk,
travel.warehouseInFk,
travel.ref,
travel.agencyFk
]
);
stmts.push(stmt); stmts.push(stmt);
const index = stmts.push('SELECT @vTravelFk AS id') - 1; const newTravelIndex = stmts.push('SELECT @vTravelFk AS id') - 1;
const sql = ParameterizedSQL.join(stmts, ';'); const sql = ParameterizedSQL.join(stmts, ';');
const result = await conn.executeStmt(sql); const result = await conn.executeStmt(sql);
const [lastInsert] = result[index]; const [lastInsert] = result[newTravelIndex];
const newTravel = await Self.findById(lastInsert.id, {
fields: [
'id',
'shipped',
'landed',
'warehouseInFk',
'warehouseOutFk',
'agencyFk',
'ref'
]
});
const oldProperties = await loggable.translateValues(Self, travel); if (!lastInsert.id)
const newProperties = await loggable.translateValues(Self, newTravel); throw new UserError('Unable to clone this travel');
await models.TravelLog.create({
originFk: newTravel.id,
userFk: userId,
action: 'insert',
changedModel: 'Travel',
changedModelId: newTravel.id,
oldInstance: oldProperties,
newInstance: newProperties
});
return newTravel.id; const newTravel = await Self.findById(lastInsert.id, {
} catch (error) { fields: [
if (error.code === 'ER_DUP_ENTRY') 'id',
throw new UserError('A travel with this data already exists'); 'shipped',
throw error; 'landed',
} 'warehouseInFk',
'warehouseOutFk',
'agencyFk',
'ref'
]
});
const oldProperties = await loggable.translateValues(Self, travel);
const newProperties = await loggable.translateValues(Self, newTravel);
await models.TravelLog.create({
originFk: newTravel.id,
userFk: userId,
action: 'insert',
changedModel: 'Travel',
changedModelId: newTravel.id,
oldInstance: oldProperties,
newInstance: newProperties
});
return newTravel.id;
}; };
}; };