chore: pick the default store region (#7369)
* chore: pick the default store region * chore: fix test * chore: remove from defaults workflow and move to seeds * chore: undo payment provider change * chore: rearrange conditionals
This commit is contained in:
1 parent
3dbb256ddf
commit
43613f3f58
5 files changed
+69
-22
No files matched your search
@@ -0,0 +1,40 @@
|
|||||||
|
import { createDefaultsWorkflow } from "@medusajs/core-flows"
|
||||||
|
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
||||||
|
import {
|
||||||
|
IRegionModuleService,
|
||||||
|
IStoreModuleService,
|
||||||
|
MedusaContainer,
|
||||||
|
} from "@medusajs/types"
|
||||||
|
|
||||||
|
export const seedStorefrontDefaults = async (
|
||||||
|
container: MedusaContainer,
|
||||||
|
defaultCurrency: string = "usd"
|
||||||
|
) => {
|
||||||
|
const regionModule: IRegionModuleService = container.resolve(
|
||||||
|
ModuleRegistrationName.REGION
|
||||||
|
)
|
||||||
|
const storeModule: IStoreModuleService = container.resolve(
|
||||||
|
ModuleRegistrationName.STORE
|
||||||
|
)
|
||||||
|
|
||||||
|
// Creates the stores & default sales channel
|
||||||
|
await createDefaultsWorkflow(container).run()
|
||||||
|
|
||||||
|
const region = await regionModule.create({
|
||||||
|
name: "Default Region",
|
||||||
|
currency_code: defaultCurrency,
|
||||||
|
})
|
||||||
|
|
||||||
|
let [store] = await storeModule.list({})
|
||||||
|
|
||||||
|
store = await storeModule.update(store.id, {
|
||||||
|
default_region_id: region.id,
|
||||||
|
supported_currency_codes: [region.currency_code],
|
||||||
|
default_currency_code: region.currency_code,
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
region,
|
||||||
|
store,
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -32,6 +32,7 @@ import {
|
|||||||
adminHeaders,
|
adminHeaders,
|
||||||
createAdminUser,
|
createAdminUser,
|
||||||
} from "../../../../helpers/create-admin-user"
|
} from "../../../../helpers/create-admin-user"
|
||||||
|
import { seedStorefrontDefaults } from "../../../../helpers/seed-storefront-defaults"
|
||||||
|
|
||||||
jest.setTimeout(200000)
|
jest.setTimeout(200000)
|
||||||
|
|
||||||
@@ -89,11 +90,9 @@ medusaIntegrationTestRunner({
|
|||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await createAdminUser(dbConnection, adminHeaders, appContainer)
|
await createAdminUser(dbConnection, adminHeaders, appContainer)
|
||||||
|
|
||||||
// Here, so we don't have to create a region for each test
|
const { region } = await seedStorefrontDefaults(appContainer, "dkk")
|
||||||
defaultRegion = await regionModuleService.create({
|
|
||||||
name: "Default Region",
|
defaultRegion = region
|
||||||
currency_code: "dkk",
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
describe("CreateCartWorkflow", () => {
|
describe("CreateCartWorkflow", () => {
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import {
|
|||||||
} from "@medusajs/utils"
|
} from "@medusajs/utils"
|
||||||
import { medusaIntegrationTestRunner } from "medusa-test-utils"
|
import { medusaIntegrationTestRunner } from "medusa-test-utils"
|
||||||
import { createAdminUser } from "../../../../helpers/create-admin-user"
|
import { createAdminUser } from "../../../../helpers/create-admin-user"
|
||||||
|
import { seedStorefrontDefaults } from "../../../../helpers/seed-storefront-defaults"
|
||||||
import { createAuthenticatedCustomer } from "../../../helpers/create-authenticated-customer"
|
import { createAuthenticatedCustomer } from "../../../helpers/create-authenticated-customer"
|
||||||
import { setupTaxStructure } from "../../fixtures"
|
import { setupTaxStructure } from "../../fixtures"
|
||||||
|
|
||||||
@@ -57,6 +58,7 @@ medusaIntegrationTestRunner({
|
|||||||
|
|
||||||
let defaultRegion
|
let defaultRegion
|
||||||
let region
|
let region
|
||||||
|
let store
|
||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
appContainer = getContainer()
|
appContainer = getContainer()
|
||||||
@@ -83,11 +85,8 @@ medusaIntegrationTestRunner({
|
|||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await createAdminUser(dbConnection, adminHeaders, appContainer)
|
await createAdminUser(dbConnection, adminHeaders, appContainer)
|
||||||
|
|
||||||
// Here, so we don't have to create a region for each test
|
const { region } = await seedStorefrontDefaults(appContainer, "dkk")
|
||||||
defaultRegion = await regionModule.create({
|
defaultRegion = region
|
||||||
name: "Default Region",
|
|
||||||
currency_code: "dkk",
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
describe("POST /store/carts", () => {
|
describe("POST /store/carts", () => {
|
||||||
|
|||||||
@@ -86,6 +86,7 @@ module.exports = {
|
|||||||
[Modules.PRODUCT]: true,
|
[Modules.PRODUCT]: true,
|
||||||
[Modules.PRICING]: true,
|
[Modules.PRICING]: true,
|
||||||
[Modules.PROMOTION]: true,
|
[Modules.PROMOTION]: true,
|
||||||
|
[Modules.REGION]: true,
|
||||||
[Modules.CUSTOMER]: true,
|
[Modules.CUSTOMER]: true,
|
||||||
[Modules.SALES_CHANNEL]: true,
|
[Modules.SALES_CHANNEL]: true,
|
||||||
[Modules.CART]: true,
|
[Modules.CART]: true,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
||||||
import { IRegionModuleService } from "@medusajs/types"
|
import { IRegionModuleService, IStoreModuleService } from "@medusajs/types"
|
||||||
import { MedusaError } from "@medusajs/utils"
|
import { MedusaError } from "@medusajs/utils"
|
||||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||||
|
|
||||||
@@ -11,21 +11,29 @@ export const findOneOrAnyRegionStep = createStep(
|
|||||||
ModuleRegistrationName.REGION
|
ModuleRegistrationName.REGION
|
||||||
)
|
)
|
||||||
|
|
||||||
if (!data.regionId) {
|
const storeModule = container.resolve<IStoreModuleService>(
|
||||||
// TODO: Pick up the default store region if none is provided
|
ModuleRegistrationName.STORE
|
||||||
const regions = await service.list({})
|
)
|
||||||
|
|
||||||
if (!regions?.length) {
|
if (data.regionId) {
|
||||||
throw new MedusaError(
|
const region = await service.retrieve(data.regionId)
|
||||||
MedusaError.Types.INVALID_DATA,
|
|
||||||
"No regions found"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
return new StepResponse(regions[0])
|
return new StepResponse(region)
|
||||||
}
|
}
|
||||||
|
|
||||||
const region = await service.retrieve(data.regionId)
|
const [store] = await storeModule.list()
|
||||||
|
|
||||||
|
if (!store) {
|
||||||
|
throw new MedusaError(MedusaError.Types.NOT_FOUND, "Store not found")
|
||||||
|
}
|
||||||
|
|
||||||
|
const [region] = await service.list({
|
||||||
|
id: store.default_region_id,
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!region) {
|
||||||
|
throw new MedusaError(MedusaError.Types.INVALID_DATA, "No regions found")
|
||||||
|
}
|
||||||
|
|
||||||
return new StepResponse(region)
|
return new StepResponse(region)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user