feat(medusa): Improve order edit retrieve active (#2244)

**What**
- Improve `retrieveActive` to take into account `(confirmed/canceled/declined)_at`

**Test**
- one more Integration test on that case

FIXES CORE-601
This commit is contained in:
Adrien de Peretti
2022-09-22 18:19:10 +02:00
committed by GitHub
parent 6da29c72c4
commit 74342fc1ea
2 changed files with 69 additions and 2 deletions

View File

@@ -314,6 +314,7 @@ describe("[MEDUSA_FF_ORDER_EDITING] /admin/order-edits", () => {
const prodId2 = IdMap.getId("prodId2")
const lineItemId1 = IdMap.getId("line-item-1")
const lineItemId2 = IdMap.getId("line-item-2")
const confirmedOrderEditId = IdMap.getId("confirmed-order-edit")
beforeEach(async () => {
await adminSeeder(dbConnection)
@@ -428,6 +429,64 @@ describe("[MEDUSA_FF_ORDER_EDITING] /admin/order-edits", () => {
`An active order edit already exists for the order ${payload.order_id}`
)
})
it("created a new order edit if none are active anymore", async () => {
const api = useApi()
await simpleOrderEditFactory(dbConnection, {
id: confirmedOrderEditId,
order_id: orderId,
internal_note: "test",
confirmed_at: new Date(),
created_by: "admin_user",
})
const payload = {
order_id: orderId,
internal_note: "This is an internal note",
}
const response = await api.post(
`/admin/order-edits/`,
payload,
adminHeaders
)
expect(response.status).toEqual(200)
expect(response.data.order_edit).toEqual(
expect.objectContaining({
order_id: orderId,
created_by: "admin_user",
requested_by: null,
canceled_by: null,
confirmed_by: null,
internal_note: "This is an internal note",
items: expect.arrayContaining([
expect.objectContaining({
id: lineItemId1,
quantity: 1,
fulfilled_quantity: 1,
shipped_quantity: 1,
unit_price: 1000,
}),
expect.objectContaining({
id: lineItemId2,
quantity: 1,
fulfilled_quantity: 1,
shipped_quantity: 1,
unit_price: 1000,
}),
]),
shipping_total: 0,
gift_card_total: 0,
gift_card_tax_total: 0,
discount_total: 0,
tax_total: 0,
total: 2000,
subtotal: 2000,
})
)
})
})
describe("POST /admin/order-edits/:id/request", () => {

View File

@@ -1,4 +1,4 @@
import { EntityManager } from "typeorm"
import { EntityManager, IsNull } from "typeorm"
import { FindConfig } from "../types/common"
import { buildQuery, isDefined } from "../utils"
import { MedusaError } from "medusa-core-utils"
@@ -102,7 +102,15 @@ export default class OrderEditService extends TransactionBaseService {
this.orderEditRepository_
)
const query = buildQuery({ order_id: orderId }, config)
const query = buildQuery(
{
order_id: orderId,
confirmed_at: IsNull(),
canceled_at: IsNull(),
declined_at: IsNull(),
},
config
)
return await orderEditRepository.findOne(query)
}