import 'package:drift/native.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:dmc_app/services/database/app_database.dart'; import 'package:dmc_app/services/database/app_settings_repository.dart'; import 'package:dmc_app/transport/connection_type.dart'; void main() { late AppDatabase db; late AppSettingsRepository repository; setUp(() { db = AppDatabase.forTesting(NativeDatabase.memory()); repository = AppSettingsRepository(db); }); tearDown(() => db.close()); test('load ohne vorherige Werte liefert beides null', () async { final settings = await repository.load(); expect(settings.activeDroneProfileId, isNull); expect(settings.currentMissionId, isNull); }); test('setActiveDroneProfileId und setCurrentMissionId sind unabhaengig voneinander', () async { await repository.setActiveDroneProfileId(3); await repository.setCurrentMissionId(7); final settings = await repository.load(); expect(settings.activeDroneProfileId, 3); expect(settings.currentMissionId, 7); }); test('erneutes Setzen eines Werts laesst den anderen unangetastet', () async { await repository.setActiveDroneProfileId(1); await repository.setCurrentMissionId(2); await repository.setCurrentMissionId(9); final settings = await repository.load(); expect(settings.activeDroneProfileId, 1); expect(settings.currentMissionId, 9); }); test('Wert kann auf null zurueckgesetzt werden', () async { await repository.setCurrentMissionId(5); await repository.setCurrentMissionId(null); final settings = await repository.load(); expect(settings.currentMissionId, isNull); }); test('Verbindungseinstellungen: Standard ist kein Geraet, Autoconnect an', () async { final settings = await repository.load(); expect(settings.connectionDeviceAddress, isNull); expect(settings.connectionAutoConnect, isTrue); }); test('setConnectionDeviceAddress merkt sich die MAC-Adresse', () async { await repository.setConnectionDeviceAddress('AA:BB:CC:DD:EE:FF'); expect( await repository.loadConnectionDeviceAddress(), 'AA:BB:CC:DD:EE:FF', ); }); test('setConnectionAutoConnect(false) bleibt unabhaengig von der MAC-Adresse', () async { await repository.setConnectionDeviceAddress('AA:BB:CC:DD:EE:FF'); await repository.setConnectionAutoConnect(false); final settings = await repository.load(); expect(settings.connectionDeviceAddress, 'AA:BB:CC:DD:EE:FF'); expect(settings.connectionAutoConnect, isFalse); }); test('Verbindungsart: Standard ist WiFi, Port-Vorgabe 14550', () async { final settings = await repository.load(); expect(settings.connectionType, ConnectionType.wifi); expect(settings.connectionWifiHost, isNull); expect(settings.connectionWifiPort, 14550); }); test('setConnectionType merkt sich die gewaehlte Verbindungsart', () async { await repository.setConnectionType(ConnectionType.wifi); final settings = await repository.load(); expect(settings.connectionType, ConnectionType.wifi); }); test('setConnectionWifiHost/-Port merken sich Host und Port unabhaengig', () async { await repository.setConnectionWifiHost('192.168.4.1'); await repository.setConnectionWifiPort(15000); expect(await repository.loadConnectionWifiHost(), '192.168.4.1'); expect(await repository.loadConnectionWifiPort(), 15000); }); test('setConnectionWifiHost(null) loescht die Vorgabe wieder', () async { await repository.setConnectionWifiHost('192.168.4.1'); await repository.setConnectionWifiHost(null); expect(await repository.loadConnectionWifiHost(), isNull); }); test('SSID-Praefix: Standard ist "mLRS-"', () async { final settings = await repository.load(); expect(settings.connectionWifiSsidPrefix, 'mLRS-'); }); test('setConnectionWifiSsidPrefix merkt sich den Praefix', () async { await repository.setConnectionWifiSsidPrefix('mLRS-1234'); expect(await repository.loadConnectionWifiSsidPrefix(), 'mLRS-1234'); }); test('gemerkte SSID: Standard ist null (noch nie verbunden)', () async { final settings = await repository.load(); expect(settings.connectionWifiLastSsid, isNull); }); test('setConnectionWifiLastSsid merkt sich die verbundene SSID', () async { await repository.setConnectionWifiLastSsid('mLRS-ABCD'); expect(await repository.loadConnectionWifiLastSsid(), 'mLRS-ABCD'); }); test('setConnectionWifiLastSsid(null) loescht die Erinnerung wieder', () async { await repository.setConnectionWifiLastSsid('mLRS-ABCD'); await repository.setConnectionWifiLastSsid(null); expect(await repository.loadConnectionWifiLastSsid(), isNull); }); }