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