refactor: migrate pricing entities to DML models (#10335)

Fixes: FRMW-2810

## Breaking changes
There is only one breaking change

- The `min_quantity` and `max_quantity` properties are now consistently typed as numbers. Earlier, it was [typed as numbers](https://github.com/medusajs/medusa/blob/develop/integration-tests/http/__tests__/price-list/admin/price-list.spec.ts#L68-L69) in some API responses and as [string in others](https://github.com/medusajs/medusa/blob/develop/integration-tests/http/__tests__/price-list/admin/price-list.spec.ts#L186-L187). I did not go to the bottom of this inconsistency, but the tests reveals them.

Co-authored-by: Adrien de Peretti <25098370+adrien2p@users.noreply.github.com>
This commit is contained in:
Harminder Virk
2024-12-02 09:44:41 +00:00
committed by GitHub
co-authored by Adrien de Peretti
parent b4d6a4b3f0
commit 913cf15e2b
18 changed files with 387 additions and 726 deletions
@@ -1,5 +1,6 @@
import { SqlEntityManager } from "@mikro-orm/postgresql"
import { PriceListRule } from "@models"
import { toMikroORMEntity } from "@medusajs/framework/utils"
import { defaultPriceListRuleData } from "./data"
export * from "./data"
@@ -11,7 +12,7 @@ export async function createPriceListRules(
const priceListRules: PriceListRule[] = []
for (let data of priceListRuleData) {
const plr = manager.create(PriceListRule, data)
const plr = manager.create(toMikroORMEntity(PriceListRule), data)
priceListRules.push(plr)
}
@@ -1,5 +1,6 @@
import { SqlEntityManager } from "@mikro-orm/postgresql"
import { PriceList } from "@models"
import { toMikroORMEntity } from "@medusajs/framework/utils"
import { defaultPriceListData } from "./data"
export * from "./data"
@@ -11,7 +12,7 @@ export async function createPriceLists(
const priceLists: PriceList[] = []
for (let data of priceListData) {
const pl = manager.create(PriceList, data)
const pl = manager.create(toMikroORMEntity(PriceList), data)
priceLists.push(pl)
}
@@ -2,6 +2,7 @@ import { PriceRule } from "@models"
import { CreatePriceRuleDTO } from "@medusajs/framework/types"
import { SqlEntityManager } from "@mikro-orm/postgresql"
import { toMikroORMEntity } from "@medusajs/framework/utils"
import { defaultPriceRuleData } from "./data"
export * from "./data"
@@ -20,7 +21,10 @@ export async function createPriceRules(
priceRuleDataClone.attribute = priceRuleDataClone.attribute
priceRuleDataClone.price_id = priceRuleDataClone.price_id
const priceRule = manager.create(PriceRule, priceRuleDataClone)
const priceRule = manager.create(
toMikroORMEntity(PriceRule),
priceRuleDataClone
)
priceRules.push(priceRule)
}
@@ -1,6 +1,7 @@
import { CreatePriceSetDTO } from "@medusajs/framework/types"
import { SqlEntityManager } from "@mikro-orm/postgresql"
import { Price, PriceSet } from "@models"
import { toMikroORMEntity } from "@medusajs/framework/utils"
import { defaultPriceSetsData } from "./data"
export * from "./data"
@@ -16,12 +17,15 @@ export async function createPriceSets(
const prices = priceSetDataClone.prices || []
delete priceSetDataClone.prices
let priceSet = manager.create(PriceSet, priceSetDataClone) as PriceSet
let priceSet = manager.create(
toMikroORMEntity(PriceSet),
priceSetDataClone
) as PriceSet
manager.persist(priceSet)
for (let priceData of prices) {
const price = manager.create(Price, {
const price = manager.create(toMikroORMEntity(Price), {
...priceData,
price_set_id: priceSet.id,
title: "test",
@@ -1,6 +1,7 @@
import { SqlEntityManager } from "@mikro-orm/postgresql"
import { Price } from "@models"
import { defaultPricesData } from "./data"
import { SqlEntityManager } from "@mikro-orm/postgresql"
import { toMikroORMEntity } from "@medusajs/framework/utils"
export * from "./data"
@@ -11,7 +12,7 @@ export async function createPrices(
const prices: Price[] = []
for (let data of pricesData) {
const price = manager.create(Price, data)
const price = manager.create(toMikroORMEntity(Price), data)
prices.push(price)
}
@@ -254,11 +254,14 @@ moduleIntegrationTestRunner<IPricingModuleService>({
ends_at: "10/20/2030",
},
])
expect(priceList).toEqual(
expect.objectContaining({
starts_at: new Date("10/10/2010").toISOString(),
ends_at: new Date("10/20/2030").toISOString(),
})
expect(priceList).toHaveProperty("starts_at")
expect(priceList).toHaveProperty("ends_at")
expect(priceList.starts_at?.toString()).toEqual(
new Date("10/10/2010").toISOString()
)
expect(priceList.ends_at?.toString()).toEqual(
new Date("10/20/2030").toISOString()
)
})
@@ -378,11 +381,14 @@ moduleIntegrationTestRunner<IPricingModuleService>({
ends_at: "10/20/2030",
},
])
expect(priceList).toEqual(
expect.objectContaining({
starts_at: new Date("10/10/2010").toISOString(),
ends_at: new Date("10/20/2030").toISOString(),
})
expect(priceList).toHaveProperty("starts_at")
expect(priceList).toHaveProperty("ends_at")
expect(priceList.starts_at?.toString()).toEqual(
new Date("10/10/2010").toString()
)
expect(priceList.ends_at?.toString()).toEqual(
new Date("10/20/2030").toString()
)
})
@@ -562,7 +568,6 @@ moduleIntegrationTestRunner<IPricingModuleService>({
currency_code: "EUR",
}),
expect.objectContaining({
rules_count: 0,
price_rules: [],
amount: 600,
currency_code: "EUR",
@@ -5,7 +5,7 @@ import { Price } from "../../../../src/models"
import { createPrices } from "../../../__fixtures__/price"
import { createPriceRules } from "../../../__fixtures__/price-rule"
import { createPriceSets } from "../../../__fixtures__/price-set"
import { Modules } from "@medusajs/framework/utils"
import { Modules, toMikroORMEntity } from "@medusajs/framework/utils"
jest.setTimeout(30000)
@@ -268,13 +268,13 @@ moduleIntegrationTestRunner<IPricingModuleService>({
})
it("should create a PriceRule successfully", async () => {
const price: Price = testManager.create(Price, {
const price = testManager.create(toMikroORMEntity(Price), {
currency_code: "EUR",
amount: 100,
price_set_id: "price-set-1",
title: "test",
rules_count: 0,
} as Price)
})
await testManager.persist(price).flush()