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 { maybeApplyLinkFilter } from "../../utils/maybe-apply-link-filter"
|
||||
import { validateAndTransformQuery } from "../../utils/validate-query"
|
||||
import * as QueryConfig from "./query-config"
|
||||
import { AdminFulfillmentProvidersParams } from "./validators"
|
||||
@@ -12,6 +13,11 @@ export const adminFulfillmentProvidersRoutesMiddlewares: MiddlewareRoute[] = [
|
||||
AdminFulfillmentProvidersParams,
|
||||
QueryConfig.listTransformQueryConfig
|
||||
),
|
||||
maybeApplyLinkFilter({
|
||||
entryPoint: "location_fulfillment_provider",
|
||||
resourceId: "fulfillment_provider_id",
|
||||
filterableField: "stock_location_id",
|
||||
}),
|
||||
],
|
||||
},
|
||||
]
|
||||
|
||||
@@ -12,6 +12,7 @@ export const AdminFulfillmentProvidersParams = createFindParams({
|
||||
.merge(
|
||||
z.object({
|
||||
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,
|
||||
q: z.string().optional(),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user