fix(medusa): Applying Discounts (with Conditions) on DraftOrders and Carts (#3197)

This commit is contained in:
Adrien de Peretti
2023-02-08 19:01:23 +01:00
committed by GitHub
parent 4d3210bfbb
commit bfa33f444c
14 changed files with 636 additions and 365 deletions
@@ -14,7 +14,6 @@ const { useApi } = require("../../../../helpers/use-api")
const { initDb, useDb } = require("../../../../helpers/use-db")
const cartSeeder = require("../../../helpers/cart-seeder")
const productSeeder = require("../../../helpers/product-seeder")
const swapSeeder = require("../../../helpers/swap-seeder")
const {
simpleCartFactory,
@@ -980,16 +979,18 @@ describe("/store/carts", () => {
it("fails on apply discount if limit has been reached", async () => {
const api = useApi()
const code = "SPENT"
const err = await api
.post("/store/carts/test-cart", {
discounts: [{ code: "SPENT" }],
discounts: [{ code }],
})
.catch((err) => err)
expect(err).toBeTruthy()
expect(err.response.status).toEqual(400)
expect(err.response.data.message).toEqual(
"Discount has been used maximum allowed times"
`Discount ${code} has been used maximum allowed times`
)
})
@@ -1330,14 +1331,15 @@ describe("/store/carts", () => {
},
})
const code = "TEST"
try {
await api.post("/store/carts/test-customer-discount", {
discounts: [{ code: "TEST" }],
discounts: [{ code }],
})
} catch (error) {
expect(error.response.status).toEqual(400)
expect(error.response.data.message).toEqual(
"Discount is not valid for customer"
`Discount ${code} is not valid for customer`
)
}
})
@@ -1399,14 +1401,15 @@ describe("/store/carts", () => {
},
})
const code = "TEST"
try {
await api.post("/store/carts/test-customer-discount", {
discounts: [{ code: "TEST" }],
discounts: [{ code }],
})
} catch (error) {
expect(error.response.status).toEqual(400)
expect(error.response.data.message).toEqual(
"Discount is not valid for customer"
`Discount ${code} is not valid for customer`
)
}
})
@@ -1415,41 +1418,49 @@ describe("/store/carts", () => {
expect.assertions(2)
const api = useApi()
try {
await api.post("/store/carts/test-cart", {
discounts: [{ code: "EXP_DISC" }],
const code = "EXP_DISC"
const err = await api
.post("/store/carts/test-cart", {
discounts: [{ code }],
})
} catch (error) {
expect(error.response.status).toEqual(400)
expect(error.response.data.message).toEqual("Discount is expired")
}
.catch((e) => e)
expect(err.response.status).toEqual(400)
expect(err.response.data.message).toEqual(`Discount ${code} is expired`)
})
it("fails on discount before start day", async () => {
expect.assertions(2)
const api = useApi()
try {
await api.post("/store/carts/test-cart", {
discounts: [{ code: "PREM_DISC" }],
const code = "PREM_DISC"
const err = await api
.post("/store/carts/test-cart", {
discounts: [{ code }],
})
} catch (error) {
expect(error.response.status).toEqual(400)
expect(error.response.data.message).toEqual("Discount is not valid yet")
}
.catch((e) => e)
expect(err.response.status).toEqual(400)
expect(err.response.data.message).toEqual(
`Discount ${code} is not valid yet`
)
})
it("fails on apply invalid dynamic discount", async () => {
const api = useApi()
try {
await api.post("/store/carts/test-cart", {
discounts: [{ code: "INV_DYN_DISC" }],
const code = "INV_DYN_DISC"
const err = await api
.post("/store/carts/test-cart", {
discounts: [{ code }],
})
} catch (error) {
expect(error.response.status).toEqual(400)
expect(error.response.data.message).toEqual("Discount is expired")
}
.catch((e) => e)
expect(err.response.status).toEqual(400)
expect(err.response.data.message).toEqual(`Discount ${code} is expired`)
})
it("Applies dynamic discount to cart correctly", async () => {