get-user-locale
Version:
Returns a list of strings representing the user's preferred languages.
68 lines (53 loc) • 2.9 kB
text/typescript
/**
* @vitest-environment node
*/
import { describe, expect, it } from 'vitest';
import getUserLocaleDefault, { getUserLocale, getUserLocales } from './index.js';
// Simulate Node.js behavior prior to Node.js 21.2.0
Object.defineProperty(globalThis, 'navigator', {
value: undefined,
writable: true,
enumerable: false,
configurable: false,
});
it('exports getUserLocale() by default', () => {
expect(getUserLocaleDefault).toBeDefined();
expect(getUserLocaleDefault).toBe(getUserLocale);
});
describe('getUserLocale()', () => {
it('returns default fallback locale when no navigator properties are given', () => {
expect(getUserLocale()).toEqual('en-US');
});
it('returns default fallback locale when no navigator properties are given and getUserLocale is called with empty options', () => {
expect(getUserLocale({})).toEqual('en-US');
});
it('returns default fallback locale when no navigator properties are given and getUserLocale is called with useFallbackLocale = true option', () => {
expect(getUserLocale({ useFallbackLocale: true })).toEqual('en-US');
});
it('returns custom fallback locale when no navigator properties are given and getUserLocale is called with fallbackLocale option', () => {
expect(getUserLocale({ fallbackLocale: 'de-DE' })).toEqual('de-DE');
});
it('returns custom fallback locale when no navigator properties are given and getUserLocale is called with fallbackLocale and useFallbackLocale = true options', () => {
expect(getUserLocale({ fallbackLocale: 'de-DE', useFallbackLocale: true })).toEqual('de-DE');
});
it('returns null when no navigator properties are given and getUserLocale is called with useFallbackLocale = false option', () => {
expect(getUserLocale({ useFallbackLocale: false })).toEqual(null);
});
it('returns null when no navigator properties are given and getUserLocale is called with fallbackLocale and useFallbackLocale = false options', () => {
expect(getUserLocale({ fallbackLocale: 'de-DE', useFallbackLocale: false })).toEqual(null);
});
});
describe('getUserLocales()', () => {
it('returns default fallback locale when no navigator properties are given', () => {
expect(getUserLocales()).toEqual(['en-US']);
});
it('returns default fallback locale when no navigator properties are given and getUserLocales is called with empty options', () => {
expect(getUserLocales({})).toEqual(['en-US']);
});
it('returns custom fallback locale when no navigator properties are given and getUserLocales is called with fallbackLocale option', () => {
expect(getUserLocales({ fallbackLocale: 'de-DE' })).toEqual(['de-DE']);
});
it('returns empty array when no navigator properties are given and getUserLocales is called with useFallbackLocale = false option', () => {
expect(getUserLocales({ useFallbackLocale: false })).toEqual([]);
});
});