diff --git a/packages/medusa/src/services/__tests__/discount.js b/packages/medusa/src/services/__tests__/discount.js index b820ca7590..ce78505e6e 100644 --- a/packages/medusa/src/services/__tests__/discount.js +++ b/packages/medusa/src/services/__tests__/discount.js @@ -9,7 +9,6 @@ const featureFlagRouter = new FlagRouter({}) describe("DiscountService", () => { describe("create", () => { const discountRepository = MockRepository({}) - const discountRuleRepository = MockRepository({}) const regionService = { @@ -54,6 +53,24 @@ describe("DiscountService", () => { } }) + it("fails to create a discount without regions", async () => { + expect.assertions(3) + try { + await discountService.create({ + code: "test", + rule: { + type: "fixed", + allocation: "total", + value: 20, + }, + }) + } catch (err) { + expect(err.type).toEqual("invalid_data") + expect(err.message).toEqual("Discount must have atleast 1 region") + expect(discountRepository.create).toHaveBeenCalledTimes(0) + } + }) + it("successfully creates discount", async () => { await discountService.create({ code: "test", diff --git a/packages/medusa/src/services/discount.ts b/packages/medusa/src/services/discount.ts index 0253c4f70a..e37bbb3a50 100644 --- a/packages/medusa/src/services/discount.ts +++ b/packages/medusa/src/services/discount.ts @@ -212,6 +212,13 @@ class DiscountService extends TransactionBaseService { )) as Region[] } + if (isEmpty(discount.regions)) { + throw new MedusaError( + MedusaError.Types.INVALID_DATA, + "Discount must have atleast 1 region" + ) + } + const discountRule = ruleRepo.create(validatedRule) const createdDiscountRule = await ruleRepo.save(discountRule)