feat(medusa,pricing): Cart pricing context with customer group (#10579)

* fix(carts): Fixes cart modifications not accounting for certain price lists (#10493)

*What*

* Fixes #10490
* Expands any available customer_id into its customer_group_ids for cart
  updates that add line items.

*Why*

* Cart updates from the storefront were overriding any valid price lists
  that were correctly being shown in the storefront's product pages.

*How*

* Adds a new workflow step that expands an optional customer_id into the
  customer_group_ids it belongs to.
* Uses this step in the addToCartWorkflow and
  updateLineItemInCartWorkflow workflows.

*Testing*
* Using medusa-dev to test on a local backend.
* Adds integration tests for the addToCart and updateLineItemInCart
  workflows.

Co-authored-by: Riqwan Thamir <rmthamir@gmail.com>

* chore: update cart workflows to accept new pricing context

* chore: add transfer specs

* chore: fix specs

* chore: modify types + specs

* chore: add data migration + dashboard changes

* chore: fix update line item workflow

* chore: add changeset + unskip spec

---------

Co-authored-by: Sergio Campamá <sergiocampama@gmail.com>
This commit is contained in:
Riqwan Thamir
2024-12-17 11:10:30 +01:00
committed by GitHub
co-authored by Sergio Campamá
parent 0c49470066
commit 6367bccde8
29 changed files with 1090 additions and 166 deletions
@@ -1,3 +1,4 @@
import { medusaIntegrationTestRunner } from "@medusajs/test-utils"
import {
ICustomerModuleService,
IPricingModuleService,
@@ -5,7 +6,6 @@ import {
IRegionModuleService,
} from "@medusajs/types"
import { Modules, PriceListStatus, PriceListType } from "@medusajs/utils"
import { medusaIntegrationTestRunner } from "@medusajs/test-utils"
import { createAdminUser } from "../../../../helpers/create-admin-user"
import { createVariantPriceSet } from "../../../helpers/create-variant-price-set"
@@ -94,7 +94,7 @@ medusaIntegrationTestRunner({
},
],
rules: {
customer_group_id: [customerGroup.id],
"customer.groups.id": [customerGroup.id],
},
},
])
@@ -116,7 +116,7 @@ medusaIntegrationTestRunner({
updated_at: expect.any(String),
deleted_at: null,
rules: {
customer_group_id: [customerGroup.id],
"customer.groups.id": [customerGroup.id],
},
prices: [
{
@@ -185,7 +185,7 @@ medusaIntegrationTestRunner({
},
],
rules: {
customer_group_id: [customerGroup.id],
"customer.groups.id": [customerGroup.id],
},
},
{
@@ -206,7 +206,7 @@ medusaIntegrationTestRunner({
},
],
rules: {
customer_group_id: [customerGroup.id],
"customer.groups.id": [customerGroup.id],
},
},
])
@@ -252,7 +252,7 @@ medusaIntegrationTestRunner({
},
],
rules: {
customer_group_id: [customerGroup.id],
"customer.groups.id": [customerGroup.id],
},
},
])
@@ -276,7 +276,7 @@ medusaIntegrationTestRunner({
updated_at: expect.any(String),
deleted_at: null,
rules: {
customer_group_id: [customerGroup.id],
"customer.groups.id": [customerGroup.id],
},
prices: [
{
@@ -342,7 +342,7 @@ medusaIntegrationTestRunner({
status: "active",
starts_at: new Date(),
rules: {
customer_group_id: [customerGroup.id],
"customer.groups.id": [customerGroup.id],
},
prices: [
{
@@ -374,7 +374,7 @@ medusaIntegrationTestRunner({
updated_at: expect.any(String),
deleted_at: null,
rules: {
customer_group_id: [customerGroup.id],
"customer.groups.id": [customerGroup.id],
},
prices: [
expect.objectContaining({
@@ -519,7 +519,7 @@ medusaIntegrationTestRunner({
title: "new price list name",
description: "new price list description",
rules: {
customer_group_id: [customerGroup.id],
"customer.groups.id": [customerGroup.id],
},
}
@@ -536,7 +536,7 @@ medusaIntegrationTestRunner({
title: "new price list name",
description: "new price list description",
rules: {
customer_group_id: [customerGroup.id],
"customer.groups.id": [customerGroup.id],
},
})
)