mirror of
https://github.com/BeamMP/BeamMP-Website.git
synced 2026-10-25 21:40:04 +00:00
Add Vitest tests for the languages, router, footer and pages, and a lint:check script
This commit is contained in:
1 parent
9f20c38abe
commit
77c1d01025
11 files changed
+2095
-6
No files matched your search
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
* The helpers that build and switch the /<language>/... paths. Every link on
|
||||
* the site goes through these, so a slip here breaks navigation everywhere.
|
||||
*/
|
||||
|
||||
import { getCurrentLocale, getLocalizedPath, switchLocale } from '@/utils/locale'
|
||||
|
||||
afterEach(() => {
|
||||
delete window.i18n
|
||||
})
|
||||
|
||||
describe('getLocalizedPath', () => {
|
||||
test('puts the language first, with or without a leading slash on the page', () => {
|
||||
expect(getLocalizedPath('servers', 'de')).toBe('/de/servers')
|
||||
expect(getLocalizedPath('/servers', 'de')).toBe('/de/servers')
|
||||
})
|
||||
|
||||
test('never doubles a slash', () => {
|
||||
expect(getLocalizedPath('//servers', 'fr')).toBe('/fr/servers')
|
||||
expect(getLocalizedPath('', 'fr')).toBe('/fr/')
|
||||
})
|
||||
|
||||
test('uses the saved language when none is given, and English if nothing is saved', () => {
|
||||
expect(getLocalizedPath('about')).toBe('/en/about')
|
||||
localStorage.setItem('lang', 'it')
|
||||
expect(getLocalizedPath('about')).toBe('/it/about')
|
||||
})
|
||||
|
||||
test('the language the app is showing wins over the saved one', () => {
|
||||
localStorage.setItem('lang', 'it')
|
||||
window.i18n = { global: { locale: { value: 'ru' } } }
|
||||
expect(getLocalizedPath('about')).toBe('/ru/about')
|
||||
})
|
||||
})
|
||||
|
||||
describe('getCurrentLocale', () => {
|
||||
test('reads a plain string locale as well as a ref', () => {
|
||||
window.i18n = { global: { locale: 'es' } }
|
||||
expect(getCurrentLocale()).toBe('es')
|
||||
window.i18n = { global: { locale: { value: 'zh' } } }
|
||||
expect(getCurrentLocale()).toBe('zh')
|
||||
})
|
||||
})
|
||||
|
||||
describe('switchLocale', () => {
|
||||
test('swaps the language and keeps the page', () => {
|
||||
expect(switchLocale('de', '/en/servers')).toBe('/de/servers')
|
||||
expect(switchLocale('fr', '/ru/about')).toBe('/fr/about')
|
||||
})
|
||||
|
||||
test('keeps deeper paths', () => {
|
||||
expect(switchLocale('de', '/en/docs/getting-started')).toBe('/de/docs/getting-started')
|
||||
})
|
||||
|
||||
test('the home page of one language is the home page of the next', () => {
|
||||
expect(switchLocale('es', '/en')).toBe('/es')
|
||||
expect(switchLocale('es', '/en/')).toBe('/es')
|
||||
})
|
||||
|
||||
test('drops the old query string rather than carrying it across', () => {
|
||||
expect(switchLocale('de', '/en/servers?search=drift')).toBe('/de/servers')
|
||||
})
|
||||
|
||||
test('adds a language to a path that has none', () => {
|
||||
expect(switchLocale('de', '/servers')).toBe('/de/servers')
|
||||
})
|
||||
})
|
||||
Reference in new issue
Block a user