diff --git a/integration-tests/api/__tests__/admin/customer-groups.js b/integration-tests/api/__tests__/admin/customer-groups.js index 768018d29c..e1b5af2777 100644 --- a/integration-tests/api/__tests__/admin/customer-groups.js +++ b/integration-tests/api/__tests__/admin/customer-groups.js @@ -120,6 +120,31 @@ describe("/admin/customer-groups", () => { name: "vip-customers", }) ) + expect(response.data.customerGroup).not.toHaveProperty("customers:") + }) + + it("gets customer group with `customers` prop", async () => { + const api = useApi() + + const id = "customer-group-1" + + const response = await api.get( + `/admin/customer-groups/${id}?expand=customers`, + { + headers: { + Authorization: "Bearer test_token", + }, + } + ) + + expect(response.status).toEqual(200) + expect(response.data.customerGroup).toEqual( + expect.objectContaining({ + id: "customer-group-1", + name: "vip-customers", + }) + ) + expect(response.data.customerGroup.customers).toEqual([]) }) it("throws error when a customer group doesn't exist", async () => { diff --git a/packages/medusa/src/api/routes/admin/customer-groups/get-customer-group.ts b/packages/medusa/src/api/routes/admin/customer-groups/get-customer-group.ts index c0e86e3d50..d97442c2a7 100644 --- a/packages/medusa/src/api/routes/admin/customer-groups/get-customer-group.ts +++ b/packages/medusa/src/api/routes/admin/customer-groups/get-customer-group.ts @@ -1,4 +1,7 @@ import { CustomerGroupService } from "../../../../services" +import { FindParams } from "../../../../types/common" +import { validator } from "../../../../utils/validator" +import { defaultAdminCustomerGroupsRelations } from "." /** * @oas [get] /customer-group/{id} @@ -22,11 +25,25 @@ import { CustomerGroupService } from "../../../../services" */ export default async (req, res) => { const { id } = req.params + + const validated = await validator(FindParams, req.query) + const customerGroupService: CustomerGroupService = req.scope.resolve( "customerGroupService" ) - const customerGroup = await customerGroupService.retrieve(id) + let expandFields: string[] = [] + if (validated.expand) { + expandFields = validated.expand.split(",") + } + + const findConfig = { + relations: expandFields.length + ? expandFields + : defaultAdminCustomerGroupsRelations, + } + + const customerGroup = await customerGroupService.retrieve(id, findConfig) res.json({ customerGroup }) } diff --git a/packages/medusa/src/api/routes/admin/customer-groups/index.ts b/packages/medusa/src/api/routes/admin/customer-groups/index.ts index 2facc6ff0f..983a90a236 100644 --- a/packages/medusa/src/api/routes/admin/customer-groups/index.ts +++ b/packages/medusa/src/api/routes/admin/customer-groups/index.ts @@ -23,4 +23,6 @@ export type AdminCustomerGroupsListRes = PaginatedResponse & { customer_groups: CustomerGroup[] } +export const defaultAdminCustomerGroupsRelations = [] + export * from "./create-customer-group"