diff --git a/integration-tests/http/__tests__/order/admin/order.spec.ts b/integration-tests/http/__tests__/order/admin/order.spec.ts index 03b24a8448..62bca9e6a2 100644 --- a/integration-tests/http/__tests__/order/admin/order.spec.ts +++ b/integration-tests/http/__tests__/order/admin/order.spec.ts @@ -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", () => { diff --git a/packages/modules/order/src/models/order.ts b/packages/modules/order/src/models/order.ts index 455d52c44e..9843ae9cd3 100644 --- a/packages/modules/order/src/models/order.ts +++ b/packages/modules/order/src/models/order.ts @@ -27,12 +27,14 @@ const _Order = model mappedBy: undefined, foreignKey: true, }) + .searchable() .nullable(), billing_address: model .hasOne(() => OrderAddress, { mappedBy: undefined, foreignKey: true, }) + .searchable() .nullable(), summary: model.hasMany(() => OrderSummary, { mappedBy: "order",