Files
dmc/app/test/services/app_settings_repository_test.dart
T

140 lines
4.7 KiB
Dart

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);
});
}