Files
emergency/test/core/country_locale_map_test.dart
T
rootandClaude Sonnet 5 e3aa088bc2 Notrufnummern-Datenbasis, Ländererkennung, State-Management und Lokalisierung (AP1-AP7)
Implementiert den kompletten Kern-Flow der Emergency App gemäß docs/plan.md:
- Notrufnummern-Datenbasis für 199 Länder + Modelle/Repository (AP1)
- DialerService für tel:-Notrufe ohne Auto-Dial (AP2)
- Statisches UI mit Panik-Button-Fallback (AP3)
- Priorisierte Ländererkennung: SIM/Netz -> GPS/Geocoding -> Cache (AP4)
- EmergencyProvider verdrahtet Repository/LocationService mit der UI (AP5)
- Manuelle Länderauswahl als Fallback samt eigener Priorität (AP6)
- UI-Lokalisierung (de/en/fr/es), an erkanntes Land gekoppelt (AP7)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-24 11:29:38 +02:00

45 lines
1.8 KiB
Dart

import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:emergency/core/country_locale_map.dart';
import 'package:emergency/l10n/app_localizations.dart';
void main() {
group('resolveAppLocale', () {
// Realistische Basis: die tatsächlich per ARB generierten Locales
// (docs/plan.md, Abschnitt 8, AP7), statt einer synthetischen Liste.
final supportedLocales = AppLocalizations.supportedLocales;
test('bekanntes Land mit unterstützter Sprache liefert diese Sprache (DE -> de)', () {
expect(resolveAppLocale('DE', supportedLocales), const Locale('de'));
});
test('Ländercode ist case-insensitiv (de -> de)', () {
expect(resolveAppLocale('de', supportedLocales), const Locale('de'));
});
test(
'bekanntes Land mit einer NICHT unterstützten Sprache fällt auf Englisch zurück (JP -> ja, nicht unterstützt)',
() {
expect(countryLocaleMap['JP'], 'ja');
expect(supportedLocales.any((l) => l.languageCode == 'ja'), isFalse);
expect(resolveAppLocale('JP', supportedLocales), const Locale('en'));
},
);
test('unbekannter/nicht gemappter Ländercode fällt auf Englisch zurück', () {
expect(countryLocaleMap.containsKey('ZZ'), isFalse);
expect(resolveAppLocale('ZZ', supportedLocales), const Locale('en'));
});
test('country == null (noch nicht ermittelt) fällt auf Englisch zurück', () {
expect(resolveAppLocale(null, supportedLocales), const Locale('en'));
});
test('weitere unterstützte Sprachen werden ebenfalls korrekt aufgelöst (FR -> fr, ES -> es)', () {
expect(resolveAppLocale('FR', supportedLocales), const Locale('fr'));
expect(resolveAppLocale('ES', supportedLocales), const Locale('es'));
});
});
}