Feat(order): post purchase support (#7666)

This commit is contained in:
Carlos R. L. Rodrigues
2024-06-10 18:44:51 -03:00
committed by GitHub
parent 39ddba2491
commit 37426939da
43 changed files with 1645 additions and 476 deletions
@@ -233,12 +233,15 @@ moduleIntegrationTestRunner({
)
// Return
await service.createReturn({
const orderReturn = await service.createReturn({
order_id: createdOrder.id,
reference: Modules.FULFILLMENT,
description: "Return all the items",
internal_note: "user wants to return all items",
shipping_method: createdOrder.shipping_methods![0].id,
shipping_method: {
name: "Return method",
amount: 35,
},
items: createdOrder.items!.map((item) => {
return {
id: item.id,
@@ -302,6 +305,141 @@ moduleIntegrationTestRunner({
],
})
)
// Receive Return
const allItems = createdOrder.items!.map((item) => {
return {
id: item.id,
quantity: item.quantity,
}
})
const lastItem = allItems.pop()!
const receive = await service.receiveReturn({
return_id: orderReturn.id,
internal_note: "received some items",
items: allItems,
})
const receiveComplete = await service.receiveReturn({
return_id: orderReturn.id,
internal_note: "received remaining items",
items: [lastItem],
})
expect(receive).toEqual(
expect.objectContaining({
id: orderReturn.id,
status: "partially_received",
received_at: null,
items: expect.arrayContaining([
expect.objectContaining({
id: allItems[0].id,
detail: expect.objectContaining({
return_requested_quantity: 0,
return_received_quantity: 1,
}),
}),
expect.objectContaining({
id: allItems[1].id,
detail: expect.objectContaining({
return_requested_quantity: 0,
return_received_quantity: 2,
}),
}),
]),
})
)
expect(receiveComplete).toEqual(
expect.objectContaining({
id: orderReturn.id,
status: "received",
received_at: expect.any(Date),
items: expect.arrayContaining([
expect.objectContaining({
id: allItems[0].id,
detail: expect.objectContaining({
return_requested_quantity: 0,
return_received_quantity: 1,
}),
}),
expect.objectContaining({
id: allItems[1].id,
detail: expect.objectContaining({
return_requested_quantity: 0,
return_received_quantity: 2,
}),
}),
expect.objectContaining({
id: lastItem.id,
detail: expect.objectContaining({
return_requested_quantity: 0,
return_received_quantity: 1,
}),
}),
]),
})
)
getOrder = await service.retrieve(createdOrder.id, {
select: [
"id",
"version",
"items.id",
"items.quantity",
"items.detail.id",
"items.detail.version",
"items.detail.quantity",
"items.detail.shipped_quantity",
"items.detail.fulfilled_quantity",
"items.detail.return_requested_quantity",
"items.detail.return_received_quantity",
],
relations: ["items", "items.detail"],
})
serializedOrder = JSON.parse(JSON.stringify(getOrder))
expect(serializedOrder).toEqual(
expect.objectContaining({
version: 6,
items: [
expect.objectContaining({
quantity: 1,
detail: expect.objectContaining({
version: 6,
quantity: 1,
fulfilled_quantity: 1,
shipped_quantity: 1,
return_requested_quantity: 0,
return_received_quantity: 1,
}),
}),
expect.objectContaining({
quantity: 2,
detail: expect.objectContaining({
version: 6,
quantity: 2,
fulfilled_quantity: 2,
shipped_quantity: 2,
return_requested_quantity: 0,
return_received_quantity: 2,
}),
}),
expect.objectContaining({
quantity: 1,
detail: expect.objectContaining({
version: 6,
quantity: 1,
fulfilled_quantity: 1,
shipped_quantity: 1,
return_requested_quantity: 0,
return_received_quantity: 1,
}),
}),
],
})
)
})
})
},