Spaces:
Running
Running
File size: 2,553 Bytes
f2bee8a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
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');
});
});
|