Feat(admin, medusa): add locations to claim and swap creation (#3522)

**What**
- Add location selection to claim and swap creation

Fixes CORE-1269
This commit is contained in:
Philip Korsholm
2023-03-20 15:05:37 +01:00
committed by GitHub
parent a8423b8acc
commit 55c5fba0d3
10 changed files with 224 additions and 6 deletions

View File

@@ -15,6 +15,7 @@ const {
simpleOrderFactory,
simpleRegionFactory,
simpleCartFactory,
simpleShippingOptionFactory,
} = require("../../../factories")
jest.setTimeout(30000)
@@ -62,9 +63,11 @@ describe("/store/carts", () => {
let variantId
let prodVarInventoryService
let inventoryService
let lineItemService
let stockLocationService
let salesChannelLocationService
let regionId
let orderId
beforeEach(async () => {
const api = useApi()
@@ -72,6 +75,7 @@ describe("/store/carts", () => {
prodVarInventoryService = appContainer.resolve(
"productVariantInventoryService"
)
lineItemService = appContainer.resolve("lineItemService")
inventoryService = appContainer.resolve("inventoryService")
stockLocationService = appContainer.resolve("stockLocationService")
salesChannelLocationService = appContainer.resolve(
@@ -115,7 +119,7 @@ describe("/store/carts", () => {
stocked_quantity: 100,
})
const { id: orderId } = await simpleOrderFactory(dbConnection, {
const { id: order_id } = await simpleOrderFactory(dbConnection, {
sales_channel: "test-channel",
line_items: [
{
@@ -124,6 +128,8 @@ describe("/store/carts", () => {
id: "line-item-id",
},
],
payment_status: "captured",
fulfillment_status: "fulfilled",
shipping_methods: [
{
shipping_option: {
@@ -133,9 +139,17 @@ describe("/store/carts", () => {
],
})
const orderRes = await api.get(`/admin/orders/${orderId}`, adminHeaders)
orderId = order_id
const orderRes = await api.get(`/admin/orders/${order_id}`, adminHeaders)
order = orderRes.data.order
await simpleShippingOptionFactory(dbConnection, {
id: "test-return-option",
is_return: true,
region_id: regionId,
price: 0,
})
const inventoryItem = await api.get(
`/admin/inventory-items/${invItem.id}`,
adminHeaders
@@ -150,6 +164,63 @@ describe("/store/carts", () => {
)
})
describe("swaps", () => {
it("adjusts reservations on successful swap", async () => {
const api = useApi()
const response = await api.post(
`/admin/orders/${orderId}/swaps`,
{
return_items: [
{
item_id: "line-item-id",
quantity: 1,
},
],
return_location_id: locationId,
},
adminHeaders
)
expect(response.status).toEqual(200)
expect(response.data.order.swaps[0].return_order.location_id).toEqual(
locationId
)
})
})
describe("claims", () => {
it("adjusts reservations on successful swap", async () => {
const api = useApi()
await lineItemService.update("line-item-id", {
fulfilled_quantity: 1,
})
const response = await api.post(
`/admin/orders/${orderId}/claims`,
{
type: "refund",
claim_items: [
{
item_id: "line-item-id",
quantity: 1,
reason: "production_failure",
},
],
return_shipping: { option_id: "test-return-option", price: 0 },
return_location_id: locationId,
},
adminHeaders
)
expect(response.status).toEqual(200)
expect(response.data.order.claims[0].return_order.location_id).toEqual(
locationId
)
})
})
describe("Fulfillments", () => {
const lineItemId = "line-item-id"

View File

@@ -3,6 +3,7 @@ import faker from "faker"
import { ShippingOption, ShippingOptionPriceType, ShippingProfile, ShippingProfileType, } from "@medusajs/medusa"
export type ShippingOptionFactoryData = {
id?: string
name?: string
region_id: string
is_return?: boolean
@@ -29,7 +30,7 @@ export const simpleShippingOptionFactory = async (
})
const created = manager.create(ShippingOption, {
id: `simple-so-${Math.random() * 1000}`,
id: data.id || `simple-so-${Math.random() * 1000}`,
name: data.name || "Test Method",
is_return: data.is_return ?? false,
region_id: data.region_id,