currency.test.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { describe, expect, test } from "vitest";
  2. import { getCurrencySymbol, CURRENCY_CONFIG, type CurrencyCode } from "@/lib/utils/currency";
  3. describe("getCurrencySymbol", () => {
  4. test("returns correct symbol for valid currency codes", () => {
  5. expect(getCurrencySymbol("USD")).toBe("$");
  6. expect(getCurrencySymbol("CNY")).toBe("\u00a5");
  7. expect(getCurrencySymbol("EUR")).toBe("\u20ac");
  8. expect(getCurrencySymbol("JPY")).toBe("\u00a5");
  9. expect(getCurrencySymbol("GBP")).toBe("\u00a3");
  10. expect(getCurrencySymbol("HKD")).toBe("HK$");
  11. expect(getCurrencySymbol("TWD")).toBe("NT$");
  12. expect(getCurrencySymbol("KRW")).toBe("\u20a9");
  13. expect(getCurrencySymbol("SGD")).toBe("S$");
  14. });
  15. test("returns USD symbol for undefined", () => {
  16. expect(getCurrencySymbol()).toBe("$");
  17. expect(getCurrencySymbol(undefined)).toBe("$");
  18. });
  19. test("returns USD symbol for invalid currency code", () => {
  20. expect(getCurrencySymbol("INVALID")).toBe("$");
  21. expect(getCurrencySymbol("")).toBe("$");
  22. expect(getCurrencySymbol("usd")).toBe("$"); // case-sensitive
  23. });
  24. test("all CURRENCY_CONFIG entries have valid symbols", () => {
  25. const codes: CurrencyCode[] = ["USD", "CNY", "EUR", "JPY", "GBP", "HKD", "TWD", "KRW", "SGD"];
  26. for (const code of codes) {
  27. const symbol = getCurrencySymbol(code);
  28. expect(symbol).toBe(CURRENCY_CONFIG[code].symbol);
  29. expect(symbol.length).toBeGreaterThan(0);
  30. }
  31. });
  32. });