diff --git a/.changeset/khaki-buses-look.md b/.changeset/khaki-buses-look.md new file mode 100644 index 0000000000..d88b627e28 --- /dev/null +++ b/.changeset/khaki-buses-look.md @@ -0,0 +1,5 @@ +--- +"@medusajs/promotion": patch +--- + +chore(promotion): in operator work as In insted of equal logic diff --git a/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/evaluate-rule-value-condition.spec.ts b/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/evaluate-rule-value-condition.spec.ts index 760fda29ff..1a3a4a138b 100644 --- a/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/evaluate-rule-value-condition.spec.ts +++ b/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/evaluate-rule-value-condition.spec.ts @@ -18,6 +18,16 @@ moduleIntegrationTestRunner({ }) }) + describe("in", () => { + const operator = "in" + + it("should evaluate conditions accurately", async () => { + expect(testFunc(["1", "2"], operator, [2])).toEqual(true) + expect(testFunc(["2"], operator, ["2"])).toEqual(true) + expect(testFunc(["2"], operator, ["22"])).toEqual(false) + }) + }) + describe("ne", () => { const operator = "ne" diff --git a/packages/modules/promotion/src/utils/validations/promotion-rule.ts b/packages/modules/promotion/src/utils/validations/promotion-rule.ts index dd6716c9c9..a71a5141af 100644 --- a/packages/modules/promotion/src/utils/validations/promotion-rule.ts +++ b/packages/modules/promotion/src/utils/validations/promotion-rule.ts @@ -117,11 +117,14 @@ export function evaluateRuleValueCondition( } switch (operator) { - case "in": case "eq": { const ruleValueSet = new Set(ruleValues) return valuesToCheck.every((val) => ruleValueSet.has(`${val}`)) } + case "in": { + const ruleValueSet = new Set(ruleValues) + return valuesToCheck.some((val) => ruleValueSet.has(`${val}`)) + } case "ne": { const ruleValueSet = new Set(ruleValues) return valuesToCheck.every((val) => !ruleValueSet.has(`${val}`))