feat(medusa): add stock_location_id filter to providers api (#8319)
what: - adds a filter to fulfillment providers API to scope by stock locations RESOLVES CC-260
This commit is contained in:
@@ -0,0 +1,72 @@
|
|||||||
|
import { medusaIntegrationTestRunner } from "medusa-test-utils"
|
||||||
|
import {
|
||||||
|
adminHeaders,
|
||||||
|
createAdminUser,
|
||||||
|
} from "../../../../helpers/create-admin-user"
|
||||||
|
|
||||||
|
jest.setTimeout(50000)
|
||||||
|
|
||||||
|
medusaIntegrationTestRunner({
|
||||||
|
testSuite: ({ dbConnection, getContainer, api }) => {
|
||||||
|
describe("Admin: Fulfillment Provider API", () => {
|
||||||
|
let location
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await createAdminUser(dbConnection, adminHeaders, getContainer())
|
||||||
|
|
||||||
|
location = (
|
||||||
|
await api.post(
|
||||||
|
`/admin/stock-locations`,
|
||||||
|
{ name: "Test location" },
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
).data.stock_location
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("GET /admin/fulfillment-providers", () => {
|
||||||
|
it("should list all fulfillment providers successfully", async () => {
|
||||||
|
const response = await api.get(
|
||||||
|
`/admin/fulfillment-providers`,
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(response.status).toEqual(200)
|
||||||
|
expect(response.data.fulfillment_providers).toEqual([
|
||||||
|
expect.objectContaining({
|
||||||
|
id: "manual_test-provider",
|
||||||
|
is_enabled: true,
|
||||||
|
}),
|
||||||
|
])
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should list all fulfillment providers scoped by stock location", async () => {
|
||||||
|
let response = await api.get(
|
||||||
|
`/admin/fulfillment-providers?stock_location_id=${location.id}`,
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(response.status).toEqual(200)
|
||||||
|
expect(response.data.fulfillment_providers).toEqual([])
|
||||||
|
|
||||||
|
await api.post(
|
||||||
|
`/admin/stock-locations/${location.id}/fulfillment-providers`,
|
||||||
|
{ add: ["manual_test-provider"] },
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
|
||||||
|
response = await api.get(
|
||||||
|
`/admin/fulfillment-providers?stock_location_id=${location.id}`,
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(response.data.fulfillment_providers).toEqual([
|
||||||
|
expect.objectContaining({
|
||||||
|
id: "manual_test-provider",
|
||||||
|
is_enabled: true,
|
||||||
|
}),
|
||||||
|
])
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
import { MiddlewareRoute } from "../../../types/middlewares"
|
import { MiddlewareRoute } from "../../../types/middlewares"
|
||||||
|
import { maybeApplyLinkFilter } from "../../utils/maybe-apply-link-filter"
|
||||||
import { validateAndTransformQuery } from "../../utils/validate-query"
|
import { validateAndTransformQuery } from "../../utils/validate-query"
|
||||||
import * as QueryConfig from "./query-config"
|
import * as QueryConfig from "./query-config"
|
||||||
import { AdminFulfillmentProvidersParams } from "./validators"
|
import { AdminFulfillmentProvidersParams } from "./validators"
|
||||||
@@ -12,6 +13,11 @@ export const adminFulfillmentProvidersRoutesMiddlewares: MiddlewareRoute[] = [
|
|||||||
AdminFulfillmentProvidersParams,
|
AdminFulfillmentProvidersParams,
|
||||||
QueryConfig.listTransformQueryConfig
|
QueryConfig.listTransformQueryConfig
|
||||||
),
|
),
|
||||||
|
maybeApplyLinkFilter({
|
||||||
|
entryPoint: "location_fulfillment_provider",
|
||||||
|
resourceId: "fulfillment_provider_id",
|
||||||
|
filterableField: "stock_location_id",
|
||||||
|
}),
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ export const AdminFulfillmentProvidersParams = createFindParams({
|
|||||||
.merge(
|
.merge(
|
||||||
z.object({
|
z.object({
|
||||||
id: z.union([z.string(), z.array(z.string())]).optional(),
|
id: z.union([z.string(), z.array(z.string())]).optional(),
|
||||||
|
stock_location_id: z.union([z.string(), z.array(z.string())]).optional(),
|
||||||
is_enabled: OptionalBooleanValidator,
|
is_enabled: OptionalBooleanValidator,
|
||||||
q: z.string().optional(),
|
q: z.string().optional(),
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user