1 parent
4155d0354f
commit
bbb891e5c1
2 files changed
+140
-8
No files matched your search
@@ -16,6 +16,7 @@ jest.setTimeout(30000)
|
|||||||
|
|
||||||
medusaIntegrationTestRunner({
|
medusaIntegrationTestRunner({
|
||||||
testSuite: ({ dbConnection, getContainer, api }) => {
|
testSuite: ({ dbConnection, getContainer, api }) => {
|
||||||
|
let baseClaim
|
||||||
let order, order2
|
let order, order2
|
||||||
let returnShippingOption
|
let returnShippingOption
|
||||||
let shippingProfile
|
let shippingProfile
|
||||||
@@ -25,6 +26,7 @@ medusaIntegrationTestRunner({
|
|||||||
let inventoryItemExtra
|
let inventoryItemExtra
|
||||||
let location
|
let location
|
||||||
let productExtra
|
let productExtra
|
||||||
|
let item
|
||||||
const shippingProviderId = "manual_test-provider"
|
const shippingProviderId = "manual_test-provider"
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
@@ -354,7 +356,7 @@ medusaIntegrationTestRunner({
|
|||||||
)
|
)
|
||||||
).data.shipping_option
|
).data.shipping_option
|
||||||
|
|
||||||
const item = order.items[0]
|
item = order.items[0]
|
||||||
|
|
||||||
await api.post(
|
await api.post(
|
||||||
`/admin/orders/${order.id}/fulfillments`,
|
`/admin/orders/${order.id}/fulfillments`,
|
||||||
@@ -381,20 +383,22 @@ medusaIntegrationTestRunner({
|
|||||||
},
|
},
|
||||||
adminHeaders
|
adminHeaders
|
||||||
)
|
)
|
||||||
})
|
|
||||||
|
|
||||||
describe("Claims lifecycle", () => {
|
baseClaim = (
|
||||||
it("Full flow with 2 orders", async () => {
|
await api.post(
|
||||||
let result = await api.post(
|
|
||||||
"/admin/claims",
|
"/admin/claims",
|
||||||
{
|
{
|
||||||
order_id: order.id,
|
order_id: order.id,
|
||||||
type: ClaimType.REPLACE,
|
type: ClaimType.REPLACE,
|
||||||
description: "Test",
|
description: "Base claim",
|
||||||
},
|
},
|
||||||
adminHeaders
|
adminHeaders
|
||||||
)
|
)
|
||||||
|
).data.claim
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("Claims lifecycle", () => {
|
||||||
|
it("Full flow with 2 orders", async () => {
|
||||||
let r2 = await api.post(
|
let r2 = await api.post(
|
||||||
"/admin/claims",
|
"/admin/claims",
|
||||||
{
|
{
|
||||||
@@ -429,11 +433,11 @@ medusaIntegrationTestRunner({
|
|||||||
)
|
)
|
||||||
await api.post(`/admin/claims/${claimId2}/request`, {}, adminHeaders)
|
await api.post(`/admin/claims/${claimId2}/request`, {}, adminHeaders)
|
||||||
|
|
||||||
const claimId = result.data.claim.id
|
const claimId = baseClaim.id
|
||||||
|
|
||||||
const item = order.items[0]
|
const item = order.items[0]
|
||||||
|
|
||||||
result = await api.post(
|
let result = await api.post(
|
||||||
`/admin/claims/${claimId}/inbound/items`,
|
`/admin/claims/${claimId}/inbound/items`,
|
||||||
{
|
{
|
||||||
items: [
|
items: [
|
||||||
@@ -525,5 +529,105 @@ medusaIntegrationTestRunner({
|
|||||||
expect(result[0].canceled_at).toBeDefined()
|
expect(result[0].canceled_at).toBeDefined()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("GET /admin/claims/:id", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
await api.post(
|
||||||
|
`/admin/claims/${baseClaim.id}/inbound/items`,
|
||||||
|
{
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
id: item.id,
|
||||||
|
reason_id: returnReason.id,
|
||||||
|
quantity: 1,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
await api.post(
|
||||||
|
`/admin/claims/${baseClaim.id}/inbound/shipping-method`,
|
||||||
|
{
|
||||||
|
shipping_option_id: returnShippingOption.id,
|
||||||
|
},
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
// Claim Items
|
||||||
|
await api.post(
|
||||||
|
`/admin/claims/${baseClaim.id}/claim-items`,
|
||||||
|
{
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
id: item.id,
|
||||||
|
reason: ClaimReason.PRODUCTION_FAILURE,
|
||||||
|
quantity: 1,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
await api.post(
|
||||||
|
`/admin/claims/${baseClaim.id}/request`,
|
||||||
|
{},
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should get an existing claim for given id", async () => {
|
||||||
|
let res = await api.get(`/admin/claims/${baseClaim.id}`, adminHeaders)
|
||||||
|
expect(res.status).toEqual(200)
|
||||||
|
expect(res.data.claim.id).toEqual(baseClaim.id)
|
||||||
|
|
||||||
|
let errorRes = await api
|
||||||
|
.get(`/admin/claims/invalid-claim-id`, adminHeaders)
|
||||||
|
.catch((e) => e)
|
||||||
|
expect(errorRes.response.status).toEqual(404)
|
||||||
|
expect(errorRes.response.data.message).toEqual(
|
||||||
|
"Claim with id: invalid-claim-id was not found"
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should get an existing claim for given id", async () => {
|
||||||
|
let res = await api.get(`/admin/claims/${baseClaim.id}`, adminHeaders)
|
||||||
|
const keysInResponse = Object.keys(res.data.claim)
|
||||||
|
|
||||||
|
expect(res.status).toEqual(200)
|
||||||
|
expect(keysInResponse).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
"id",
|
||||||
|
"created_at",
|
||||||
|
"updated_at",
|
||||||
|
"canceled_at",
|
||||||
|
"type",
|
||||||
|
"order_id",
|
||||||
|
"return_id",
|
||||||
|
"display_id",
|
||||||
|
"order_version",
|
||||||
|
"refund_amount",
|
||||||
|
"additional_items",
|
||||||
|
"claim_items",
|
||||||
|
])
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should get claim with claim items", async () => {
|
||||||
|
let res = await api.get(
|
||||||
|
`/admin/claims/${baseClaim.id}?fields=id,*claim_items`,
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
expect(res.status).toEqual(200)
|
||||||
|
expect(res.data.claim.id).toEqual(baseClaim.id)
|
||||||
|
expect(res.data.claim.claim_items).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
item_id: item.id,
|
||||||
|
reason: ClaimReason.PRODUCTION_FAILURE,
|
||||||
|
}),
|
||||||
|
])
|
||||||
|
)
|
||||||
|
// additional items is one of the props that should be undefined
|
||||||
|
expect(res.data.claim.additional_items).toBeUndefined()
|
||||||
|
})
|
||||||
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
import {
|
||||||
|
AuthenticatedMedusaRequest,
|
||||||
|
MedusaResponse,
|
||||||
|
} from "../../../../types/routing"
|
||||||
|
import { MedusaError } from "@medusajs/utils"
|
||||||
|
import { refetchEntity } from "../../../utils/refetch-entity"
|
||||||
|
import { AdminClaimResponse } from "@medusajs/types"
|
||||||
|
|
||||||
|
export const GET = async (
|
||||||
|
req: AuthenticatedMedusaRequest,
|
||||||
|
res: MedusaResponse<AdminClaimResponse>
|
||||||
|
) => {
|
||||||
|
const claim = await refetchEntity(
|
||||||
|
"order_claim",
|
||||||
|
req.params.id,
|
||||||
|
req.scope,
|
||||||
|
req.remoteQueryConfig.fields
|
||||||
|
)
|
||||||
|
|
||||||
|
if (!claim) {
|
||||||
|
throw new MedusaError(
|
||||||
|
MedusaError.Types.NOT_FOUND,
|
||||||
|
`Claim with id: ${req.params.id} was not found`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
res.status(200).json({ claim })
|
||||||
|
}
|
||||||
Reference in new issue
Block a user