Files
neta/scripts/i18n-v2-phase1-smoke.ts

81 lines
2.4 KiB
TypeScript

import assert from "node:assert/strict";
import { resolveLocalePolicy } from "../lib/i18n/locale-resolution";
const locales = [
{ code: "tr", status: "active", textDirection: "ltr" },
{ code: "en", status: "active", textDirection: "ltr" },
{ code: "fr", status: "active", textDirection: "ltr" },
{ code: "de", status: "archived", textDirection: "ltr" },
{ code: "ar", status: "active", textDirection: "rtl" },
] as const;
const publicLocale = resolveLocalePolicy({
activeLocales: locales,
defaultLocale: "en",
candidates: [],
});
assert.equal(publicLocale.locale, "en");
assert.equal(publicLocale.source, "instance");
const freelancerLocale = resolveLocalePolicy({
activeLocales: locales,
defaultLocale: "tr",
candidates: [{ locale: "en", source: "user" }],
});
assert.equal(freelancerLocale.locale, "en");
assert.equal(freelancerLocale.source, "user");
const portalPreference = resolveLocalePolicy({
activeLocales: locales,
defaultLocale: "tr",
candidates: [
{ locale: "en", source: "user" },
{ locale: "fr", source: "client" },
],
});
assert.equal(portalPreference.locale, "en", "Personal preference must win over the client default");
const portalDefault = resolveLocalePolicy({
activeLocales: locales,
defaultLocale: "tr",
candidates: [
{ locale: null, source: "user" },
{ locale: "fr", source: "client" },
],
});
assert.equal(portalDefault.locale, "fr");
assert.equal(portalDefault.source, "client");
const invitationLocale = resolveLocalePolicy({
activeLocales: locales,
defaultLocale: "tr",
candidates: [{ locale: "fr", source: "invitation" }],
});
assert.equal(invitationLocale.locale, "fr");
assert.equal(invitationLocale.source, "invitation");
const archivedPreference = resolveLocalePolicy({
activeLocales: locales,
defaultLocale: "tr",
candidates: [{ locale: "de", source: "user" }],
});
assert.equal(archivedPreference.locale, "tr");
assert.equal(archivedPreference.source, "instance");
const invalidDefault = resolveLocalePolicy({
activeLocales: locales,
defaultLocale: "de",
candidates: [],
});
assert.equal(invalidDefault.locale, "tr");
assert.equal(invalidDefault.source, "fallback");
const rtlLocale = resolveLocalePolicy({
activeLocales: locales,
defaultLocale: "tr",
candidates: [{ locale: "ar", source: "user" }],
});
assert.equal(rtlLocale.direction, "rtl");
console.log("I18n V2 phase 1 locale policy smoke passed.");