fix(core-flows,dashboard): handling authorized payment collection on OE (#11958)

* wip: handling authorized payment collection on OE

* fix: update condition

* fix: condition for creation

* chore: remove commented code

* chore: changeset, refactor

* chore: typo, comments

* fix: add a test case

* fix: reorg workflows, partially captured

* fix: status enum type
This commit is contained in:
Frane Polić
2025-04-02 13:57:44 +02:00
committed by GitHub
parent 2270f29ec5
commit a8513019db
9 changed files with 384 additions and 32 deletions

View File

@@ -8,7 +8,10 @@ import {
import {
adminHeaders,
createAdminUser,
generatePublishableKey,
generateStoreHeaders,
} from "../../../helpers/create-admin-user"
import { medusaTshirtProduct } from "../../__fixtures__/product"
jest.setTimeout(30000)
@@ -578,5 +581,134 @@ medusaIntegrationTestRunner({
)
})
})
describe("Order Edit Payment Collection", () => {
let appContainer
let storeHeaders
let region, product, salesChannel
const shippingAddressData = {
address_1: "test address 1",
address_2: "test address 2",
city: "SF",
country_code: "US",
province: "CA",
postal_code: "94016",
}
beforeAll(async () => {
appContainer = getContainer()
})
beforeEach(async () => {
const publishableKey = await generatePublishableKey(appContainer)
storeHeaders = generateStoreHeaders({ publishableKey })
region = (
await api.post(
"/admin/regions",
{ name: "US", currency_code: "usd", countries: ["us"] },
adminHeaders
)
).data.region
product = (
await api.post(
"/admin/products",
{ ...medusaTshirtProduct },
adminHeaders
)
).data.product
salesChannel = (
await api.post(
"/admin/sales-channels",
{ name: "Webshop", description: "channel" },
adminHeaders
)
).data.sales_channel
})
it("should add a create a new payment collection if the order has authorized payment collection", async () => {
const cart = (
await api.post(
`/store/carts`,
{
currency_code: "usd",
sales_channel_id: salesChannel.id,
region_id: region.id,
shipping_address: shippingAddressData,
items: [{ variant_id: product.variants[0].id, quantity: 1 }],
},
storeHeaders
)
).data.cart
const paymentCollection = (
await api.post(
`/store/payment-collections`,
{ cart_id: cart.id },
storeHeaders
)
).data.payment_collection
await api.post(
`/store/payment-collections/${paymentCollection.id}/payment-sessions`,
{ provider_id: "pp_system_default" },
storeHeaders
)
const order = (
await api.post(
`/store/carts/${cart.id}/complete`,
{ cart_id: cart.id },
storeHeaders
)
).data.order
await api.post(
`/admin/order-edits`,
{ order_id: order.id, description: "Test" },
adminHeaders
)
await api.post(
`/admin/order-edits/${order.id}/items`,
{
items: [
{
variant_id: product.variants[0].id,
quantity: 1,
},
],
},
adminHeaders
)
await api.post(
`/admin/order-edits/${order.id}/confirm`,
{},
adminHeaders
)
const orderResult = (
await api.get(`/admin/orders/${order.id}`, adminHeaders)
).data.order
expect(orderResult.payment_collections).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: paymentCollection.id,
status: "canceled",
}),
expect.objectContaining({
id: expect.any(String),
status: "not_paid",
amount: orderResult.total,
}),
])
)
})
})
},
})