1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import {detectLocale} from '../../../src/lib/detect-locale.js';
- const supportedLocales = ['en', 'es', 'pt-br', 'de', 'it'];
- Object.defineProperty(window.location,
- 'search',
- {value: '?name=val', configurable: true}
- );
- Object.defineProperty(window.navigator,
- 'language',
- {value: 'en-US', configurable: true}
- );
- describe('detectLocale', () => {
- test('uses locale from the URL when present', () => {
- Object.defineProperty(window.location,
- 'search',
- {value: '?locale=pt-br'}
- );
- expect(detectLocale(supportedLocales)).toEqual('pt-br');
- });
- test('is case insensitive', () => {
- Object.defineProperty(window.location,
- 'search',
- {value: '?locale=pt-BR'}
- );
- expect(detectLocale(supportedLocales)).toEqual('pt-br');
- });
- test('also accepts lang from the URL when present', () => {
- Object.defineProperty(window.location,
- 'search',
- {value: '?lang=it'}
- );
- expect(detectLocale(supportedLocales)).toEqual('it');
- });
- test('ignores unsupported locales', () => {
- Object.defineProperty(window.location,
- 'search',
- {value: '?lang=sv'}
- );
- expect(detectLocale(supportedLocales)).toEqual('en');
- });
- test('ignores other parameters', () => {
- Object.defineProperty(window.location,
- 'search',
- {value: '?enable=language'}
- );
- expect(detectLocale(supportedLocales)).toEqual('en');
- });
- test('uses navigator language property for default if supported', () => {
- Object.defineProperty(window.navigator,
- 'language',
- {value: 'pt-BR'}
- );
- expect(detectLocale(supportedLocales)).toEqual('pt-br');
- });
- test('ignores navigator language property if unsupported', () => {
- Object.defineProperty(window.navigator,
- 'language',
- {value: 'da'}
- );
- expect(detectLocale(supportedLocales)).toEqual('en');
- });
- test('works with an empty locale', () => {
- Object.defineProperty(window.location,
- 'search',
- {value: '?locale='}
- );
- expect(detectLocale(supportedLocales)).toEqual('en');
- });
- test('if multiple, uses the first locale', () => {
- Object.defineProperty(window.location,
- 'search',
- {value: '?locale=de&locale=en'}
- );
- expect(detectLocale(supportedLocales)).toEqual('de');
- });
- });
|