fix(medusa): Optimize Cart totals calculation (#2372)
**What** The existing totals calculations are extremely heavy and perform an enormous amount of duplicate work. The changes here remove large parts of the overhead and improves response times for cart endpoints up to 30x.
This commit is contained in:
@@ -32,7 +32,7 @@ describe("/admin/orders", () => {
|
||||
beforeAll(async () => {
|
||||
const cwd = path.resolve(path.join(__dirname, "..", "..", ".."))
|
||||
dbConnection = await initDb({ cwd })
|
||||
medusaProcess = await setupServer({ cwd })
|
||||
medusaProcess = await setupServer({ cwd, verbose: false })
|
||||
})
|
||||
|
||||
afterAll(async () => {
|
||||
|
||||
@@ -495,7 +495,6 @@ describe("[MEDUSA_FF_TAX_INCLUSIVE_PRICING] /store/carts", () => {
|
||||
|
||||
const expectedItemTotals = {
|
||||
subtotal: 200,
|
||||
gift_card_total: 0,
|
||||
discount_total: 30,
|
||||
total: 204,
|
||||
original_total: 240,
|
||||
|
||||
@@ -28,7 +28,7 @@ describe("Automatic Cart Taxes", () => {
|
||||
beforeAll(async () => {
|
||||
const cwd = path.resolve(path.join(__dirname, "..", ".."))
|
||||
dbConnection = await initDb({ cwd })
|
||||
medusaProcess = await setupServer({ cwd })
|
||||
medusaProcess = await setupServer({ cwd, verbose: false })
|
||||
})
|
||||
|
||||
afterAll(async () => {
|
||||
|
||||
@@ -74,7 +74,6 @@ describe("Cart Totals Calculations", () => {
|
||||
expect(res.data.cart.items[0].original_total).toEqual(110)
|
||||
expect(res.data.cart.items[0].original_tax_total).toEqual(10)
|
||||
expect(res.data.cart.items[0].discount_total).toEqual(0)
|
||||
expect(res.data.cart.items[0].gift_card_total).toEqual(0)
|
||||
})
|
||||
|
||||
it("sets correct line item totals for a cart with item of price 100; tax rate 10; discount 10", async () => {
|
||||
@@ -123,7 +122,6 @@ describe("Cart Totals Calculations", () => {
|
||||
expect(res.data.cart.items[0].original_total).toEqual(110)
|
||||
expect(res.data.cart.items[0].original_tax_total).toEqual(10)
|
||||
expect(res.data.cart.items[0].discount_total).toEqual(10)
|
||||
expect(res.data.cart.items[0].gift_card_total).toEqual(0)
|
||||
})
|
||||
|
||||
it("doesn't include taxes in !automatic_taxes regions", async () => {
|
||||
@@ -174,7 +172,6 @@ describe("Cart Totals Calculations", () => {
|
||||
expect(res.data.cart.items[0].original_total).toEqual(100)
|
||||
expect(res.data.cart.items[0].original_tax_total).toEqual(0)
|
||||
expect(res.data.cart.items[0].discount_total).toEqual(10)
|
||||
expect(res.data.cart.items[0].gift_card_total).toEqual(0)
|
||||
})
|
||||
|
||||
it("includes taxes in !automatic_taxes regions when forced", async () => {
|
||||
@@ -227,6 +224,5 @@ describe("Cart Totals Calculations", () => {
|
||||
expect(res.data.cart.items[0].original_total).toEqual(110)
|
||||
expect(res.data.cart.items[0].original_tax_total).toEqual(10)
|
||||
expect(res.data.cart.items[0].discount_total).toEqual(10)
|
||||
expect(res.data.cart.items[0].gift_card_total).toEqual(0)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -25,7 +25,7 @@ describe("Manual Cart Taxes", () => {
|
||||
beforeAll(async () => {
|
||||
const cwd = path.resolve(path.join(__dirname, "..", ".."))
|
||||
dbConnection = await initDb({ cwd })
|
||||
medusaProcess = await setupServer({ cwd })
|
||||
medusaProcess = await setupServer({ cwd, verbose: false })
|
||||
})
|
||||
|
||||
afterAll(async () => {
|
||||
@@ -76,7 +76,7 @@ describe("Manual Cart Taxes", () => {
|
||||
|
||||
const response = await api.get("/store/carts/test-cart")
|
||||
expect(response.status).toEqual(200)
|
||||
expect(response.data.cart.tax_total).toEqual(null)
|
||||
expect(response.data.cart.tax_total).toEqual(0)
|
||||
expect(response.data.cart.total).toEqual(100)
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user