You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

69 lines
2.6 KiB

import { describe, expect, it } from 'vitest'
import {
pickLanguageToolCodeForTranslateTarget,
translateCodeHasLanguageToolPairing,
translateTargetToLanguageToolCode
} from '@/lib/languagetool-language-order'
import { buildLabLanguageToolPreferenceList } from '@/lib/trinity-languages'
describe('translateTargetToLanguageToolCode', () => {
it('maps ISO codes to LT variants', () => {
expect(translateTargetToLanguageToolCode('ja')).toBe('ja-JP')
expect(translateTargetToLanguageToolCode('de')).toBe('de-DE')
expect(translateTargetToLanguageToolCode('zh-Hans')).toBe('zh-CN')
expect(translateTargetToLanguageToolCode('en')).toBe('en-US')
expect(translateTargetToLanguageToolCode('en-gb')).toBe('en-GB')
})
})
describe('translateCodeHasLanguageToolPairing', () => {
it('is true for mapped translate codes', () => {
expect(translateCodeHasLanguageToolPairing('tr')).toBe(true)
expect(translateCodeHasLanguageToolPairing('ja')).toBe(true)
expect(translateCodeHasLanguageToolPairing('en-gb')).toBe(true)
})
it('is false for unknown codes', () => {
expect(translateCodeHasLanguageToolPairing('zz')).toBe(false)
})
})
describe('pickLanguageToolCodeForTranslateTarget', () => {
it('returns mapped code when it appears in lab LT list', () => {
const lt = buildLabLanguageToolPreferenceList('en', [
{ code: 'de', name: 'German' },
{ code: 'fr', name: 'French' }
])
expect(pickLanguageToolCodeForTranslateTarget('de', lt)).toBe('de-DE')
})
})
describe('buildLabLanguageToolPreferenceList', () => {
it('only lists LT codes for installed translate targets (no extra UI language)', () => {
const list = buildLabLanguageToolPreferenceList('de', [
{ code: 'fr', name: 'French' },
{ code: 'es', name: 'Spanish' }
])
expect(list).toEqual(['fr-FR', 'es'])
})
it('prepends UI language and en-US when those targets are installed', () => {
const list = buildLabLanguageToolPreferenceList('de', [
{ code: 'en', name: 'English' },
{ code: 'de', name: 'German' },
{ code: 'fr', name: 'French' }
])
expect(list[0]).toBe('de-DE')
expect(list[1]).toBe('en-US')
expect(list).toEqual(['de-DE', 'en-US', 'fr-FR'])
})
it('includes en-GB in the lab LT list when British English is a translate target', () => {
const list = buildLabLanguageToolPreferenceList('en', [
{ code: 'en', name: 'English (US)' },
{ code: 'en-gb', name: 'English (UK)' },
{ code: 'de', name: 'German' }
])
expect(list).toContain('en-US')
expect(list).toContain('en-GB')
})
})