Files
frontend/src/shared/lib/decimal.test.ts
T
ksv741 b40066838c
Frontend verify / commits (pull_request) Successful in 35s
Frontend verify / security (pull_request) Successful in 10s
Frontend verify / verify (pull_request) Successful in 7m20s
refactor!: support RUB only (WealthLedger/main#55)
Adopt RUB-only API contract; remove currency cards, selectors,
screener currency filter and multi-currency branches.

BREAKING CHANGE: requires the RUB-only backend contract.
2026-11-11 08:22:44 +03:00

37 lines
1.0 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { sumMoney } from "./decimal";
describe("sumMoney", () => {
it("adds exact signed decimals", () => {
expect(sumMoney([
{ currency: "RUB", value: "0.1" },
{ currency: "RUB", value: "0.2" },
{ currency: "RUB", value: "-1500000.45" },
{ currency: "RUB", value: "200" },
])).toEqual({ currency: "RUB", value: "-1499800.15" });
});
it("preserves significant fractional digits and a compensated zero", () => {
expect(sumMoney([
{ currency: "RUB", value: "100.5" },
{ currency: "RUB", value: "49.50" },
{ currency: "RUB", value: "0.005" },
])).toEqual({ currency: "RUB", value: "150.005" });
expect(sumMoney([
{ currency: "RUB", value: "100" },
{ currency: "RUB", value: "-100" },
])).toEqual({ currency: "RUB", value: "0" });
});
it.each(["", ".", "1.2.3", "not-a-number"])(
"rejects malformed amount %s instead of treating it as zero",
(value) => {
expect(sumMoney([
{ currency: "RUB", value: "100" },
{ currency: "RUB", value },
])).toBeNull();
},
);
});