agent-ecosystem/test/features/localization/core/localePolicy.test.ts
infiniti 47cea58543
feat(i18n): add expanded app locale support
* feat(i18n): add CJK app locale support

* feat(i18n): add Spanish Hindi and Portuguese locales

* feat(i18n): add French Arabic and Bengali locales

* feat(i18n): add Urdu Indonesian and German locales

* feat(i18n): add landing locales for Bengali Urdu and Indonesian

* fix(i18n): address locale review feedback

---------

Co-authored-by: iliya <iliyazelenkog@gmail.com>
2026-05-24 22:10:47 +03:00

54 lines
2.9 KiB
TypeScript

import {
extractPrimaryLocaleSubtag,
normalizeAppLocalePreference,
resolveAppLocale,
} from '@features/localization/core/domain/localePolicy';
import { describe, expect, it } from 'vitest';
describe('localePolicy', () => {
it('normalizes unsupported preferences to system', () => {
expect(normalizeAppLocalePreference('uk')).toBe('system');
expect(normalizeAppLocalePreference(null)).toBe('system');
expect(normalizeAppLocalePreference('en')).toBe('en');
expect(normalizeAppLocalePreference('ru')).toBe('ru');
expect(normalizeAppLocalePreference('zh')).toBe('zh');
expect(normalizeAppLocalePreference('ja')).toBe('ja');
expect(normalizeAppLocalePreference('ko')).toBe('ko');
expect(normalizeAppLocalePreference('es')).toBe('es');
expect(normalizeAppLocalePreference('hi')).toBe('hi');
expect(normalizeAppLocalePreference('pt')).toBe('pt');
expect(normalizeAppLocalePreference('fr')).toBe('fr');
expect(normalizeAppLocalePreference('ar')).toBe('ar');
expect(normalizeAppLocalePreference('bn')).toBe('bn');
expect(normalizeAppLocalePreference('ur')).toBe('ur');
expect(normalizeAppLocalePreference('id')).toBe('id');
expect(normalizeAppLocalePreference('de')).toBe('de');
});
it('extracts the primary locale subtag', () => {
expect(extractPrimaryLocaleSubtag('en-US')).toBe('en');
expect(extractPrimaryLocaleSubtag('EN_us')).toBe('en');
expect(extractPrimaryLocaleSubtag('')).toBeNull();
});
it('resolves system locale to supported primary locale', () => {
expect(resolveAppLocale({ preference: 'system', systemLocale: 'en-US' })).toBe('en');
expect(resolveAppLocale({ preference: 'system', systemLocale: 'ru-RU' })).toBe('ru');
expect(resolveAppLocale({ preference: 'system', systemLocale: 'zh-CN' })).toBe('zh');
expect(resolveAppLocale({ preference: 'system', systemLocale: 'ja-JP' })).toBe('ja');
expect(resolveAppLocale({ preference: 'system', systemLocale: 'ko-KR' })).toBe('ko');
expect(resolveAppLocale({ preference: 'system', systemLocale: 'es-ES' })).toBe('es');
expect(resolveAppLocale({ preference: 'system', systemLocale: 'hi-IN' })).toBe('hi');
expect(resolveAppLocale({ preference: 'system', systemLocale: 'pt-BR' })).toBe('pt');
expect(resolveAppLocale({ preference: 'system', systemLocale: 'fr-FR' })).toBe('fr');
expect(resolveAppLocale({ preference: 'system', systemLocale: 'ar-SA' })).toBe('ar');
expect(resolveAppLocale({ preference: 'system', systemLocale: 'bn-BD' })).toBe('bn');
expect(resolveAppLocale({ preference: 'system', systemLocale: 'ur-PK' })).toBe('ur');
expect(resolveAppLocale({ preference: 'system', systemLocale: 'id-ID' })).toBe('id');
expect(resolveAppLocale({ preference: 'system', systemLocale: 'de-DE' })).toBe('de');
});
it('falls back when the system locale is not supported yet', () => {
expect(resolveAppLocale({ preference: 'system', systemLocale: 'uk-UA' })).toBe('en');
});
});