From 8efbee1ba9b4fc564f5a32fcbc101ff256c5555b Mon Sep 17 00:00:00 2001 From: "Max P." Date: Wed, 28 May 2025 18:09:24 +0200 Subject: [PATCH] test(i18n): add unit tests for localization functions - Add tests for `loadLocale` to verify translations load correctly - Add tests for `t` to ensure fallback behavior for missing keys - Add tests for `getCurrentLanguage` to validate language detection logic --- src/i18n/__tests__/i18n.test.ts | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/i18n/__tests__/i18n.test.ts diff --git a/src/i18n/__tests__/i18n.test.ts b/src/i18n/__tests__/i18n.test.ts new file mode 100644 index 0000000..f0a93bf --- /dev/null +++ b/src/i18n/__tests__/i18n.test.ts @@ -0,0 +1,32 @@ +import { assertEquals } from 'https://deno.land/std@0.224.0/assert/mod.ts'; +import { getCurrentLanguage, loadLocale, t } from '../mod.ts'; + +Deno.test('loadLocale lade Deutsche Übersetzung', async () => { + await loadLocale('de'); + assertEquals( + t('error_write_units'), + 'Fehler beim Schreiben der Units:', + ); + assertEquals( + t('unit_written_service', { path: '/tmp/service' }), + 'Service Unit geschrieben in: /tmp/service', + ); +}); + +Deno.test('t gibt den Schlüssel zurück, wenn dieser nicht gefunden wird', () => { + const result = t('non_existent_key'); + assertEquals(result, 'non_existent_key'); +}); + +Deno.test('getCurrentLanguage gibt die Fallback Sprache zurück', () => { + Deno.env.delete('SYSTEMD_TIMER_LANG'); + Deno.env.delete('LC_ALL'); + Deno.env.delete('LC_MESSAGES'); + Deno.env.delete('LANG'); + assertEquals(getCurrentLanguage(), 'en'); +}); + +Deno.test('getCurrentLanguage nutz die `SYSTEMD_TIMER_LANG`, wenn gesetzt', () => { + Deno.env.set('SYSTEMD_TIMER_LANG', 'de_DE.UTF-8'); + assertEquals(getCurrentLanguage(), 'de'); +});