Repository URL to install this package:
|
Version:
5.0.0-rc.9 ▾
|
import { getLocale } from './init';
import { getNavigatorLocale, normalizeLocale, getLanguageCodeFromLocale } from './utils';
import cookie from './cookie';
jest.mock('./cookie');
describe('I18n Initialisation', () => {
test('getNavigatorLocale', () => {
Object.defineProperty(window.navigator, 'language', { value: 'fr-FR', configurable: true });
const navigatorLocale = getNavigatorLocale();
expect(navigatorLocale).toEqual('fr-FR');
});
test('normalizeLocale', () => {
expect(normalizeLocale('fr_FR')).toEqual('fr-FR');
});
test('getLanguageCodeFromLocale', () => {
expect(getLanguageCodeFromLocale('fr-FR')).toEqual('fr');
});
test('getLocale defaults to `en`', async () => {
const supportedLocales = ['en', 'de'];
const locale = await getLocale(supportedLocales);
expect(locale).toEqual('en');
});
test('getLocale uses the cookie locale first', async () => {
cookie.get.mockReturnValue('de');
Object.defineProperty(window.navigator, 'language', { value: 'fr-FR', configurable: true });
const supportedLocales = ['en', 'de'];
const locale = await getLocale(supportedLocales);
expect(locale).toEqual('de');
});
test('getLocale uses the navigator locale if there is no cookie', async () => {
jest.resetAllMocks();
Object.defineProperty(window.navigator, 'language', { value: 'fr-FR', configurable: true });
const supportedLocales = ['en', 'de', 'fr'];
const locale = await getLocale(supportedLocales);
expect(locale).toEqual('fr');
});
test('getLocale uses a supported language if there is no cookie', async () => {
jest.resetAllMocks();
Object.defineProperty(window.navigator, 'language', { value: 'en_GB', configurable: true });
const supportedLocales = ['en', 'en-GB', 'fr'];
const locale = await getLocale(supportedLocales);
expect(locale).toEqual('en-GB');
});
});