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
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') |
|
}) |
|
})
|
|
|