fix(medusa): Allow filtering by handle and title as arrays (#11472)

**What**
- Allows filtering products in the Store API with an array value for both `handle` and `title`.

RESOLVES SUP-893
This commit is contained in:
Kasper Fabricius Kristensen
2025-02-14 15:10:32 +01:00
committed by GitHub
parent 9f39cd19f8
commit 825b8ad260
3 changed files with 35 additions and 2 deletions

View File

@@ -0,0 +1,5 @@
---
"@medusajs/medusa": patch
---
fix(medusa): Allow filtering products by handle and title as either string or array of strings

View File

@@ -862,6 +862,34 @@ medusaIntegrationTestRunner({
])
})
it("returns a list of products with one of the given handles", async () => {
const response = await api.get(
`/store/products?handle[]=${product.handle}&handle[]=${product2.handle}`,
storeHeaders
)
expect(response.status).toEqual(200)
expect(response.data.count).toEqual(2)
expect(response.data.products).toEqual([
expect.objectContaining({ id: product.id }),
expect.objectContaining({ id: product2.id }),
])
})
it("returns a list of products with one of the given titles", async () => {
const response = await api.get(
`/store/products?title[]=${product.title}&title[]=${product2.title}`,
storeHeaders
)
expect(response.status).toEqual(200)
expect(response.data.count).toEqual(2)
expect(response.data.products).toEqual([
expect.objectContaining({ id: product.id }),
expect.objectContaining({ id: product2.id }),
])
})
// TODO: Not implemented yet
it.skip("returns gift card product", async () => {
const response = await api

View File

@@ -9,8 +9,8 @@ export const ProductStatusEnum = z.nativeEnum(ProductStatus)
export const StoreGetProductParamsDirectFields = z.object({
q: z.string().optional(),
id: z.union([z.string(), z.array(z.string())]).optional(),
title: z.string().optional(),
handle: z.string().optional(),
title: z.union([z.string(), z.array(z.string())]).optional(),
handle: z.union([z.string(), z.array(z.string())]).optional(),
is_giftcard: booleanString().optional(),
category_id: z.union([z.string(), z.array(z.string())]).optional(),
external_id: z.union([z.string(), z.array(z.string())]).optional(),