Fix: Add Customer id in generate line item for customer specific pricing (#1245)

* initial

* add logged in item to cart gets correct price

* customer id or cart_id customer id

* move customer_id to a config

* update unit test

* run pipelines
This commit is contained in:
Philip Korsholm
2022-03-28 09:57:33 +02:00
committed by GitHub
parent e9f6b4761a
commit 3083aaee81
6 changed files with 116 additions and 5 deletions
@@ -101,12 +101,14 @@ describe("POST /store/carts", () => {
expect(LineItemServiceMock.generate).toHaveBeenCalledWith(
IdMap.getId("testVariant"),
IdMap.getId("testRegion"),
3
3,
{ customer_id: undefined }
)
expect(LineItemServiceMock.generate).toHaveBeenCalledWith(
IdMap.getId("testVariant1"),
IdMap.getId("testRegion"),
1
1,
{ customer_id: undefined }
)
expect(CartServiceMock.addLineItem).toHaveBeenCalledTimes(2)
})
@@ -129,7 +129,9 @@ export default async (req, res) => {
validated.items.map(async (i) => {
const lineItem = await lineItemService
.withTransaction(manager)
.generate(i.variant_id, regionId, i.quantity)
.generate(i.variant_id, regionId, i.quantity, {
customer_id: req.user?.customer_id,
})
await cartService
.withTransaction(manager)
.addLineItem(cart.id, lineItem)
@@ -30,6 +30,7 @@ import { validator } from "../../../../utils/validator"
export default async (req, res) => {
const { id } = req.params
const customerId = req.user?.customer_id
const validated = await validator(StorePostCartsCartLineItemsReq, req.body)
const manager: EntityManager = req.scope.resolve("manager")
@@ -43,6 +44,7 @@ export default async (req, res) => {
const line = await lineItemService
.withTransaction(m)
.generate(validated.variant_id, cart.region_id, validated.quantity, {
customer_id: customerId || cart.customer_id,
metadata: validated.metadata,
})
await txCartService.addLineItem(id, line)