Skip to content

Commit

Permalink
feat(medusa): Revert pricing service setVariantPrices API (#4130)
Browse files Browse the repository at this point in the history
  • Loading branch information
adrien2p authored May 22, 2023
1 parent c4aae6b commit bf18bd0
Show file tree
Hide file tree
Showing 8 changed files with 37 additions and 77 deletions.
6 changes: 6 additions & 0 deletions .changeset/ten-pumpkins-sleep.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@medusajs/medusa": patch
"integration-tests-api": patch
---

feat(medusa): Revert pricing service setVariantPrices API
2 changes: 1 addition & 1 deletion integration-tests/api/__tests__/store/cart/cart.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ const {
simpleCustomerGroupFactory,
} = require("../../../factories/simple-customer-group-factory")

jest.setTimeout(3000000)
jest.setTimeout(30000)

describe("/store/carts", () => {
let medusaProcess
Expand Down
4 changes: 1 addition & 3 deletions packages/medusa/src/api/routes/admin/variants/get-variant.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,7 @@ export default async (req, res) => {
req.retrieveConfig
)

const [variant] = await pricingService.setVariantPrices([
{ variant: rawVariant },
])
const [variant] = await pricingService.setVariantPrices([rawVariant])

res.status(200).json({ variant })
}
Expand Down
19 changes: 8 additions & 11 deletions packages/medusa/src/api/routes/admin/variants/list-variants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -147,17 +147,14 @@ export default async (req, res) => {
currencyCode = region.currency_code
}

let variants = await pricingService.setVariantPrices(
rawVariants.map((v) => ({ variant: v })),
{
cart_id: req.validatedQuery.cart_id,
region_id: regionId,
currency_code: currencyCode,
customer_id: req.validatedQuery.customer_id,
include_discount_prices: true,
ignore_cache: true,
}
)
let variants = await pricingService.setVariantPrices(rawVariants, {
cart_id: req.validatedQuery.cart_id,
region_id: regionId,
currency_code: currencyCode,
customer_id: req.validatedQuery.customer_id,
include_discount_prices: true,
ignore_cache: true,
})

const inventoryService: IInventoryService | undefined =
req.scope.resolve("inventoryService")
Expand Down
17 changes: 7 additions & 10 deletions packages/medusa/src/api/routes/store/variants/get-variant.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,16 +97,13 @@ export default async (req, res) => {
currencyCode = region.currency_code
}

const variantRes = await pricingService.setVariantPrices(
[{ variant: rawVariant }],
{
cart_id: validated.cart_id,
customer_id: customer_id,
region_id: regionId,
currency_code: currencyCode,
include_discount_prices: true,
}
)
const variantRes = await pricingService.setVariantPrices([rawVariant], {
cart_id: validated.cart_id,
customer_id: customer_id,
region_id: regionId,
currency_code: currencyCode,
include_discount_prices: true,
})

const [variant] = await productVariantInventoryService.setVariantAvailability(
variantRes,
Expand Down
17 changes: 7 additions & 10 deletions packages/medusa/src/api/routes/store/variants/list-variants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -156,16 +156,13 @@ export default async (req, res) => {
currencyCode = region.currency_code
}

const pricedVariants = await pricingService.setVariantPrices(
rawVariants.map((v) => ({ variant: v })),
{
cart_id: validated.cart_id,
region_id: regionId,
currency_code: currencyCode,
customer_id: customer_id,
include_discount_prices: true,
}
)
const pricedVariants = await pricingService.setVariantPrices(rawVariants, {
cart_id: validated.cart_id,
region_id: regionId,
currency_code: currencyCode,
customer_id: customer_id,
include_discount_prices: true,
})

const variants = await productVariantInventoryService.setVariantAvailability(
pricedVariants,
Expand Down
2 changes: 1 addition & 1 deletion packages/medusa/src/services/__mocks__/pricing.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export const PricingServiceMock = {
setProductPrices: jest.fn().mockImplementation((prod) => {
return Promise.resolve(prod)
}),
setVariantPrices: jest.fn().mockImplementation(([{ variant }]) => {
setVariantPrices: jest.fn().mockImplementation(([variant]) => {
return Promise.resolve([variant])
}),
setShippingOptionPrices: jest.fn().mockImplementation((opts) => {
Expand Down
47 changes: 6 additions & 41 deletions packages/medusa/src/services/pricing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -450,62 +450,27 @@ class PricingService extends TransactionBaseService {
return productPricing.get(productId)!
}

/**
* @deprecated
* @param variants
* @param context
*/
async setVariantPrices(
variants: ProductVariant[],
context?: PriceSelectionContext
): Promise<PricedVariant[]>

/**
* Set additional prices on a list of product variants.
* @param variantsData
* @param context - the price selection context to use
* @return A list of products with variants decorated with prices
*/
async setVariantPrices(
variantsData: { variant: ProductVariant; quantity?: number }[],
context?: PriceSelectionContext
): Promise<PricedVariant[]>

/**
* Set additional prices on a list of product variants.
* @param variantsData
* @param variants
* @param context - the price selection context to use
* @return A list of products with variants decorated with prices
*/
async setVariantPrices(
variantsData:
| ProductVariant[]
| { variant: ProductVariant; quantity?: number }[],
variants: ProductVariant[],
context: PriceSelectionContext = {}
): Promise<PricedVariant[]> {
const pricingContext = await this.collectPricingContext(context)

let data = variantsData as {
variant: ProductVariant
quantity?: number
}[]

if ("id" in variantsData) {
data = (variantsData as ProductVariant[]).map((v) => ({
variant: v,
quantity: pricingContext.price_selection.quantity,
}))
}

const variantsPricingMap = await this.getProductVariantsPricing(
data.map((v) => ({
variantId: v.variant.id,
quantity: v.quantity,
variants.map((v) => ({
variantId: v.id,
quantity: context.quantity,
})),
pricingContext
)

return data.map(({ variant }) => {
return variants.map((variant) => {
const variantPricing = variantsPricingMap[variant.id]
Object.assign(variant, variantPricing)
return variant as unknown as PricedVariant
Expand Down

0 comments on commit bf18bd0

Please sign in to comment.