3570-feat(setQuantitySale): back route and test #869

Merged
joan merged 9 commits from 3558-setQuantitySale into dev 2022-02-08 12:11:24 +00:00
7 changed files with 61 additions and 90 deletions
Showing only changes of commit e09e84c36b - Show all commits

View File

@ -1,55 +0,0 @@
module.exports = Self => {
Self.remoteMethodCtx('setQuantitySale', {
description: 'Update sale quantity',
accessType: 'WRITE',
accepts: [{
arg: 'saleId',
type: 'number',
required: true,
description: 'The sale id'
},
{
arg: 'quantity',
type: 'number',
required: true,
description: 'The quantity to picked'
}],
returns: {
type: 'object',
root: true
},
http: {
path: `/setQuantitySale`,
verb: 'POST'
}
});
Self.setQuantitySale = async(ctx, options) => {
const args = ctx.args;
const models = Self.app.models;
const myOptions = {};
let tx;
if (typeof options == 'object')
Object.assign(myOptions, options);
if (!myOptions.transaction) {
tx = await Self.beginTransaction({});
myOptions.transaction = tx;
}
try {
const sale = await models.Sale.findById(args.saleId, null, myOptions);
const result = await sale.updateAttribute('quantity', args.quantity, myOptions);
if (tx) await tx.commit();
return result;
} catch (e) {
if (tx) await tx.rollback();
throw e;
}
};
};

View File

@ -0,0 +1,34 @@
module.exports = Self => {
Self.remoteMethodCtx('setSaleQuantity', {
description: 'Update sale quantity',
accessType: 'WRITE',
accepts: [{
arg: 'saleId',
type: 'number',
required: true,
description: 'The sale id'
},
{
arg: 'quantity',
type: 'number',
required: true,
description: 'The quantity to picked'
}],
returns: {
type: 'object',
root: true
},
http: {
path: `/setSaleQuantity`,
verb: 'POST'
}
});
Self.setSaleQuantity = async ctx => {
const args = ctx.args;
const models = Self.app.models;
const sale = await models.Sale.findById(args.saleId,);
return await sale.updateAttribute('quantity', args.quantity);
};
};

View File

@ -1,32 +0,0 @@
const models = require('vn-loopback/server/server').models;
describe('setQuantitySale()', () => {
it('should change quantity sale', async() => {
const tx = await models.Sale.beginTransaction({});
const saleId = 30;
const newQuantity = 10;
try {
const options = {transaction: tx};
const ctx = {
args: {
saleId: saleId,
quantity: newQuantity
}
};
const originalSale = await models.Sale.findById(30, null, options);
await models.Collection.setQuantitySale(ctx, options);
const updateSale = await models.Sale.findById(30, null, options);
expect(updateSale.quantity).toBeLessThan(originalSale.quantity);
expect(updateSale.quantity).toEqual(newQuantity);
await tx.rollback();
} catch (e) {
await tx.rollback();
throw e;
}
});
});

View File

@ -0,0 +1,23 @@
const models = require('vn-loopback/server/server').models;
describe('setSaleQuantity()', () => {
it('should change quantity sale', async() => {
const saleId = 30;
const newQuantity = 10;
const ctx = {
args: {
saleId: saleId,
quantity: newQuantity
}
};
const originalSale = await models.Sale.findById(saleId);
await models.Collection.setSaleQuantity(ctx);
const updateSale = await models.Sale.findById(saleId);
expect(updateSale.quantity).toBeLessThan(originalSale.quantity);
expect(updateSale.quantity).toEqual(newQuantity);
});
});

View File

@ -2,6 +2,6 @@ module.exports = Self => {
require('../methods/collection/getCollection')(Self);
require('../methods/collection/newCollection')(Self);
require('../methods/collection/getSectors')(Self);
require('../methods/collection/setQuantitySale')(Self);
require('../methods/collection/setSaleQuantity')(Self);
require('../methods/collection/collectionFaults')(Self);
};

View File

@ -1,3 +1,3 @@
INSERT INTO salix.ACL
(model, property, accessType, permission, principalType, principalId)
VALUES('Collection', 'setQuantitySale', '*', 'ALLOW', 'ROLE', 'employee');
VALUES('Collection', 'setSaleQuantity', '*', 'ALLOW', 'ROLE', 'employee');

View File

@ -120,5 +120,6 @@
"This item is not available": "This item is not available",
"Deny buy request": "Purchase request for ticket id [{{ticketId}}]({{{url}}}) has been rejected. Reason: {{observation}}",
"The type of business must be filled in basic data": "The type of business must be filled in basic data",
"The worker has hours recorded that day": "The worker has hours recorded that day"
"The worker has hours recorded that day": "The worker has hours recorded that day",
"isWithoutNegatives": "isWithoutNegatives"
}