Skip to content

Commit

Permalink
fix: Ensure tax lines are generated for all items and shipping method…
Browse files Browse the repository at this point in the history
…s in cart (#10372)

* fix: Generate tax lines for all items in cart

* fix: Correct test
  • Loading branch information
olivermrbl authored Dec 1, 2024
1 parent 94f6265 commit eacd691
Show file tree
Hide file tree
Showing 6 changed files with 98 additions and 9 deletions.
85 changes: 85 additions & 0 deletions integration-tests/http/__tests__/cart/store/cart.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,91 @@ medusaIntegrationTestRunner({
)
})

it("should add item to cart with tax lines multiple times", async () => {
let response = await api.post(
`/store/carts/${cart.id}/line-items`,
{
variant_id: product.variants[0].id,
quantity: 1,
},
storeHeaders
)

expect(response.status).toEqual(200)
expect(response.data.cart).toEqual(
expect.objectContaining({
id: cart.id,
currency_code: "usd",
items: expect.arrayContaining([
expect.objectContaining({
unit_price: 1500,
compare_at_unit_price: null,
is_tax_inclusive: true,
title: "S / Black",
quantity: 2,
tax_lines: [
expect.objectContaining({
description: "CA Default Rate",
code: "CADEFAULT",
rate: 5,
provider_id: "system",
}),
],
}),
]),
})
)

response = await api.post(
`/store/carts/${cart.id}/line-items`,
{
variant_id: product.variants[1].id,
quantity: 1,
},
storeHeaders
)

expect(response.status).toEqual(200)
expect(response.data.cart).toEqual(
expect.objectContaining({
id: cart.id,
currency_code: "usd",
items: expect.arrayContaining([
expect.objectContaining({
unit_price: 1500,
compare_at_unit_price: null,
is_tax_inclusive: true,
quantity: 2,
title: "S / Black",
tax_lines: [
expect.objectContaining({
description: "CA Default Rate",
code: "CADEFAULT",
rate: 5,
provider_id: "system",
}),
],
}),
expect.objectContaining({
unit_price: 1500,
compare_at_unit_price: null,
is_tax_inclusive: true,
quantity: 1,
title: "S / White",
tax_lines: [
expect.objectContaining({
description: "CA Default Rate",
code: "CADEFAULT",
rate: 5,
provider_id: "system",
}),
],
}),
]),
})
)
})

describe("with sale price lists", () => {
let priceList

Expand Down
9 changes: 8 additions & 1 deletion integration-tests/modules/__tests__/cart/store/carts.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -876,7 +876,14 @@ medusaIntegrationTestRunner({
is_tax_inclusive: false,
quantity: 1,
title: "Test item",
tax_lines: [],
tax_lines: [
expect.objectContaining({
code: "CADEFAULT",
description: "CA Default Rate",
provider_id: "system",
rate: 5,
}),
],
adjustments: [
expect.objectContaining({
id: expect.not.stringContaining(lineItemAdjustment.id),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ export const addShippingMethodToCartWorkflow = createWorkflow(
return cart.shipping_methods.map((sm) => sm.id)
})

const [, shippingMethodsToAdd] = parallelize(
parallelize(
removeShippingMethodFromCartStep({
shipping_method_ids: currentShippingMethods,
}),
Expand All @@ -148,7 +148,6 @@ export const addShippingMethodToCartWorkflow = createWorkflow(
updateTaxLinesWorkflow.runAsStep({
input: {
cart_id: input.cart_id,
shipping_methods: shippingMethodsToAdd,
},
})

Expand Down
1 change: 0 additions & 1 deletion packages/core/core-flows/src/cart/workflows/add-to-cart.ts
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,6 @@ export const addToCartWorkflow = createWorkflow(
updateTaxLinesWorkflow.runAsStep({
input: {
cart_id: input.cart.id,
items,
},
})

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ export const refreshCartItemsWorkflow = createWorkflow(
return items
})

const items = updateLineItemsStep({
updateLineItemsStep({
id: cart.id,
items: lineItems,
})
Expand All @@ -103,7 +103,7 @@ export const refreshCartItemsWorkflow = createWorkflow(
refreshCartShippingMethodsStep({ cart: refetchedCart })

updateTaxLinesWorkflow.runAsStep({
input: { cart_id: cart.id, items },
input: { cart_id: cart.id },
})

const cartPromoCodes = transform({ cart, input }, ({ cart, input }) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,8 @@ export const updateTaxLinesWorkflow = createWorkflow(
const taxLineItems = getItemTaxLinesStep(
transform({ input, cart }, (data) => ({
orderOrCart: data.cart,
items: data.input.items || data.cart.items,
shipping_methods:
data.input.shipping_methods || data.cart.shipping_methods,
items: data.cart.items,
shipping_methods: data.cart.shipping_methods,
force_tax_calculation: data.input.force_tax_calculation,
}))
)
Expand Down

0 comments on commit eacd691

Please sign in to comment.