Files

31 lines
1.1 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import {
getLocalePlugin,
getSupportedLocales,
registerLocale,
resolveBrowserLocale,
} from "./registry.ts";
test("uses the first supported browser language and falls back to English", () => {
assert.equal(resolveBrowserLocale(["zh-CN", "en-US"]), "zh-CN");
assert.equal(resolveBrowserLocale(["zh", "en-US"]), "zh-CN");
assert.equal(resolveBrowserLocale(["en-US", "zh-CN"]), "en");
assert.equal(resolveBrowserLocale(["fr-FR", "zh-CN"]), "zh-CN");
assert.equal(resolveBrowserLocale(["fr-FR"]), "en");
assert.equal(resolveBrowserLocale([]), "en");
});
test("returns only registered locales", () => {
assert.deepEqual(getSupportedLocales(), ["en", "zh-CN"]);
assert.equal(getLocalePlugin("en").id, "en");
assert.equal(getLocalePlugin("missing"), undefined);
});
test("allows a new locale plugin and rejects duplicate ids", () => {
registerLocale({ id: "test", label: "Test", messages: { "common.ok": "OK" } });
assert.equal(getLocalePlugin("test")?.label, "Test");
assert.throws(() => registerLocale({ id: "test", label: "Again", messages: {} }));
});