feat: Totals calculation (#6980)

This commit is contained in:
Carlos R. L. Rodrigues
2024-04-07 16:50:40 +02:00
committed by GitHub
parent 7302d078a9
commit b6879f017a
48 changed files with 1674 additions and 571 deletions
@@ -194,7 +194,8 @@ moduleIntegrationTestRunner({
it("should create an order, shipping method and items. Including taxes and adjustments associated with them", async function () {
const createdOrder = await service.create(input)
expect(createdOrder).toEqual(expectation)
const serializedOrder = JSON.parse(JSON.stringify(createdOrder))
expect(serializedOrder).toEqual(expectation)
})
it("should transform requested fields and relations to match the db schema and return the order", async function () {
@@ -232,7 +233,8 @@ moduleIntegrationTestRunner({
],
})
expect(getOrder).toEqual(expectation)
const serializedOrder = JSON.parse(JSON.stringify(getOrder))
expect(serializedOrder).toEqual(expectation)
})
it("should return order transactions", async function () {
@@ -247,7 +249,8 @@ moduleIntegrationTestRunner({
relations: ["transactions"],
})
expect(getOrder).toEqual(
const serializedOrder = JSON.parse(JSON.stringify(getOrder))
expect(serializedOrder).toEqual(
expect.objectContaining({
id: createdOrder.id,
transactions: [
@@ -1,8 +1,8 @@
import { Modules } from "@medusajs/modules-sdk"
import { CreateOrderDTO, IOrderModuleService } from "@medusajs/types"
import { moduleIntegrationTestRunner, SuiteOptions } from "medusa-test-utils"
import { ChangeActionType } from "../../src/utils"
import { BigNumber } from "@medusajs/utils"
import { SuiteOptions, moduleIntegrationTestRunner } from "medusa-test-utils"
import { ChangeActionType } from "../../src/utils"
jest.setTimeout(100000)
@@ -212,8 +212,10 @@ moduleIntegrationTestRunner({
],
relations: ["items", "shipping_methods", "transactions"],
})
const serializedFinalOrder = JSON.parse(JSON.stringify(finalOrder))
expect(createdOrder.items).toEqual([
const serializedCreatedOrder = JSON.parse(JSON.stringify(createdOrder))
expect(serializedCreatedOrder.items).toEqual([
expect.objectContaining({
title: "Item 1",
unit_price: 8,
@@ -252,12 +254,12 @@ moduleIntegrationTestRunner({
}),
])
expect(finalOrder).toEqual(
expect(serializedFinalOrder).toEqual(
expect.objectContaining({
version: 1,
})
)
expect(finalOrder.items).toEqual([
expect(serializedFinalOrder.items).toEqual([
expect.objectContaining({
title: "Item 1",
subtitle: "Subtitle 1",
@@ -396,7 +398,8 @@ moduleIntegrationTestRunner({
],
})
await service.confirmOrderChange(orderChange.id, {
await service.confirmOrderChange({
id: orderChange.id,
confirmed_by: "cx_agent_123",
})
@@ -416,13 +419,15 @@ moduleIntegrationTestRunner({
relations: ["items", "shipping_methods", "transactions"],
})
expect(modified).toEqual(
const serializedModifiedOrder = JSON.parse(JSON.stringify(modified))
expect(serializedModifiedOrder).toEqual(
expect.objectContaining({
version: 2,
})
)
expect(modified.items).toEqual([
expect(serializedModifiedOrder.items).toEqual([
expect.objectContaining({
quantity: 2,
detail: expect.objectContaining({
@@ -1,5 +1,8 @@
import { Modules } from "@medusajs/modules-sdk"
import { IOrderModuleService } from "@medusajs/types"
import {
CreateOrderLineItemTaxLineDTO,
IOrderModuleService,
} from "@medusajs/types"
import { OrderStatus } from "@medusajs/utils"
import { SuiteOptions, moduleIntegrationTestRunner } from "medusa-test-utils"
@@ -134,7 +137,8 @@ moduleIntegrationTestRunner({
relations: ["items.item"],
})
expect(order).toEqual(
const serialized = JSON.parse(JSON.stringify(order))
expect(serialized).toEqual(
expect.objectContaining({
id: createdOrder.id,
currency_code: "eur",
@@ -179,7 +183,8 @@ moduleIntegrationTestRunner({
}
)
expect(orders).toEqual(
const serialized = JSON.parse(JSON.stringify(orders))
expect(serialized).toEqual(
expect.arrayContaining([
expect.objectContaining({
currency_code: "eur",
@@ -398,7 +403,8 @@ moduleIntegrationTestRunner({
relations: ["items.item"],
})
expect(order.items[0]).toEqual(
const serialized = JSON.parse(JSON.stringify(order))
expect(serialized.items[0]).toEqual(
expect.objectContaining({
quantity: 1,
title: "test",
@@ -436,7 +442,8 @@ moduleIntegrationTestRunner({
relations: ["items.item"],
})
expect(order.items).toEqual(
const serialized = JSON.parse(JSON.stringify(order))
expect(serialized.items).toEqual(
expect.arrayContaining([
expect.objectContaining({
title: "test",
@@ -669,7 +676,8 @@ moduleIntegrationTestRunner({
relations: ["items.item"],
})
expect(order.items).toEqual(
const serialized = JSON.parse(JSON.stringify(order))
expect(serialized.items).toEqual(
expect.arrayContaining([
expect.objectContaining({
title: "changed-test",
@@ -948,7 +956,8 @@ moduleIntegrationTestRunner({
relations: ["items.item.adjustments"],
})
expect(order.items).toEqual(
const serialized = JSON.parse(JSON.stringify(order))
expect(serialized.items).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: itemOne.id,
@@ -1071,7 +1080,8 @@ moduleIntegrationTestRunner({
relations: ["items.item.adjustments"],
})
expect(order.items).toEqual(
const serialized = JSON.parse(JSON.stringify(order))
expect(serialized.items).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: itemOne.id,
@@ -1224,9 +1234,10 @@ moduleIntegrationTestRunner({
},
])
const [checkOrderOne, checkOrderTwo] = await service.list(
{},
{ relations: ["items.item.adjustments"] }
const [checkOrderOne, checkOrderTwo] = JSON.parse(
JSON.stringify(
await service.list({}, { relations: ["items.item.adjustments"] })
)
)
expect(checkOrderOne.items).toEqual(
@@ -1445,7 +1456,8 @@ moduleIntegrationTestRunner({
relations: ["shipping_methods.adjustments"],
})
expect(order.shipping_methods).toEqual(
const serialized = JSON.parse(JSON.stringify(order))
expect(serialized.shipping_methods).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: shippingMethodOne.id,
@@ -1572,7 +1584,8 @@ moduleIntegrationTestRunner({
relations: ["shipping_methods.adjustments"],
})
expect(order.shipping_methods).toEqual(
const serialized = JSON.parse(JSON.stringify(order))
expect(serialized.shipping_methods).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: shippingMethodOne.id,
@@ -1994,7 +2007,8 @@ moduleIntegrationTestRunner({
relations: ["items.item.tax_lines"],
})
expect(order.items).toEqual(
const serialized = JSON.parse(JSON.stringify(order))
expect(serialized.items).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: itemOne.id,
@@ -2111,7 +2125,8 @@ moduleIntegrationTestRunner({
relations: ["items.item.tax_lines"],
})
expect(order.items).toEqual(
const serialized = JSON.parse(JSON.stringify(order))
expect(serialized.items).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: itemOne.id,
@@ -2174,7 +2189,7 @@ moduleIntegrationTestRunner({
])
)
const taxLine = taxLines.find((tx) => tx.item_id === itemOne.id)
const taxLine = taxLines.find((tx) => tx.item_id === itemOne.id)!
await service.setLineItemTaxLines(createdOrder.id, [
// update
@@ -2188,7 +2203,7 @@ moduleIntegrationTestRunner({
item_id: itemOne.id,
rate: 25,
code: "TX-2",
},
} as CreateOrderLineItemTaxLineDTO,
// delete: should delete the initial tax line for itemOne
])
@@ -2196,7 +2211,8 @@ moduleIntegrationTestRunner({
relations: ["items.item.tax_lines"],
})
expect(order.items).toEqual(
const serialized = JSON.parse(JSON.stringify(order))
expect(serialized.items).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: itemOne.id,
@@ -2356,9 +2372,10 @@ moduleIntegrationTestRunner({
},
])
const [checkOrderOne, checkOrderTwo] = await service.list(
{},
{ relations: ["items.item.tax_lines"] }
const [checkOrderOne, checkOrderTwo] = JSON.parse(
JSON.stringify(
await service.list({}, { relations: ["items.item.tax_lines"] })
)
)
expect(checkOrderOne.items).toEqual(