Commit 6aa646e

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2024-01-13 15:44:27
add test for opening the correct edit dialoge
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent 43aba4b
Changed files (2)
test/ui/components/measurement_list_entry_test.dart
@@ -1,3 +1,4 @@
+import 'package:blood_pressure_app/components/dialoges/add_measurement_dialoge.dart';
 import 'package:blood_pressure_app/components/measurement_list/measurement_list_entry.dart';
 import 'package:blood_pressure_app/model/blood_pressure/needle_pin.dart';
 import 'package:blood_pressure_app/model/blood_pressure/record.dart';
@@ -61,5 +62,30 @@ void main() {
       await widgetTester.pumpAndSettle();
       expect(find.text('null'), findsNothing);
     });
+    testWidgets('should open edit dialoge', (widgetTester) async {
+      await widgetTester.pumpWidget(appBase(MeasurementListRow(
+        settings: Settings(), record: mockRecord(time: DateTime(2023),
+          sys:1, dia: 2, pul: 3, note: 'testTxt',),),),);
+      expect(find.byIcon(Icons.expand_more), findsOneWidget);
+      await widgetTester.tap(find.byIcon(Icons.expand_more));
+      await widgetTester.pumpAndSettle();
+
+      expect(find.byIcon(Icons.edit), findsOneWidget);
+      await widgetTester.tap(find.byIcon(Icons.edit));
+      await widgetTester.pumpAndSettle();
+
+      /// Finder of text widgets that are descendants of the AddEntryDialoge.
+      Finder descTxt(String txt) => find.descendant(
+        of: find.byType(AddEntryDialoge),
+        matching: find.text(txt),
+      );
+
+      expect(find.byType(AddEntryDialoge), findsOneWidget);
+      expect(descTxt('testTxt'), findsOneWidget);
+      expect(descTxt('1'), findsOneWidget);
+      expect(descTxt('2'), findsOneWidget);
+      expect(descTxt('3'), findsOneWidget);
+
+    });
   });
 }
test/ui/components/util.dart
@@ -1,13 +1,51 @@
+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';
 import 'package:flutter/material.dart';
 import 'package:flutter_gen/gen_l10n/app_localizations.dart';
 import 'package:flutter_test/flutter_test.dart';
+import 'package:provider/provider.dart';
 
+import '../../ram_only_implementations.dart';
 
+/// Create a root material widget with localizations.
 Widget materialApp(Widget child) => MaterialApp(
-    localizationsDelegates: const [AppLocalizations.delegate,],
-    locale: const Locale('en'),
-    home: Scaffold(body:child),
+  localizationsDelegates: AppLocalizations.localizationsDelegates,
+  locale: const Locale('en'),
+  home: Scaffold(body:child),
+);
+
+/// Create a root material widget with localizations and all providers but
+/// without a app root.
+Widget appBase(Widget child, {
+  Settings? settings,
+  ExportSettings? exportSettings,
+  CsvExportSettings? csvExportSettings,
+  PdfExportSettings? pdfExportSettings,
+  IntervallStoreManager? intervallStoreManager,
+  IntakeHistory? intakeHistory,
+  BloodPressureModel? model,
+}) {
+  model ??= RamBloodPressureModel();
+  settings ??= Settings();
+  exportSettings ??= ExportSettings();
+  csvExportSettings ??= CsvExportSettings();
+  pdfExportSettings ??= PdfExportSettings();
+  intakeHistory ??= IntakeHistory([]);
+  intervallStoreManager ??= IntervallStoreManager(IntervallStorage(), IntervallStorage(), IntervallStorage());
+  return MultiProvider(
+    providers: [
+      ChangeNotifierProvider(create: (_) => settings),
+      ChangeNotifierProvider(create: (_) => exportSettings),
+      ChangeNotifierProvider(create: (_) => csvExportSettings),
+      ChangeNotifierProvider(create: (_) => pdfExportSettings),
+      ChangeNotifierProvider(create: (_) => intakeHistory),
+      ChangeNotifierProvider(create: (_) => intervallStoreManager),
+      ChangeNotifierProvider<BloodPressureModel>(create: (_) => model!),
+    ],
+    child: materialApp(child),
   );
+}
 
 /// Open a dialoge through a button press.
 ///