Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@doodle/i18n / src / init.spec.js
Size: Mime:
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');
  });
});