release: WRNexusJS 0.8.0
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import { expect, test } from "bun:test";
|
||||
import { mkdirSync, mkdtempSync, writeFileSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import {
|
||||
createLocaleFormatter,
|
||||
formatMessage,
|
||||
loadRouteMessages,
|
||||
resolveI18n,
|
||||
withTenantMessages,
|
||||
} from "../src/index.ts";
|
||||
|
||||
test("formats ICU plural, exact and gender-aware select messages", () => {
|
||||
expect(
|
||||
formatMessage("{count, plural, =0 {None} one {# item} other {# items}}", { count: 2 }, "en"),
|
||||
).toBe("2 items");
|
||||
expect(
|
||||
formatMessage(
|
||||
"{gender, select, female {She} male {He} other {They}} approved",
|
||||
{ gender: "female" },
|
||||
"en",
|
||||
),
|
||||
).toBe("She approved");
|
||||
});
|
||||
test("supports calendars, tenant overrides and route-scoped loading", () => {
|
||||
const formatter = createLocaleFormatter("en-US", "UTC", "indian");
|
||||
expect(
|
||||
formatter.date(new Date("2026-08-02T00:00:00Z"), { year: "numeric", calendar: "indian" }),
|
||||
).toBeTruthy();
|
||||
const base = resolveI18n({ en: { title: "Default" } }, { default: "en" });
|
||||
expect(withTenantMessages(base, { en: { title: "Tenant" } }).messages.en?.title).toBe("Tenant");
|
||||
expect(base.messages.en?.title).toBe("Default");
|
||||
const root = mkdtempSync(join(tmpdir(), "wrnexus-i18n-route-"));
|
||||
mkdirSync(join(root, "en/routes/users"), { recursive: true });
|
||||
writeFileSync(join(root, "en/common.json"), JSON.stringify({ common: "Common" }));
|
||||
writeFileSync(join(root, "en/routes/users/index.json"), JSON.stringify({ title: "Users" }));
|
||||
expect(loadRouteMessages(root, "en", "/users/index")).toEqual({
|
||||
common: "Common",
|
||||
title: "Users",
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user