chore: Migrate modules to use the Module util (#7964)

**What**
Apply the `Module` util to each module to handle the export and provide the linkable configuration object.

- Most joiner config that does not have any special config are removed/cleaned up in favor of the autogenerated one or simpler one
- linkable are now available in all modules
- cleaned up the dependencies of the modules

FIXES CORE-2410
This commit is contained in:
Adrien de Peretti
2024-07-05 13:00:40 +00:00
committed by GitHub
parent eafa3560ae
commit b368251ca3
99 changed files with 1267 additions and 488 deletions
@@ -2,6 +2,7 @@ import { IPromotionModuleService } from "@medusajs/types"
import {
ApplicationMethodType,
CampaignBudgetType,
Module,
Modules,
PromotionType,
} from "@medusajs/utils"
@@ -12,6 +13,7 @@ import {
createDefaultPromotions,
createPromotions,
} from "../../../__fixtures__/promotion"
import { PromotionModuleService } from "@services"
jest.setTimeout(30000)
@@ -26,6 +28,49 @@ moduleIntegrationTestRunner({
await createCampaigns(MikroOrmWrapper.forkManager())
})
it(`should export the appropriate linkable configuration`, () => {
const linkable = Module(Modules.PROMOTION, {
service: PromotionModuleService,
}).linkable
expect(Object.keys(linkable)).toEqual([
"promotion",
"campaign",
"promotionRule",
])
Object.keys(linkable).forEach((key) => {
delete linkable[key].toJSON
})
expect(linkable).toEqual({
promotion: {
id: {
linkable: "promotion_id",
primaryKey: "id",
serviceName: "promotion",
field: "promotion",
},
},
campaign: {
id: {
linkable: "campaign_id",
primaryKey: "id",
serviceName: "promotion",
field: "campaign",
},
},
promotionRule: {
id: {
linkable: "promotion_rule_id",
primaryKey: "id",
serviceName: "promotion",
field: "promotionRule",
},
},
})
})
describe("create", () => {
it("should throw an error when required params are not passed", async () => {
const error = await createDefaultPromotion(service, {
+1 -4
View File
@@ -46,13 +46,10 @@
"typescript": "^5.1.6"
},
"dependencies": {
"@medusajs/modules-sdk": "^1.12.11",
"@medusajs/utils": "1.11.9",
"@mikro-orm/core": "5.9.7",
"@mikro-orm/migrations": "5.9.7",
"@mikro-orm/postgresql": "5.9.7",
"awilix": "^8.0.0",
"dotenv": "^16.4.5",
"knex": "2.4.2"
"awilix": "^8.0.0"
}
}
+3 -4
View File
@@ -1,7 +1,6 @@
import { ModuleExports } from "@medusajs/types"
import { Module, Modules } from "@medusajs/utils"
import { PromotionModuleService } from "@services"
const moduleDefinition: ModuleExports = {
export default Module(Modules.PROMOTION, {
service: PromotionModuleService,
}
export default moduleDefinition
})
@@ -3,9 +3,4 @@ import { Campaign, Promotion, PromotionRule } from "@models"
export const joinerConfig = defineJoinerConfig(Modules.PROMOTION, {
models: [Promotion, Campaign, PromotionRule],
linkableKeys: {
promotion_id: Promotion.name,
campaign_id: Campaign.name,
promotion_rule_id: PromotionRule.name,
},
})