Commit ca2f401

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2024-04-16 20:45:57
add missing medications to mock repo (12 failing)
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent a2e2a8c
Changed files (1)
app
test
ui
components
app/test/ui/components/util.dart
@@ -1,3 +1,5 @@
+import 'dart:async';
+
 import 'package:blood_pressure_app/model/blood_pressure/medicine/intake_history.dart';
 import 'package:blood_pressure_app/model/blood_pressure/model.dart';
 import 'package:blood_pressure_app/model/storage/storage.dart';
@@ -127,9 +129,13 @@ Future<void> loadDialoge(WidgetTester tester, void Function(BuildContext context
 
 /// Get empty mock med repo.
 // Using a instance of the real repository somehow causes a deadlock in tests.
-MedicineRepository medRepo([List<Medicine>? meds]) => MockMedRepo();
+MedicineRepository medRepo([List<Medicine>? meds]) => MockMedRepo(meds);
 
 class MockMedRepo implements MedicineRepository {
+  MockMedRepo(List<Medicine>? meds) {
+    if (meds != null) _meds.addAll(meds);
+  }
+
   final List<Medicine> _meds = [];
 
   @override
@@ -174,3 +180,21 @@ Future<HealthDataStore> _getHealthDateStore() async {
   return _db!;
 }
 
+extension PumpUntilFound on WidgetTester {
+  Future<void> pumpUntilFound(
+    Finder finder, {
+    Duration timeout = const Duration(seconds: 5),
+  }) async {
+    bool timerDone = false;
+    final timer = Timer(timeout, () {
+      timerDone = true;
+      fail('Timout without finding widget: $finder');
+    });
+    while (!timerDone) {
+      await pump();
+      if (any(finder)) break;
+    }
+    timer.cancel();
+  }
+}
+