fix(promotion, core-flows): updating cart with removed promotion removes adjustments (#10489)
This commit is contained in:
@@ -57,68 +57,6 @@ moduleIntegrationTestRunner({
|
||||
|
||||
expect(response).toEqual([])
|
||||
})
|
||||
|
||||
it("should throw error when code in items adjustment does not exist", async () => {
|
||||
await createDefaultPromotion(service, {})
|
||||
|
||||
const error = await service
|
||||
.computeActions(["PROMOTION_TEST"], {
|
||||
items: [
|
||||
{
|
||||
id: "item_cotton_tshirt",
|
||||
quantity: 1,
|
||||
subtotal: 100,
|
||||
adjustments: [
|
||||
{
|
||||
id: "test-adjustment",
|
||||
code: "DOES_NOT_EXIST",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: "item_cotton_sweater",
|
||||
quantity: 5,
|
||||
subtotal: 750,
|
||||
},
|
||||
],
|
||||
})
|
||||
.catch((e) => e)
|
||||
|
||||
expect(error.message).toContain(
|
||||
"Applied Promotion for code (DOES_NOT_EXIST) not found"
|
||||
)
|
||||
})
|
||||
|
||||
it("should throw error when code in shipping adjustment does not exist", async () => {
|
||||
await createDefaultPromotion(service, {})
|
||||
|
||||
const error = await service
|
||||
.computeActions(["PROMOTION_TEST"], {
|
||||
items: [
|
||||
{
|
||||
id: "item_cotton_tshirt",
|
||||
quantity: 1,
|
||||
subtotal: 100,
|
||||
},
|
||||
{
|
||||
id: "item_cotton_sweater",
|
||||
quantity: 5,
|
||||
subtotal: 750,
|
||||
adjustments: [
|
||||
{
|
||||
id: "test-adjustment",
|
||||
code: "DOES_NOT_EXIST",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
})
|
||||
.catch((e) => e)
|
||||
|
||||
expect(error.message).toContain(
|
||||
"Applied Promotion for code (DOES_NOT_EXIST) not found"
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe("when promotion is for items and allocation is each", () => {
|
||||
|
||||
@@ -397,6 +397,7 @@ export default class PromotionModuleService
|
||||
],
|
||||
},
|
||||
{
|
||||
take: null,
|
||||
relations: [
|
||||
"application_method",
|
||||
"application_method.target_rules",
|
||||
@@ -421,19 +422,11 @@ export default class PromotionModuleService
|
||||
const appliedCodes = [...appliedShippingCodes, ...appliedItemCodes]
|
||||
|
||||
for (const appliedCode of appliedCodes) {
|
||||
const promotion = existingPromotionsMap.get(appliedCode)
|
||||
const adjustments = codeAdjustmentMap.get(appliedCode) || []
|
||||
const action = appliedShippingCodes.includes(appliedCode)
|
||||
? ComputedActions.REMOVE_SHIPPING_METHOD_ADJUSTMENT
|
||||
: ComputedActions.REMOVE_ITEM_ADJUSTMENT
|
||||
|
||||
if (!promotion) {
|
||||
throw new MedusaError(
|
||||
MedusaError.Types.INVALID_DATA,
|
||||
`Applied Promotion for code (${appliedCode}) not found`
|
||||
)
|
||||
}
|
||||
|
||||
adjustments.forEach((adjustment) =>
|
||||
computedActions.push({
|
||||
action,
|
||||
|
||||
Reference in New Issue
Block a user