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>
58 lines
1.6 KiB
Dart
58 lines
1.6 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
import 'package:emergency/models/country.dart';
|
|
import 'package:emergency/models/emergency_type.dart';
|
|
|
|
void main() {
|
|
group('Country.fromJson', () {
|
|
test('parst ein Land mit mehreren Notrufnummern korrekt', () {
|
|
final country = Country.fromJson('DE', {
|
|
'name_en': 'Germany',
|
|
'name_de': 'Deutschland',
|
|
'flag': '🇩🇪',
|
|
'numbers': [
|
|
{
|
|
'type': 'general',
|
|
'number': '112',
|
|
'label_de': 'Notruf',
|
|
'label_en': 'Emergency',
|
|
},
|
|
{
|
|
'type': 'police',
|
|
'number': '110',
|
|
'label_de': 'Polizei',
|
|
'label_en': 'Police',
|
|
},
|
|
],
|
|
});
|
|
|
|
expect(country.isoCode, 'DE');
|
|
expect(country.nameDe, 'Deutschland');
|
|
expect(country.nameEn, 'Germany');
|
|
expect(country.flag, '🇩🇪');
|
|
expect(country.numbers, hasLength(2));
|
|
expect(country.numbers[0].type, EmergencyType.general);
|
|
expect(country.numbers[1].type, EmergencyType.police);
|
|
});
|
|
|
|
test('parst ein Land mit nur einer Notrufnummer korrekt', () {
|
|
final country = Country.fromJson('US', {
|
|
'name_en': 'United States',
|
|
'name_de': 'Vereinigte Staaten',
|
|
'flag': '🇺🇸',
|
|
'numbers': [
|
|
{
|
|
'type': 'general',
|
|
'number': '911',
|
|
'label_de': 'Notruf',
|
|
'label_en': 'Emergency',
|
|
},
|
|
],
|
|
});
|
|
|
|
expect(country.numbers, hasLength(1));
|
|
expect(country.numbers.single.number, '911');
|
|
});
|
|
});
|
|
}
|