From b242e22326ce74d5437d0da6863f22facbb5964c Mon Sep 17 00:00:00 2001 From: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com> Date: Wed, 1 Feb 2023 13:57:24 +0100 Subject: [PATCH] fix(medusa): Upsert addresses on Orders (#3153) --- .changeset/quick-rivers-hear.md | 5 ++ .../api/__tests__/admin/order/order.js | 78 +++++++++++++++++++ packages/medusa/src/services/order.ts | 12 ++- 3 files changed, 88 insertions(+), 7 deletions(-) create mode 100644 .changeset/quick-rivers-hear.md diff --git a/.changeset/quick-rivers-hear.md b/.changeset/quick-rivers-hear.md new file mode 100644 index 0000000000..a3912d2626 --- /dev/null +++ b/.changeset/quick-rivers-hear.md @@ -0,0 +1,5 @@ +--- +"@medusajs/medusa": patch +--- + +fix(medusa): Upsert addresses on Orders diff --git a/integration-tests/api/__tests__/admin/order/order.js b/integration-tests/api/__tests__/admin/order/order.js index 378d0b12bf..46bf91e4b7 100644 --- a/integration-tests/api/__tests__/admin/order/order.js +++ b/integration-tests/api/__tests__/admin/order/order.js @@ -127,6 +127,84 @@ describe("/admin/orders", () => { updated_at: expect.any(String), }) }) + + it("creates a billing address", async () => { + const api = useApi() + + await dbConnection.manager.query( + `update "order" set billing_address_id = null where id = 'test-order'` + ) + + const response = await api + .post( + "/admin/orders/test-order", + { + billing_address: { + first_name: "asafas", + last_name: "safas", + address_1: "asfsa", + city: "safas", + country_code: "us", + postal_code: "3243", + }, + }, + adminReqConfig + ) + .catch((err) => { + console.log(err.response.data) + }) + + expect(response.status).toEqual(200) + expect(response.data.order.billing_address).toEqual( + expect.objectContaining({ + first_name: "asafas", + last_name: "safas", + address_1: "asfsa", + city: "safas", + country_code: "us", + postal_code: "3243", + }) + ) + }) + + it("creates a shipping address", async () => { + const api = useApi() + + await dbConnection.manager.query( + `update "order" set shipping_address_id = null where id = 'test-order'` + ) + + const response = await api + .post( + "/admin/orders/test-order", + { + shipping_address: { + first_name: "asafas", + last_name: "safas", + address_1: "asfsa", + city: "safas", + country_code: "us", + postal_code: "3243", + }, + }, + adminReqConfig + ) + .catch((err) => { + console.log(err.response.data) + }) + + expect(response.status).toEqual(200) + expect(response.data.order.shipping_address).toEqual( + expect.objectContaining({ + first_name: "asafas", + last_name: "safas", + address_1: "asfsa", + city: "safas", + country_code: "us", + postal_code: "3243", + }) + ) + }) }) describe("GET /admin/orders", () => { diff --git a/packages/medusa/src/services/order.ts b/packages/medusa/src/services/order.ts index fc0a18e7c8..c884ecf09f 100644 --- a/packages/medusa/src/services/order.ts +++ b/packages/medusa/src/services/order.ts @@ -17,14 +17,14 @@ import { PaymentStatus, Return, Swap, - TrackingLink, + TrackingLink } from "../models" import { AddressRepository } from "../repositories/address" import { OrderRepository } from "../repositories/order" import { FindConfig, QuerySelector, Selector } from "../types/common" import { CreateFulfillmentOrder, - FulFillmentItemType, + FulFillmentItemType } from "../types/fulfillment" import { UpdateOrderInput } from "../types/orders" import { CreateShippingMethodDto } from "../types/shipping-options" @@ -48,7 +48,7 @@ import { ShippingOptionService, ShippingProfileService, TaxProviderService, - TotalsService, + TotalsService } from "." export const ORDER_CART_ALREADY_EXISTS_ERROR = "Order from cart already exists" @@ -903,8 +903,7 @@ class OrderService extends TransactionBaseService { await addrRepo.save({ ...addr, ...address }) } else { - const created = addrRepo.create({ ...address }) - await addrRepo.save(created) + order.billing_address = addrRepo.create({ ...address }) } } @@ -941,8 +940,7 @@ class OrderService extends TransactionBaseService { await addrRepo.save({ ...addr, ...address }) } else { - const created = addrRepo.create({ ...address }) - await addrRepo.save(created) + order.shipping_address = addrRepo.create({ ...address }) } }