Spaces:
Running
Running
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'); | |
}); | |
}); | |