mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-05-20 08:32:25 +00:00
65 lines
1.6 KiB
TypeScript
65 lines
1.6 KiB
TypeScript
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
import { setAppLanguage } from "@/i18n";
|
|
import { fmtDateTime, relativeTime } from "@/lib/format";
|
|
|
|
describe("localized format helpers", () => {
|
|
beforeEach(() => {
|
|
vi.useFakeTimers();
|
|
vi.setSystemTime(new Date("2026-04-18T12:00:00Z"));
|
|
});
|
|
|
|
afterEach(() => {
|
|
vi.useRealTimers();
|
|
});
|
|
|
|
it("formats relative time using the active locale", async () => {
|
|
const value = "2026-04-18T11:59:00Z";
|
|
|
|
await setAppLanguage("en");
|
|
const english = relativeTime(value);
|
|
|
|
await setAppLanguage("zh-CN");
|
|
const chinese = relativeTime(value);
|
|
|
|
expect(english).toBe(
|
|
new Intl.RelativeTimeFormat("en", { numeric: "auto" }).format(
|
|
-1,
|
|
"minute",
|
|
),
|
|
);
|
|
expect(chinese).toBe(
|
|
new Intl.RelativeTimeFormat("zh-CN", { numeric: "auto" }).format(
|
|
-1,
|
|
"minute",
|
|
),
|
|
);
|
|
expect(english).not.toBe(chinese);
|
|
});
|
|
|
|
it("formats date-time using the active locale", async () => {
|
|
const value = "2026-04-18T08:30:00Z";
|
|
const date = new Date(value);
|
|
|
|
await setAppLanguage("en");
|
|
const english = fmtDateTime(value);
|
|
|
|
await setAppLanguage("fr");
|
|
const french = fmtDateTime(value);
|
|
|
|
expect(english).toBe(
|
|
new Intl.DateTimeFormat("en", {
|
|
dateStyle: "medium",
|
|
timeStyle: "short",
|
|
}).format(date),
|
|
);
|
|
expect(french).toBe(
|
|
new Intl.DateTimeFormat("fr", {
|
|
dateStyle: "medium",
|
|
timeStyle: "short",
|
|
}).format(date),
|
|
);
|
|
expect(english).not.toBe(french);
|
|
});
|
|
});
|