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:
co-authored by
Adrien de Peretti
parent
b4d6a4b3f0
commit
913cf15e2b
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
+16
-11
@@ -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",
|
||||
|
||||
+3
-3
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user