From 61b0b2f3aa1d54d539b216a99032549485136a82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frane=20Poli=C4=87?= <16856471+fPolic@users.noreply.github.com> Date: Thu, 9 Feb 2023 17:52:04 +0100 Subject: [PATCH] fix(medusa): Pass query transformer config in storefront controllers (#3219) --- .changeset/green-socks-attack.md | 5 +++ .../api/__tests__/store/orders.js | 36 +++++++++++-------- .../src/api/routes/store/orders/get-order.ts | 5 +-- .../api/routes/store/orders/lookup-order.ts | 5 +-- .../store/products/__tests__/get-product.js | 4 ++- .../api/routes/store/products/get-product.ts | 4 +-- 6 files changed, 32 insertions(+), 27 deletions(-) create mode 100644 .changeset/green-socks-attack.md diff --git a/.changeset/green-socks-attack.md b/.changeset/green-socks-attack.md new file mode 100644 index 0000000000..ad34d9ef8b --- /dev/null +++ b/.changeset/green-socks-attack.md @@ -0,0 +1,5 @@ +--- +"@medusajs/medusa": patch +--- + +fix(medusa): use transformer middleware config when querying store products and store orders endpoints diff --git a/integration-tests/api/__tests__/store/orders.js b/integration-tests/api/__tests__/store/orders.js index 2e3a792788..686d6ab657 100644 --- a/integration-tests/api/__tests__/store/orders.js +++ b/integration-tests/api/__tests__/store/orders.js @@ -158,18 +158,14 @@ describe("/store/carts", () => { it("lookup order response contains only fields defined with `fields` param", async () => { const api = useApi() - const response = await api - .get( - "/store/orders?display_id=111&email=test@email.com&fields=status,object" - ) - .catch((err) => { - return err.response - }) + const response = await api.get( + "/store/orders?display_id=111&email=test@email.com&fields=status,email" + ) expect(Object.keys(response.data.order)).toEqual([ // fields "status", - "object", + "email", // relations "shipping_address", "fulfillments", @@ -185,17 +181,12 @@ describe("/store/carts", () => { it("get order response contains only fields defined with `fields` param", async () => { const api = useApi() - const response = await api - .get("/store/orders/order_test?fields=status,object") - .catch((err) => { - return err.response - }) + const response = await api.get("/store/orders/order_test?fields=status") expect(Object.keys(response.data.order)).toEqual([ // fields "status", - "object", - // relations + // default relations "shipping_address", "fulfillments", "items", @@ -207,6 +198,21 @@ describe("/store/carts", () => { ]) }) + it("get order response contains only fields defined with `fields` and `expand` param", async () => { + const api = useApi() + + const response = await api.get( + "/store/orders/order_test?fields=status&expand=billing_address" + ) + + expect(Object.keys(response.data.order)).toEqual([ + // fields + "status", + // selected relations + "billing_address", + ]) + }) + it("looks up order", async () => { const api = useApi() diff --git a/packages/medusa/src/api/routes/store/orders/get-order.ts b/packages/medusa/src/api/routes/store/orders/get-order.ts index 8f0d17ca38..671584a0fc 100644 --- a/packages/medusa/src/api/routes/store/orders/get-order.ts +++ b/packages/medusa/src/api/routes/store/orders/get-order.ts @@ -53,10 +53,7 @@ export default async (req, res) => { const { id } = req.params const orderService: OrderService = req.scope.resolve("orderService") - const order = await orderService.retrieveWithTotals(id, { - select: defaultStoreOrdersFields, - relations: defaultStoreOrdersRelations, - }) + const order = await orderService.retrieveWithTotals(id, req.retrieveConfig) res.json({ order: cleanResponseData(order, req.allowedProperties || []), diff --git a/packages/medusa/src/api/routes/store/orders/lookup-order.ts b/packages/medusa/src/api/routes/store/orders/lookup-order.ts index 7b19151c84..1ee96f0948 100644 --- a/packages/medusa/src/api/routes/store/orders/lookup-order.ts +++ b/packages/medusa/src/api/routes/store/orders/lookup-order.ts @@ -92,10 +92,7 @@ export default async (req, res) => { display_id: validated.display_id, email: validated.email, }, - { - select: defaultStoreOrdersFields, - relations: defaultStoreOrdersRelations, - } + req.listConfig ) if (orders.length !== 1) { diff --git a/packages/medusa/src/api/routes/store/products/__tests__/get-product.js b/packages/medusa/src/api/routes/store/products/__tests__/get-product.js index e440993945..408a56d5d0 100644 --- a/packages/medusa/src/api/routes/store/products/__tests__/get-product.js +++ b/packages/medusa/src/api/routes/store/products/__tests__/get-product.js @@ -1,5 +1,5 @@ import { IdMap } from "medusa-test-utils" -import { defaultStoreProductsRelations } from ".." +import { defaultStoreProductsFields, defaultStoreProductsRelations } from ".." import { request } from "../../../../../helpers/test-request" import { ProductServiceMock } from "../../../../../services/__mocks__/product" @@ -22,6 +22,7 @@ describe("Get product by id", () => { expect(ProductServiceMock.retrieve).toHaveBeenCalledWith( IdMap.getId("product1"), { + select: defaultStoreProductsFields, relations: defaultStoreProductsRelations, } ) @@ -54,6 +55,7 @@ describe("Get product by id", () => { expect(ProductServiceMock.retrieve).toHaveBeenCalledWith( IdMap.getId("variantsWithPrices"), { + select: defaultStoreProductsFields, relations: defaultStoreProductsRelations, } ) diff --git a/packages/medusa/src/api/routes/store/products/get-product.ts b/packages/medusa/src/api/routes/store/products/get-product.ts index b29dd6873d..a1dd467e6d 100644 --- a/packages/medusa/src/api/routes/store/products/get-product.ts +++ b/packages/medusa/src/api/routes/store/products/get-product.ts @@ -84,9 +84,7 @@ export default async (req, res) => { const pricingService: PricingService = req.scope.resolve("pricingService") const cartService: CartService = req.scope.resolve("cartService") const regionService: RegionService = req.scope.resolve("regionService") - const rawProduct = await productService.retrieve(id, { - relations: defaultStoreProductsRelations, - }) + const rawProduct = await productService.retrieve(id, req.retrieveConfig) let sales_channel_id = validated.sales_channel_id const featureFlagRouter: FlagRouter = req.scope.resolve("featureFlagRouter")