From 5414148254de9b54c0c292e9348f524f15334b96 Mon Sep 17 00:00:00 2001 From: Kasper Fabricius Kristensen <45367945+kasperkristensen@users.noreply.github.com> Date: Tue, 24 May 2022 12:28:40 +0200 Subject: [PATCH] fix(medusa): Post /admin/discounts/:id not updating condition operator (#1573) --- integration-tests/api/__tests__/admin/discount.js | 7 ++++--- packages/medusa/src/services/discount-condition.ts | 7 +++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/integration-tests/api/__tests__/admin/discount.js b/integration-tests/api/__tests__/admin/discount.js index 21e43264ab..bb194bf895 100644 --- a/integration-tests/api/__tests__/admin/discount.js +++ b/integration-tests/api/__tests__/admin/discount.js @@ -640,6 +640,7 @@ describe("/admin/discounts", () => { conditions: [ { id: condsToUpdate.id, + operator: "not_in", products: [product.id, anotherProduct.id], }, ], @@ -656,10 +657,10 @@ describe("/admin/discounts", () => { }) expect(updated.status).toEqual(200) - expect(updated.data.discount.rule.conditions).toEqual([ + expect(updated.data.discount.rule.conditions).toEqual(expect.arrayContaining([ expect.objectContaining({ type: "products", - operator: "in", + operator: "not_in", products: expect.arrayContaining([ expect.objectContaining({ id: product.id, @@ -673,7 +674,7 @@ describe("/admin/discounts", () => { type: "product_types", operator: "not_in", }), - ]) + ])) }) it("fails to add condition on rule with existing comb. of type and operator", async () => { diff --git a/packages/medusa/src/services/discount-condition.ts b/packages/medusa/src/services/discount-condition.ts index e91707b994..49d2eab603 100644 --- a/packages/medusa/src/services/discount-condition.ts +++ b/packages/medusa/src/services/discount-condition.ts @@ -122,6 +122,13 @@ class DiscountConditionService extends BaseService { manager.getCustomRepository(this.discountConditionRepository_) if (data.id) { + const resolvedCondition = await this.retrieve(data.id) + + if (data.operator && data.operator !== resolvedCondition.operator) { + resolvedCondition.operator = data.operator + await discountConditionRepo.save(resolvedCondition) + } + return await discountConditionRepo.addConditionResources( data.id, resolvedConditionType.resource_ids,