fix(medusa): keep country_code when partially updating cart addresses (#2683)
**What** - Fixes a bug where `country_code` was dropped when partially updating a shipping or billing address on a cart.
This commit is contained in:
1 parent
d68e81fb3d
commit
33aa3edb80
5 files changed
+51
-10
No files matched your search
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@medusajs/medusa": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
fix: Fixes a bug where `country_code` was dropped when partially updating a shipping and/or billing address on a cart.
|
||||||
@@ -1642,6 +1642,44 @@ describe("/store/carts", () => {
|
|||||||
expect(response.status).toEqual(200)
|
expect(response.status).toEqual(200)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("partially updates shipping and billing address while retaining the addresses country codes", async () => {
|
||||||
|
const api = useApi()
|
||||||
|
|
||||||
|
// Partially update the shipping address
|
||||||
|
await api
|
||||||
|
.post("/store/carts/test-cart", {
|
||||||
|
shipping_address: {
|
||||||
|
last_name: "james",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.catch((error) => console.log(error))
|
||||||
|
|
||||||
|
// Partially update the billing address
|
||||||
|
const response = await api.post("/store/carts/test-cart", {
|
||||||
|
billing_address: {
|
||||||
|
first_name: "bruce",
|
||||||
|
last_name: "banner",
|
||||||
|
country_code: "us",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(response.status).toEqual(200)
|
||||||
|
expect(response.data.cart).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
shipping_address: expect.objectContaining({
|
||||||
|
first_name: "lebron",
|
||||||
|
last_name: "james",
|
||||||
|
country_code: "us",
|
||||||
|
}),
|
||||||
|
billing_address: expect.objectContaining({
|
||||||
|
first_name: "bruce",
|
||||||
|
last_name: "banner",
|
||||||
|
country_code: "us",
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
it("adds free shipping to cart then removes it again", async () => {
|
it("adds free shipping to cart then removes it again", async () => {
|
||||||
const api = useApi()
|
const api = useApi()
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -2415,7 +2415,7 @@ Object {
|
|||||||
"address_2": null,
|
"address_2": null,
|
||||||
"city": "ville la something",
|
"city": "ville la something",
|
||||||
"company": null,
|
"company": null,
|
||||||
"country_code": null,
|
"country_code": "us",
|
||||||
"created_at": Any<Date>,
|
"created_at": Any<Date>,
|
||||||
"customer_id": null,
|
"customer_id": null,
|
||||||
"deleted_at": null,
|
"deleted_at": null,
|
||||||
@@ -2476,4 +2476,4 @@ Object {
|
|||||||
"tracking_links": Array [],
|
"tracking_links": Array [],
|
||||||
"tracking_number": "",
|
"tracking_number": "",
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
import _ from "lodash"
|
import _ from "lodash"
|
||||||
import { MedusaError } from "medusa-core-utils"
|
import { MedusaError } from "medusa-core-utils"
|
||||||
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
||||||
|
import { FlagRouter } from "../../utils/flag-router"
|
||||||
import CartService from "../cart"
|
import CartService from "../cart"
|
||||||
import { InventoryServiceMock } from "../__mocks__/inventory"
|
import { InventoryServiceMock } from "../__mocks__/inventory"
|
||||||
import { LineItemAdjustmentServiceMock } from "../__mocks__/line-item-adjustment"
|
import { LineItemAdjustmentServiceMock } from "../__mocks__/line-item-adjustment"
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
|
||||||
import { taxProviderServiceMock } from "../__mocks__/tax-provider"
|
|
||||||
import { newTotalsServiceMock } from "../__mocks__/new-totals"
|
import { newTotalsServiceMock } from "../__mocks__/new-totals"
|
||||||
|
import { taxProviderServiceMock } from "../__mocks__/tax-provider"
|
||||||
|
|
||||||
const eventBusService = {
|
const eventBusService = {
|
||||||
emit: jest.fn(),
|
emit: jest.fn(),
|
||||||
@@ -1100,7 +1100,7 @@ describe("CartService", () => {
|
|||||||
last_name: "James",
|
last_name: "James",
|
||||||
address_1: "24 Dunks Drive",
|
address_1: "24 Dunks Drive",
|
||||||
city: "Los Angeles",
|
city: "Los Angeles",
|
||||||
country_code: "US",
|
country_code: "us",
|
||||||
province: "CA",
|
province: "CA",
|
||||||
postal_code: "93011",
|
postal_code: "93011",
|
||||||
phone: "+1 (222) 333 4444",
|
phone: "+1 (222) 333 4444",
|
||||||
|
|||||||
@@ -1238,8 +1238,6 @@ class CartService extends TransactionBaseService {
|
|||||||
address = addressOrId as Address
|
address = addressOrId as Address
|
||||||
}
|
}
|
||||||
|
|
||||||
address.country_code = address.country_code?.toLowerCase() ?? null
|
|
||||||
|
|
||||||
if (address.id) {
|
if (address.id) {
|
||||||
cart.billing_address = await addrRepo.save(address)
|
cart.billing_address = await addrRepo.save(address)
|
||||||
} else {
|
} else {
|
||||||
@@ -1284,11 +1282,11 @@ class CartService extends TransactionBaseService {
|
|||||||
address = addressOrId as Address
|
address = addressOrId as Address
|
||||||
}
|
}
|
||||||
|
|
||||||
address.country_code = address.country_code?.toLowerCase() ?? null
|
|
||||||
|
|
||||||
if (
|
if (
|
||||||
address.country_code &&
|
address.country_code &&
|
||||||
!cart.region.countries.find(({ iso_2 }) => address.country_code === iso_2)
|
!cart.region.countries.find(
|
||||||
|
({ iso_2 }) => address.country_code?.toLowerCase() === iso_2
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
throw new MedusaError(
|
throw new MedusaError(
|
||||||
MedusaError.Types.INVALID_DATA,
|
MedusaError.Types.INVALID_DATA,
|
||||||
|
|||||||
Reference in new issue
Block a user