42 行
1.2 KiB
JavaScript
42 行
1.2 KiB
JavaScript
const {
|
|
summarizeBudgetLedgerByPool,
|
|
buildPurchaseBudgetValidationError,
|
|
} = require("../../../src/services/purchaseBudget");
|
|
|
|
describe("purchaseBudget service", () => {
|
|
it("summarizes reserve confirm release by pool", () => {
|
|
expect(
|
|
summarizeBudgetLedgerByPool([
|
|
{ budget_pool_id: "pool-1", kind: "reserve", amount: "120.00" },
|
|
{ budget_pool_id: "pool-1", kind: "confirm", amount: "120.00" },
|
|
{ budget_pool_id: "pool-1", kind: "release", amount: "20.00" },
|
|
{ budget_pool_id: "pool-2", kind: "reserve", amount: "80.00" },
|
|
]),
|
|
).toEqual([
|
|
{
|
|
budgetPoolId: "pool-1",
|
|
reserve: 120,
|
|
confirm: 120,
|
|
release: 20,
|
|
outstanding: 100,
|
|
confirmPending: 0,
|
|
},
|
|
{
|
|
budgetPoolId: "pool-2",
|
|
reserve: 80,
|
|
confirm: 0,
|
|
release: 0,
|
|
outstanding: 80,
|
|
confirmPending: 80,
|
|
},
|
|
]);
|
|
});
|
|
|
|
it("builds VALID_001 validation error", () => {
|
|
const error = buildPurchaseBudgetValidationError({ budget: "reserve_already_exists" });
|
|
expect(error.code).toBe("VALID_001");
|
|
expect(error.statusCode).toBe(409);
|
|
expect(error.details).toEqual({ budget: "reserve_already_exists" });
|
|
});
|
|
});
|