feat: Search by billing_address and shipping_address on Order model (#12814)
* feat: Search by billing_address and shipping_address on Order model **What** Added `.searchable()` method to the `shipping_address` and `billing_address` relationships in the `Order` model, enabling search functionality. **Why** Previously searching via `shipping_address` and `billing_address` was not supported, limiting the ability to find orders based on shipping or billing address information. Resolves SUP-1838 * Update integration tests to include billing_address and non-existing addresses.
This commit is contained in:
@@ -66,6 +66,69 @@ medusaIntegrationTestRunner({
|
||||
expect(response.data.orders).toHaveLength(0)
|
||||
expect(response.data.orders).toEqual([])
|
||||
})
|
||||
|
||||
it("should search orders by shipping address", async () => {
|
||||
let response = await api.get(`/admin/orders?fields=+shipping_address.address_1,+shipping_address.address_2`, adminHeaders)
|
||||
|
||||
expect(response.data.orders).toHaveLength(1)
|
||||
expect(response.data.orders).toEqual([
|
||||
expect.objectContaining({
|
||||
id: order.id,
|
||||
}),
|
||||
])
|
||||
|
||||
response = await api.get(`/admin/orders?fields=+shipping_address.address_1,+shipping_address.address_2&q=${order.shipping_address.address_1}`, adminHeaders)
|
||||
|
||||
expect(response.data.orders).toHaveLength(1)
|
||||
expect(response.data.orders).toEqual([
|
||||
expect.objectContaining({
|
||||
id: order.id,
|
||||
}),
|
||||
])
|
||||
|
||||
response = await api.get(`/admin/orders?q=${order.shipping_address.address_2}`, adminHeaders)
|
||||
|
||||
expect(response.data.orders).toHaveLength(1)
|
||||
expect(response.data.orders).toEqual([
|
||||
expect.objectContaining({
|
||||
id: order.id,
|
||||
}),
|
||||
])
|
||||
|
||||
response = await api.get(`/admin/orders?q=does-not-exist`, adminHeaders)
|
||||
|
||||
expect(response.data.orders).toHaveLength(0)
|
||||
expect(response.data.orders).toEqual([])
|
||||
})
|
||||
|
||||
it("should search orders by billing address", async () => {
|
||||
let response = await api.get(`/admin/orders?fields=+billing_address.address_1,+billing_address.address_2`, adminHeaders)
|
||||
|
||||
expect(response.data.orders).toHaveLength(1)
|
||||
expect(response.data.orders).toEqual([
|
||||
expect.objectContaining({
|
||||
id: order.id,
|
||||
}),
|
||||
])
|
||||
|
||||
response = await api.get(`/admin/orders?fields=+billing_address.address_1,+billing_address.address_2&q=${order.billing_address.address_1}`, adminHeaders)
|
||||
|
||||
expect(response.data.orders).toHaveLength(1)
|
||||
expect(response.data.orders).toEqual([
|
||||
expect.objectContaining({
|
||||
id: order.id,
|
||||
}),
|
||||
])
|
||||
|
||||
response = await api.get(`/admin/orders?q=${order.billing_address.address_2}`, adminHeaders)
|
||||
|
||||
expect(response.data.orders).toHaveLength(1)
|
||||
expect(response.data.orders).toEqual([
|
||||
expect.objectContaining({
|
||||
id: order.id,
|
||||
}),
|
||||
])
|
||||
})
|
||||
})
|
||||
|
||||
describe("POST /orders/:id", () => {
|
||||
|
||||
Reference in New Issue
Block a user