feat(core-flows): support ad hoc returns (#13598)
* feat(core-flows): support ad hoc returns * fix: missing transform * handle edge case * refactor * replace gte for gt * cleanup * weird bug fix * add test * Create quick-nails-kick.md * stop sending empty strings * add code to refund reason * fix build * fix tests * handle code in dashboard * fix tests * more tests failing * add reference and reference id to credit lieng * rework create refund form
This commit is contained in:
@@ -218,7 +218,7 @@ medusaIntegrationTestRunner({
|
||||
const refundReason = (
|
||||
await api.post(
|
||||
`/admin/refund-reasons`,
|
||||
{ label: "test" },
|
||||
{ label: "test", code: "test" },
|
||||
adminHeaders
|
||||
)
|
||||
).data.refund_reason
|
||||
@@ -254,6 +254,7 @@ medusaIntegrationTestRunner({
|
||||
refund_reason_id: refundReason.id,
|
||||
refund_reason: expect.objectContaining({
|
||||
label: "test",
|
||||
code: "test"
|
||||
}),
|
||||
}),
|
||||
],
|
||||
@@ -274,7 +275,7 @@ medusaIntegrationTestRunner({
|
||||
const refundReason = (
|
||||
await api.post(
|
||||
`/admin/refund-reasons`,
|
||||
{ label: "test" },
|
||||
{ label: "test", code: "test" },
|
||||
adminHeaders
|
||||
)
|
||||
).data.refund_reason
|
||||
@@ -330,57 +331,44 @@ medusaIntegrationTestRunner({
|
||||
)
|
||||
})
|
||||
|
||||
it("should throw if refund exceeds captured total", async () => {
|
||||
it("should create credit lines if issuing a refund when outstanding amount if >= 0", async () => {
|
||||
const payment = order.payment_collections[0].payments[0]
|
||||
|
||||
const refundReason = (
|
||||
await api.post(
|
||||
`/admin/refund-reasons`,
|
||||
{ label: "Test", code: "test" },
|
||||
adminHeaders
|
||||
)
|
||||
).data.refund_reason
|
||||
|
||||
await api.post(
|
||||
`/admin/payments/${payment.id}/capture`,
|
||||
undefined,
|
||||
adminHeaders
|
||||
)
|
||||
|
||||
await createClaim({ order })
|
||||
|
||||
await api.post(
|
||||
`/admin/payments/${payment.id}/refund`,
|
||||
{ amount: 25 },
|
||||
{
|
||||
amount: 50,
|
||||
refund_reason_id: refundReason.id,
|
||||
},
|
||||
adminHeaders
|
||||
)
|
||||
|
||||
const e = await api
|
||||
.post(
|
||||
`/admin/payments/${payment.id}/refund`,
|
||||
{ amount: 1000 },
|
||||
adminHeaders
|
||||
)
|
||||
.catch((e) => e)
|
||||
const updatedOrder = (
|
||||
await api.get(`/admin/orders/${order.id}`, adminHeaders)
|
||||
).data.order
|
||||
|
||||
expect(e.response.data.message).toEqual(
|
||||
"Cannot refund more than pending difference - 75"
|
||||
)
|
||||
expect(updatedOrder.credit_line_total).toEqual(50)
|
||||
expect(updatedOrder.credit_lines).toEqual([
|
||||
expect.objectContaining({
|
||||
reference: "Test",
|
||||
reference_id: "test",
|
||||
}),
|
||||
])
|
||||
})
|
||||
})
|
||||
|
||||
it("should throw if outstanding amount is not present", async () => {
|
||||
const payment = order.payment_collections[0].payments[0]
|
||||
|
||||
await api.post(
|
||||
`/admin/payments/${payment.id}/capture`,
|
||||
undefined,
|
||||
adminHeaders
|
||||
)
|
||||
|
||||
const e = await api
|
||||
.post(
|
||||
`/admin/payments/${payment.id}/refund`,
|
||||
{ amount: 10 },
|
||||
adminHeaders
|
||||
)
|
||||
.catch((e) => e)
|
||||
|
||||
expect(e.response.data.message).toEqual(
|
||||
"Order does not have an outstanding balance to refund"
|
||||
)
|
||||
})
|
||||
},
|
||||
})
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
import { medusaIntegrationTestRunner } from "@medusajs/test-utils"
|
||||
import { adminHeaders, createAdminUser, } from "../../../helpers/create-admin-user"
|
||||
import {
|
||||
adminHeaders,
|
||||
createAdminUser,
|
||||
} from "../../../helpers/create-admin-user"
|
||||
|
||||
jest.setTimeout(30000)
|
||||
|
||||
@@ -15,7 +18,7 @@ medusaIntegrationTestRunner({
|
||||
refundReason1 = (
|
||||
await api.post(
|
||||
"/admin/refund-reasons",
|
||||
{ label: "reason 1 - too big" },
|
||||
{ label: "reason 1 - too big", code: "too_big" },
|
||||
adminHeaders
|
||||
)
|
||||
).data.refund_reason
|
||||
@@ -23,7 +26,7 @@ medusaIntegrationTestRunner({
|
||||
refundReason2 = (
|
||||
await api.post(
|
||||
"/admin/refund-reasons",
|
||||
{ label: "reason 2 - too small" },
|
||||
{ label: "reason 2 - too small", code: "too_small" },
|
||||
adminHeaders
|
||||
)
|
||||
).data.refund_reason
|
||||
@@ -41,11 +44,11 @@ medusaIntegrationTestRunner({
|
||||
expect(response.data.count).toEqual(5) // There are 3 default ones
|
||||
expect(response.data.refund_reasons).toEqual(
|
||||
expect.arrayContaining([
|
||||
expect.objectContaining({ label: "Customer Care Adjustment" }),
|
||||
expect.objectContaining({ label: "Shipping Issue" }),
|
||||
expect.objectContaining({ label: "Pricing Error" }),
|
||||
expect.objectContaining({ label: "reason 1 - too big" }),
|
||||
expect.objectContaining({ label: "reason 2 - too small" }),
|
||||
expect.objectContaining({ label: "Customer Care Adjustment", code: "customer_care_adjustment" }),
|
||||
expect.objectContaining({ label: "Shipping Issue", code: "shipping_issue" }),
|
||||
expect.objectContaining({ label: "Pricing Error", code: "pricing_error" }),
|
||||
expect.objectContaining({ label: "reason 1 - too big", code: "too_big" }),
|
||||
expect.objectContaining({ label: "reason 2 - too small", code: "too_small" }),
|
||||
])
|
||||
)
|
||||
})
|
||||
@@ -74,6 +77,7 @@ medusaIntegrationTestRunner({
|
||||
"/admin/refund-reasons",
|
||||
{
|
||||
label: "reason test",
|
||||
code: "reason_test",
|
||||
description: "test description",
|
||||
},
|
||||
adminHeaders
|
||||
@@ -83,6 +87,7 @@ medusaIntegrationTestRunner({
|
||||
expect(response.data.refund_reason).toEqual(
|
||||
expect.objectContaining({
|
||||
label: "reason test",
|
||||
code: "reason_test",
|
||||
description: "test description",
|
||||
})
|
||||
)
|
||||
@@ -95,6 +100,7 @@ medusaIntegrationTestRunner({
|
||||
`/admin/refund-reasons/${refundReason1.id}`,
|
||||
{
|
||||
label: "reason test",
|
||||
code: "reason_test",
|
||||
description: "test description",
|
||||
},
|
||||
adminHeaders
|
||||
@@ -104,6 +110,7 @@ medusaIntegrationTestRunner({
|
||||
expect(response.data.refund_reason).toEqual(
|
||||
expect.objectContaining({
|
||||
label: "reason test",
|
||||
code: "reason_test",
|
||||
description: "test description",
|
||||
})
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user