From e1fdc54a3faf04ad2f32b0a492715309a9c94364 Mon Sep 17 00:00:00 2001 From: Adrien de Peretti Date: Mon, 23 Sep 2024 21:54:04 +0200 Subject: [PATCH] chore(medusa-test-utils): Add custom link loading before syncing (#9249) **What** Include custom links to be loaded from the medusa integration test runner --- .../src/medusa-test-runner-utils/use-db.ts | 30 ++++++++++++++++++- .../src/medusa-test-runner.ts | 8 ++--- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/packages/core/medusa-test-utils/src/medusa-test-runner-utils/use-db.ts b/packages/core/medusa-test-utils/src/medusa-test-runner-utils/use-db.ts index 3a6415cc5c0c6..f7edd8ac43c66 100644 --- a/packages/core/medusa-test-utils/src/medusa-test-runner-utils/use-db.ts +++ b/packages/core/medusa-test-utils/src/medusa-test-runner-utils/use-db.ts @@ -1,4 +1,7 @@ import type { MedusaAppLoader } from "@medusajs/framework" +import { join } from "path" +import { MedusaContainer } from "@medusajs/types" +import { ContainerRegistrationKeys } from "@medusajs/utils" /** * Initiates the database connection @@ -29,8 +32,14 @@ export async function migrateDatabase(appLoader: MedusaAppLoader) { /** * Syncs links with the databse */ -export async function syncLinks(appLoader: MedusaAppLoader) { +export async function syncLinks( + appLoader: MedusaAppLoader, + directory: string, + container: MedusaContainer +) { try { + await loadCustomLinks(directory, container) + const planner = await appLoader.getLinksExecutionPlanner() const actionPlan = await planner.createPlan() actionPlan.forEach((action) => { @@ -42,3 +51,22 @@ export async function syncLinks(appLoader: MedusaAppLoader) { throw err } } + +async function loadCustomLinks(directory: string, container: MedusaContainer) { + // TODO: move to framework once settle down + const { getResolvedPlugins } = await import( + // @ts-expect-error + "@medusajs/medusa/dist/loaders/helpers/resolve-plugins" + ) + + const configModule = container.resolve( + ContainerRegistrationKeys.CONFIG_MODULE + ) + const plugins = getResolvedPlugins(directory, configModule, true) || [] + const linksSourcePaths = plugins.map((plugin) => + join(plugin.resolve, "links") + ) + + const { LinkLoader } = await import("@medusajs/framework") + await new LinkLoader(linksSourcePaths).load() +} diff --git a/packages/core/medusa-test-utils/src/medusa-test-runner.ts b/packages/core/medusa-test-utils/src/medusa-test-runner.ts index b0e40c96e51a5..f038aa186d0b1 100644 --- a/packages/core/medusa-test-utils/src/medusa-test-runner.ts +++ b/packages/core/medusa-test-utils/src/medusa-test-runner.ts @@ -18,8 +18,8 @@ import { import { applyEnvVarsToProcess } from "./medusa-test-runner-utils/utils" const DB_HOST = process.env.DB_HOST -const DB_USERNAME = process.env.DB_USERNAME ?? '' -const DB_PASSWORD = process.env.DB_PASSWORD ?? '' +const DB_USERNAME = process.env.DB_USERNAME ?? "" +const DB_PASSWORD = process.env.DB_PASSWORD ?? "" const pgGodCredentials = { user: DB_USERNAME, @@ -179,7 +179,7 @@ export function medusaIntegrationTestRunner({ console.log(`Migrating database with core migrations and links ${dbName}`) await migrateDatabase(appLoader) - await syncLinks(appLoader) + await syncLinks(appLoader, cwd, container) await clearInstances() let containerRes: MedusaContainer = container @@ -215,7 +215,7 @@ export function medusaIntegrationTestRunner({ if (inApp) { console.log(`Migrating database with core migrations and links ${dbName}`) await migrateDatabase(appLoader) - await syncLinks(appLoader) + await syncLinks(appLoader, cwd, containerRes) } const axios = (await import("axios")).default.default