From 10848c8bf234a78f6ebc0a4149b42e21bab31ef9 Mon Sep 17 00:00:00 2001 From: Adrien de Peretti Date: Mon, 8 Jul 2024 16:44:03 +0200 Subject: [PATCH] chore: rename source to linkable in defineLink options (#8016) * chore: rename source to linkable in defineLink options * rm unused const --- .../link-modules/define-link.spec.ts | 90 +++++++++++++++++-- .../core/utils/src/modules-sdk/define-link.ts | 16 ++-- 2 files changed, 90 insertions(+), 16 deletions(-) diff --git a/integration-tests/modules/__tests__/link-modules/define-link.spec.ts b/integration-tests/modules/__tests__/link-modules/define-link.spec.ts index b1ff00e21d..fc87b8c4c0 100644 --- a/integration-tests/modules/__tests__/link-modules/define-link.spec.ts +++ b/integration-tests/modules/__tests__/link-modules/define-link.spec.ts @@ -9,14 +9,6 @@ jest.setTimeout(50000) medusaIntegrationTestRunner({ testSuite: ({ getContainer }) => { describe("defineLink", () => { - let appContainer - let remoteQuery - - beforeAll(async () => { - appContainer = getContainer() - remoteQuery = appContainer.resolve("remoteQuery") - }) - it("should generate a proper link definition", async () => { const currencyLinks = CurrencyModule.linkable const regionLinks = RegionModule.linkable @@ -95,6 +87,88 @@ medusaIntegrationTestRunner({ ], }) }) + + it("should generate a proper link definition passing an object as option", async () => { + const currencyLinks = CurrencyModule.linkable + const regionLinks = RegionModule.linkable + + const link = defineLink(currencyLinks.currency, { + linkable: regionLinks.region, + isList: true, + }) + + const linkDefinition = MedusaModule.getCustomLinks() + .map((linkDefinition: any) => { + const definition = linkDefinition( + MedusaModule.getAllJoinerConfigs() + ) + return definition.serviceName === link.serviceName && definition + }) + .filter(Boolean)[0] + + expect(link.serviceName).toEqual("currencyCurrencyRegionRegionLink") + expect(linkDefinition).toEqual({ + serviceName: "currencyCurrencyRegionRegionLink", + isLink: true, + alias: [ + { + name: ["currency_region"], + args: { + entity: "LinkCurrencyCurrencyRegionRegion", + }, + }, + ], + primaryKeys: ["id", "currency_code", "region_id"], + relationships: [ + { + serviceName: "currency", + primaryKey: "code", + foreignKey: "currency_code", + alias: "currency", + args: { + methodSuffix: "Currencies", + }, + }, + { + serviceName: "region", + primaryKey: "id", + foreignKey: "region_id", + alias: "region", + args: { + methodSuffix: "Regions", + }, + }, + ], + extends: [ + { + serviceName: "currency", + fieldAlias: { + regions: "region_link.region", + }, + relationship: { + serviceName: "currencyCurrencyRegionRegionLink", + primaryKey: "currency_code", + foreignKey: "code", + alias: "region_link", + isList: true, + }, + }, + { + serviceName: "region", + fieldAlias: { + currency: "currency_link.currency", + }, + relationship: { + serviceName: "currencyCurrencyRegionRegionLink", + primaryKey: "region_id", + foreignKey: "id", + alias: "currency_link", + isList: false, + }, + }, + ], + }) + }) }) }, }) diff --git a/packages/core/utils/src/modules-sdk/define-link.ts b/packages/core/utils/src/modules-sdk/define-link.ts index bb287c6015..549f8fcf39 100644 --- a/packages/core/utils/src/modules-sdk/define-link.ts +++ b/packages/core/utils/src/modules-sdk/define-link.ts @@ -23,7 +23,7 @@ type InputToJson = { type CombinedSource = Record & InputToJson type InputOptions = { - source: CombinedSource | InputSource + linkable: CombinedSource | InputSource isList?: boolean } @@ -52,7 +52,7 @@ type ModuleLinkableKeyConfig = { } function isInputOptions(input: any): input is InputOptions { - return isObject(input) && "source" in input + return isObject(input) && "linkable" in input } function isInputSource(input: any): input is InputSource { @@ -82,9 +82,9 @@ export function defineLink( module: source.serviceName, } } else if (isInputOptions(leftService)) { - const source = isToJSON(leftService.source) - ? leftService.source.toJSON() - : leftService.source + const source = isToJSON(leftService.linkable) + ? leftService.linkable.toJSON() + : leftService.linkable serviceAObj = { key: source.linkable, @@ -108,9 +108,9 @@ export function defineLink( module: source.serviceName, } } else if (isInputOptions(rightService)) { - const source = isToJSON(rightService.source) - ? rightService.source.toJSON() - : rightService.source + const source = isToJSON(rightService.linkable) + ? rightService.linkable.toJSON() + : rightService.linkable serviceBObj = { key: source.linkable,