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>
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
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'));
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user