diff --git a/.changeset/silly-hats-unite.md b/.changeset/silly-hats-unite.md new file mode 100644 index 0000000000..e07572d704 --- /dev/null +++ b/.changeset/silly-hats-unite.md @@ -0,0 +1,5 @@ +--- +"@medusajs/test-utils": patch +--- + +inject configModule in moduleIntegrationTestRunner diff --git a/packages/medusa-test-utils/src/__fixtures__/test-module/index.ts b/packages/medusa-test-utils/src/__fixtures__/test-module/index.ts new file mode 100644 index 0000000000..173eb5d9c6 --- /dev/null +++ b/packages/medusa-test-utils/src/__fixtures__/test-module/index.ts @@ -0,0 +1,8 @@ +import { Module } from "@medusajs/framework/utils" +import TestService from "./service" + +export const TEST_MODULE = "test" + +export default Module(TEST_MODULE, { + service: TestService, +}) diff --git a/packages/medusa-test-utils/src/__fixtures__/test-module/service.ts b/packages/medusa-test-utils/src/__fixtures__/test-module/service.ts new file mode 100644 index 0000000000..1850d585a8 --- /dev/null +++ b/packages/medusa-test-utils/src/__fixtures__/test-module/service.ts @@ -0,0 +1,17 @@ +export default class TestService { + private dependencies: Record + private options: any + + constructor(dependencies: Record, options: any) { + this.dependencies = dependencies + this.options = options + } + + async getDependencies(): Promise> { + return this.dependencies + } + + async getOptions(): Promise { + return this.options + } +} diff --git a/packages/medusa-test-utils/src/__fixtures__/test-module/services/internal.ts b/packages/medusa-test-utils/src/__fixtures__/test-module/services/internal.ts new file mode 100644 index 0000000000..cce5c71c60 --- /dev/null +++ b/packages/medusa-test-utils/src/__fixtures__/test-module/services/internal.ts @@ -0,0 +1,11 @@ +export default class InternalService { + private dependencies: Record + + constructor(dependencies: Record) { + this.dependencies = dependencies + } + + async getDependencies(): Promise> { + return this.dependencies + } +} diff --git a/packages/medusa-test-utils/src/__tests__/module-test-runner.spec.ts b/packages/medusa-test-utils/src/__tests__/module-test-runner.spec.ts new file mode 100644 index 0000000000..4bcc3aaba9 --- /dev/null +++ b/packages/medusa-test-utils/src/__tests__/module-test-runner.spec.ts @@ -0,0 +1,53 @@ +import { ContainerRegistrationKeys, Modules } from "@medusajs/framework/utils" +import TestService from "../__fixtures__/test-module/service" +import InternalService from "../__fixtures__/test-module/services/internal" +import { moduleIntegrationTestRunner } from "../module-test-runner" + +moduleIntegrationTestRunner({ + moduleName: "test", + resolve: "./__fixtures__/test-module", + moduleOptions: { + option1: "value1", + }, + testSuite: ({ service }) => { + describe("Module Test Runner", () => { + it("should inject all basic dependencies on the main service", async () => { + const dependencies = await service.getDependencies() + expect(dependencies[ContainerRegistrationKeys.LOGGER]).toBeDefined() + expect( + dependencies[ContainerRegistrationKeys.PG_CONNECTION] + ).toBeDefined() + expect(dependencies[Modules.EVENT_BUS]).toBeDefined() + expect(dependencies["baseRepository"]).toBeDefined() + + const configModule = + dependencies[ContainerRegistrationKeys.CONFIG_MODULE] + expect(configModule).toBeDefined() + expect(configModule.modules["test"]?.options?.option1).toBe("value1") + }) + + it("should inject internal services on the main service", async () => { + const dependencies = await service.getDependencies() + expect(dependencies["internalService"]).toBeInstanceOf(InternalService) + }) + + it("should inject basic dependencies on internal services", async () => { + const internalService = (await service.getDependencies())[ + "internalService" + ] as InternalService + const dependencies = await internalService.getDependencies() + expect(dependencies[ContainerRegistrationKeys.LOGGER]).toBeDefined() + expect( + dependencies[ContainerRegistrationKeys.PG_CONNECTION] + ).toBeDefined() + expect(dependencies[Modules.EVENT_BUS]).toBeDefined() + expect(dependencies["baseRepository"]).toBeDefined() + + const configModule = + dependencies[ContainerRegistrationKeys.CONFIG_MODULE] + expect(configModule).toBeDefined() + expect(configModule.modules["test"]?.options?.option1).toBe("value1") + }) + }) + }, +}) diff --git a/packages/medusa-test-utils/src/module-test-runner.ts b/packages/medusa-test-utils/src/module-test-runner.ts index c831da477b..6007e4e1ca 100644 --- a/packages/medusa-test-utils/src/module-test-runner.ts +++ b/packages/medusa-test-utils/src/module-test-runner.ts @@ -1,3 +1,4 @@ +import { logger } from "@medusajs/framework/logger" import { ContainerRegistrationKeys, DmlEntity, @@ -8,7 +9,6 @@ import { normalizeImportPathWithSource, toMikroOrmEntities, } from "@medusajs/framework/utils" -import { logger } from "@medusajs/framework/logger" import * as fs from "fs" import { getDatabaseURL, getMikroOrmWrapper, TestDatabase } from "./database" import { initModules, InitModulesOptions } from "./init-modules" @@ -183,6 +183,9 @@ class ModuleTestRunner { [ContainerRegistrationKeys.PG_CONNECTION]: this.connection, [Modules.EVENT_BUS]: new MockEventBusService(), [ContainerRegistrationKeys.LOGGER]: console, + [ContainerRegistrationKeys.CONFIG_MODULE]: { + modules: this.modulesConfig, + }, ...this.injectedDependencies, }, modulesConfig: this.modulesConfig,