mirror of
https://github.com/cupcakearmy/svelte-i18n.git
synced 2024-11-16 09:59:58 +01:00
test: 💍 add tests for getClientLocale precedence
This commit is contained in:
parent
e56bfbd333
commit
21afa3d6b1
@ -27,7 +27,9 @@ const getFromQueryString = (queryString: string, key: string) => {
|
||||
|
||||
const getFirstMatch = (base: string, pattern: RegExp) => {
|
||||
const match = pattern.exec(base)
|
||||
// istanbul ignore if
|
||||
if (!match) return null
|
||||
// istanbul ignore else
|
||||
return match[1] || null
|
||||
}
|
||||
|
||||
|
@ -19,30 +19,96 @@ describe('getting client locale', () => {
|
||||
|
||||
test('gets the locale based on the passed hash parameter', () => {
|
||||
window.location.hash = '#locale=en-US&lang=pt-BR'
|
||||
expect(getClientLocale({ hash: 'lang' })).toBe('pt-BR')
|
||||
expect(
|
||||
getClientLocale({
|
||||
hash: 'lang',
|
||||
})
|
||||
).toBe('pt-BR')
|
||||
})
|
||||
|
||||
test('gets the locale based on the passed search parameter', () => {
|
||||
window.location.search = '?locale=en-US&lang=pt-BR'
|
||||
expect(getClientLocale({ search: 'lang' })).toBe('pt-BR')
|
||||
expect(
|
||||
getClientLocale({
|
||||
search: 'lang',
|
||||
})
|
||||
).toBe('pt-BR')
|
||||
})
|
||||
|
||||
test('gets the locale based on the navigator language', () => {
|
||||
expect(getClientLocale({ navigator: true })).toBe(window.navigator.language)
|
||||
expect(
|
||||
getClientLocale({
|
||||
navigator: true,
|
||||
})
|
||||
).toBe(window.navigator.language)
|
||||
})
|
||||
|
||||
test('gets the locale based on the pathname', () => {
|
||||
window.location.pathname = '/en-US/foo/'
|
||||
expect(getClientLocale({ pathname: /^\/(.*?)\// })).toBe('en-US')
|
||||
expect(
|
||||
getClientLocale({
|
||||
pathname: /^\/(.*?)\//,
|
||||
})
|
||||
).toBe('en-US')
|
||||
})
|
||||
|
||||
test('gets the locale base on the hostname', () => {
|
||||
window.location.hostname = 'pt.example.com'
|
||||
expect(getClientLocale({ hostname: /^(.*?)\./ })).toBe('pt')
|
||||
expect(
|
||||
getClientLocale({
|
||||
hostname: /^(.*?)\./,
|
||||
})
|
||||
).toBe('pt')
|
||||
})
|
||||
|
||||
test('hostname precedes pathname', () => {
|
||||
window.location.pathname = '/en-US/foo/'
|
||||
window.location.hostname = 'pt.example.com'
|
||||
expect(
|
||||
getClientLocale({
|
||||
hostname: /^(.*?)\./,
|
||||
pathname: /^\/(.*?)\//,
|
||||
})
|
||||
).toBe('pt')
|
||||
})
|
||||
|
||||
test('pathname precedes navigator', () => {
|
||||
window.location.pathname = '/it-IT/foo/'
|
||||
expect(
|
||||
getClientLocale({
|
||||
pathname: /^\/(.*?)\//,
|
||||
navigator: true,
|
||||
})
|
||||
).toBe('it-IT')
|
||||
})
|
||||
|
||||
test('navigator precedes search', () => {
|
||||
window.location.search = '?lang=pt-BR'
|
||||
expect(
|
||||
getClientLocale({
|
||||
navigator: true,
|
||||
search: 'lang',
|
||||
})
|
||||
).toBe('en-US')
|
||||
})
|
||||
|
||||
test('search precedes hash', () => {
|
||||
window.location.hash = '#lang=pt-BR'
|
||||
window.location.search = '?lang=it-IT'
|
||||
expect(
|
||||
getClientLocale({
|
||||
hash: 'lang',
|
||||
search: 'lang',
|
||||
})
|
||||
).toBe('it-IT')
|
||||
})
|
||||
|
||||
test('returns null if no locale was found', () => {
|
||||
expect(getClientLocale({ search: 'lang' })).toBe(null)
|
||||
expect(
|
||||
getClientLocale({
|
||||
search: 'lang',
|
||||
})
|
||||
).toBe(null)
|
||||
})
|
||||
})
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user