fix(medusa): order retrieval missing relations + allow for expand (#2267)

**What**

Fix missing relation on the order retrieval endpoint as well as allow the expand fields

FIXES CORE-578
This commit is contained in:
Adrien de Peretti
2022-09-29 12:04:39 +02:00
committed by GitHub
parent 9a532de7bd
commit a2bb504e6e
5 changed files with 69 additions and 82 deletions

View File

@@ -236,7 +236,9 @@ describe("/admin/orders", () => {
const manager = dbConnection.manager
await manager.query(
`UPDATE "product_variant" SET manage_inventory=false WHERE id = 'test-variant'`
`UPDATE "product_variant"
SET manage_inventory= false
WHERE id = 'test-variant'`
)
const initialInventoryRes = await api.get("/store/variants/test-variant")
@@ -1346,7 +1348,9 @@ describe("/admin/orders", () => {
const manager = dbConnection.manager
await manager.query(
`UPDATE "product_variant" SET manage_inventory=false WHERE id = 'test-variant'`
`UPDATE "product_variant"
SET manage_inventory= false
WHERE id = 'test-variant'`
)
const returned = await api.post(
@@ -1955,7 +1959,7 @@ describe("/admin/orders", () => {
}
)
// find item to test returned quantiy for
// find item to test returned quantity for
const toTest = returnedOrderSecond.data.order.items.find(
(i) => i.id === "test-item-many"
)
@@ -2057,6 +2061,54 @@ describe("/admin/orders", () => {
expect(received.status).toEqual(200)
})
it("creates a swap with return and return shipping", async () => {
const api = useApi()
const response = await api.post(
"/admin/orders/test-order/swaps",
{
return_items: [
{
item_id: "test-item",
quantity: 1,
},
],
return_shipping: { option_id: "test-return-option", price: 0 },
},
{
headers: {
authorization: "Bearer test_token",
},
}
)
expect(response.status).toEqual(200)
const swap = response.data.order.swaps[0]
expect(swap.return_order.items).toHaveLength(1)
expect(swap.return_order.items[0]).toEqual(
expect.objectContaining({
item_id: "test-item",
quantity: 1,
})
)
expect(swap.return_order.shipping_method).toEqual(
expect.objectContaining({
price: 0,
shipping_option_id: "test-return-option",
})
)
expect(swap.return_order.shipping_method.tax_lines).toHaveLength(1)
expect(swap.return_order.shipping_method.tax_lines[0]).toEqual(
expect.objectContaining({
rate: 0,
name: "default",
})
)
})
it("creates a return on a swap", async () => {
const api = useApi()

View File

@@ -1,77 +1,7 @@
import { IdMap } from "medusa-test-utils"
import { request } from "../../../../../helpers/test-request"
import { OrderServiceMock } from "../../../../../services/__mocks__/order"
const defaultRelations = [
"customer",
"billing_address",
"shipping_address",
"discounts",
"discounts.rule",
"shipping_methods",
"payments",
"fulfillments",
"fulfillments.tracking_links",
"fulfillments.items",
"returns",
"returns.shipping_method",
"returns.shipping_method.tax_lines",
"returns.items",
"returns.items.reason",
"gift_cards",
"gift_card_transactions",
"claims",
"claims.return_order",
"claims.return_order.shipping_method",
"claims.shipping_methods",
"claims.shipping_address",
"claims.additional_items",
"claims.fulfillments",
"claims.fulfillments.tracking_links",
"claims.claim_items",
"claims.claim_items.item",
"claims.claim_items.images",
"swaps",
"swaps.return_order",
"swaps.payment",
"swaps.shipping_methods",
"swaps.shipping_address",
"swaps.additional_items",
"swaps.fulfillments",
"swaps.fulfillments.tracking_links",
]
const defaultFields = [
"id",
"status",
"fulfillment_status",
"payment_status",
"display_id",
"cart_id",
"draft_order_id",
"customer_id",
"email",
"region_id",
"currency_code",
"tax_rate",
"canceled_at",
"created_at",
"updated_at",
"metadata",
"items.refundable",
"swaps.additional_items.refundable",
"claims.additional_items.refundable",
"shipping_total",
"discount_total",
"tax_total",
"refunded_total",
"gift_card_total",
"subtotal",
"total",
"paid_total",
"refundable_amount",
"no_notification",
]
import { defaultAdminOrdersFields, defaultAdminOrdersRelations } from "../index"
describe("GET /admin/orders", () => {
describe("successfully gets an order", () => {
@@ -100,8 +30,8 @@ describe("GET /admin/orders", () => {
expect(OrderServiceMock.retrieve).toHaveBeenCalledWith(
IdMap.getId("test-order"),
{
select: defaultFields,
relations: defaultRelations,
select: defaultAdminOrdersFields,
relations: defaultAdminOrdersRelations,
}
)
})

View File

@@ -3,7 +3,7 @@ import "reflect-metadata"
import { Order } from "../../../.."
import {
DeleteResponse,
EmptyQueryParams,
FindParams,
PaginatedResponse,
} from "../../../../types/common"
import middlewares, { transformQuery } from "../../../middlewares"
@@ -45,7 +45,7 @@ export default (app, featureFlagRouter: FlagRouter) => {
*/
route.get(
"/:id",
transformQuery(EmptyQueryParams, {
transformQuery(FindParams, {
defaultRelations: relations,
defaultFields: defaultAdminOrdersFields,
allowedFields: allowedAdminOrdersFields,
@@ -260,6 +260,7 @@ export const defaultAdminOrdersRelations = [
"claims",
"claims.return_order",
"claims.return_order.shipping_method",
"claims.return_order.shipping_method.tax_lines",
"claims.shipping_methods",
"claims.shipping_address",
"claims.additional_items",
@@ -271,8 +272,11 @@ export const defaultAdminOrdersRelations = [
// "claims.claim_items.tags",
"swaps",
"swaps.return_order",
"swaps.return_order.shipping_method",
"swaps.return_order.shipping_method.tax_lines",
"swaps.payment",
"swaps.shipping_methods",
"swaps.shipping_methods.tax_lines",
"swaps.shipping_address",
"swaps.additional_items",
"swaps.fulfillments",

View File

@@ -1,7 +1,7 @@
import { Router } from "express"
import "reflect-metadata"
import { Product, ProductTag, ProductType } from "../../../.."
import { EmptyQueryParams, PaginatedResponse } from "../../../../types/common"
import { FindParams, PaginatedResponse } from "../../../../types/common"
import { PricedProduct } from "../../../../types/pricing"
import { FlagRouter } from "../../../../utils/flag-router"
import middlewares, { transformQuery } from "../../../middlewares"
@@ -70,7 +70,7 @@ export default (app, featureFlagRouter: FlagRouter) => {
)
route.get(
"/:id",
transformQuery(EmptyQueryParams, {
transformQuery(FindParams, {
defaultRelations: defaultAdminProductRelations,
defaultFields: defaultAdminProductFields,
allowedFields: allowedAdminProductFields,

View File

@@ -1,13 +1,14 @@
import { Router } from "express"
import "reflect-metadata"
import { Cart, Order, Swap } from "../../../../"
import { DeleteResponse, EmptyQueryParams } from "../../../../types/common"
import { DeleteResponse, FindParams } from "../../../../types/common"
import middlewares, {
transformBody,
transformQuery,
} from "../../../middlewares"
import { StorePostCartsCartReq } from "./update-cart"
import { StorePostCartReq } from "./create-cart"
const route = Router()
export default (app, container) => {
@@ -28,7 +29,7 @@ export default (app, container) => {
route.get(
"/:id",
transformQuery(EmptyQueryParams, {
transformQuery(FindParams, {
defaultRelations: defaultStoreCartRelations,
defaultFields: defaultStoreCartFields,
isList: false,