fix(utils): define link alias + pluralize (#8070)

What:
 * Fix alias of models that have "compound names": eg "related_product"
 * `deleteCascade` option
 * Package to pluralize english words correctly
This commit is contained in:
Carlos R. L. Rodrigues
2024-07-10 19:37:14 -03:00
committed by GitHub
parent 256912f392
commit f460348280
6 changed files with 129 additions and 32 deletions

View File

@@ -1,8 +1,9 @@
import { medusaIntegrationTestRunner } from "medusa-test-utils"
import CurrencyModule from "@medusajs/currency"
import { MedusaModule } from "@medusajs/modules-sdk"
import RegionModule from "@medusajs/region"
import { defineLink } from "@medusajs/utils"
import { MedusaModule } from "@medusajs/modules-sdk"
jest.setTimeout(50000)
@@ -46,6 +47,7 @@ medusaIntegrationTestRunner({
args: {
methodSuffix: "Currencies",
},
deleteCascade: false,
},
{
serviceName: "region",
@@ -55,6 +57,94 @@ medusaIntegrationTestRunner({
args: {
methodSuffix: "Regions",
},
deleteCascade: false,
},
],
extends: [
{
serviceName: "currency",
fieldAlias: {
region: "region_link.region",
},
relationship: {
serviceName: "currencyCurrencyRegionRegionLink",
primaryKey: "currency_code",
foreignKey: "code",
alias: "region_link",
isList: false,
},
},
{
serviceName: "region",
fieldAlias: {
currency: "currency_link.currency",
},
relationship: {
serviceName: "currencyCurrencyRegionRegionLink",
primaryKey: "region_id",
foreignKey: "id",
alias: "currency_link",
isList: false,
},
},
],
})
})
it("should flag deleteCascade in the link definition", async () => {
const currencyLinks = CurrencyModule.linkable
const regionLinks = RegionModule.linkable
const link = defineLink(
{
linkable: currencyLinks.currency,
deleteCascade: true,
},
regionLinks.region
)
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",
},
deleteCascade: true,
},
{
serviceName: "region",
primaryKey: "id",
foreignKey: "region_id",
alias: "region",
args: {
methodSuffix: "Regions",
},
deleteCascade: false,
},
],
extends: [
@@ -128,6 +218,7 @@ medusaIntegrationTestRunner({
args: {
methodSuffix: "Currencies",
},
deleteCascade: false,
},
{
serviceName: "region",
@@ -137,6 +228,7 @@ medusaIntegrationTestRunner({
args: {
methodSuffix: "Regions",
},
deleteCascade: false,
},
],
extends: [