Feat/decline order edit (#2234)

**What**
- Decline an order edit from a store endpoint
- Refactor totals setting to a service method

Fixes CORE-502
This commit is contained in:
Philip Korsholm
2022-09-21 13:02:10 +02:00
committed by GitHub
parent de85a971c6
commit c661cc789b
17 changed files with 486 additions and 67 deletions

View File

@@ -186,4 +186,91 @@ describe("[MEDUSA_FF_ORDER_EDITING] /store/order-edits", () => {
expect(response.data.order_edit.confirmed_by).not.toBeDefined()
})
})
describe("POST /store/order-edits/:id/decline", () => {
let declineableOrderEdit
let declinedOrderEdit
let confirmedOrderEdit
beforeEach(async () => {
await adminSeeder(dbConnection)
declineableOrderEdit = await simpleOrderEditFactory(dbConnection, {
id: IdMap.getId("order-edit-1"),
created_by: "admin_user",
requested_at: new Date(),
})
declinedOrderEdit = await simpleOrderEditFactory(dbConnection, {
id: IdMap.getId("order-edit-2"),
created_by: "admin_user",
declined_reason: "wrong size",
declined_at: new Date(),
})
confirmedOrderEdit = await simpleOrderEditFactory(dbConnection, {
id: IdMap.getId("order-edit-3"),
created_by: "admin_user",
confirmed_at: new Date(),
})
})
afterEach(async () => {
const db = useDb()
return await db.teardown()
})
it("declines an order edit", async () => {
const api = useApi()
const result = await api.post(
`/store/order-edits/${declineableOrderEdit.id}/decline`,
{
declined_reason: "wrong color",
}
)
expect(result.status).toEqual(200)
expect(result.data.order_edit).toEqual(
expect.objectContaining({
status: "declined",
declined_reason: "wrong color",
})
)
})
it("fails to decline an already declined order edit", async () => {
const api = useApi()
const result = await api.post(
`/store/order-edits/${declinedOrderEdit.id}/decline`,
{
declined_reason: "wrong color",
}
)
expect(result.status).toEqual(200)
expect(result.data.order_edit).toEqual(
expect.objectContaining({
id: declinedOrderEdit.id,
status: "declined",
declined_reason: "wrong size",
declined_at: expect.any(String),
})
)
})
it("fails to decline an already confirmed order edit", async () => {
expect.assertions(2)
const api = useApi()
await api
.post(`/store/order-edits/${confirmedOrderEdit.id}/decline`, {
declined_reason: "wrong color",
})
.catch((err) => {
expect(err.response.status).toEqual(400)
expect(err.response.data.message).toEqual(
`Cannot decline an order edit with status confirmed.`
)
})
})
})
})