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:
Riqwan Thamir
2024-07-29 10:30:53 +02:00
committed by GitHub
parent d127abbcda
commit 5fc5f2c35f
3 changed files with 79 additions and 0 deletions

View File

@@ -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,
}),
])
})
})
})
},
})

View File

@@ -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",
}),
],
},
]

View File

@@ -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(),
})