Adding in a maxQuantity value when adding to cart
parent
fe14f28994
commit
3bda249c68
|
@ -121,7 +121,7 @@
|
|||
]
|
||||
}
|
||||
},
|
||||
"productStock": 10
|
||||
"productStock": 100
|
||||
},
|
||||
{
|
||||
"productPermalink": "hudderton-backpack",
|
||||
|
|
|
@ -110,6 +110,9 @@
|
|||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"maxQuantity": {
|
||||
"type": "number"
|
||||
},
|
||||
"modules": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
"orderHook": "",
|
||||
"availableLanguages": ["en", "it"],
|
||||
"defaultLocale": "en",
|
||||
"maxQuantity": 25,
|
||||
"modules": {
|
||||
"enabled": {
|
||||
"shipping": "shipping-basic"
|
||||
|
|
|
@ -365,6 +365,13 @@ router.post('/product/addtocart', async (req, res, next) => {
|
|||
let productQuantity = req.body.productQuantity ? parseInt(req.body.productQuantity) : 1;
|
||||
const productComment = req.body.productComment ? req.body.productComment : null;
|
||||
|
||||
// If maxQuantity set, ensure the quantity doesn't exceed that value
|
||||
if(config.maxQuantity && productQuantity > config.maxQuantity){
|
||||
return res.status(400).json({
|
||||
message: 'The quantity exceeds the max amount. Please contact us for larger orders.'
|
||||
});
|
||||
}
|
||||
|
||||
// Don't allow negative quantity
|
||||
if(productQuantity < 1){
|
||||
productQuantity = 1;
|
||||
|
|
|
@ -40,13 +40,25 @@ test('[Fail] Add product to cart when subscription already added', async t => {
|
|||
.post('/product/addtocart')
|
||||
.send({
|
||||
productId: g.products[1]._id,
|
||||
productQuantity: 100,
|
||||
productQuantity: 1,
|
||||
productOptions: JSON.stringify(g.products[1].productOptions)
|
||||
})
|
||||
.expect(400);
|
||||
t.deepEqual(res.body.message, 'Subscription already existing in cart. You cannot add more.');
|
||||
});
|
||||
|
||||
test('[Fail] Add quantity which exceeds the maxQuantity', async t => {
|
||||
const res = await g.request
|
||||
.post('/product/addtocart')
|
||||
.send({
|
||||
productId: g.products[4]._id,
|
||||
productQuantity: 75,
|
||||
productOptions: {}
|
||||
})
|
||||
.expect(400);
|
||||
t.deepEqual(res.body.message, 'The quantity exceeds the max amount. Please contact us for larger orders.');
|
||||
});
|
||||
|
||||
test('[Success] Empty cart', async t => {
|
||||
const res = await g.request
|
||||
.post('/product/emptycart')
|
||||
|
@ -113,7 +125,7 @@ test('[Fail] Add product to cart with not enough stock', async t => {
|
|||
.post('/product/addtocart')
|
||||
.send({
|
||||
productId: g.products[0]._id,
|
||||
productQuantity: 100,
|
||||
productQuantity: 20,
|
||||
productOptions: JSON.stringify(g.products[0].productOptions)
|
||||
})
|
||||
.expect(400);
|
||||
|
|
Loading…
Reference in New Issue