Commit 6aa646e
Changed files (2)
test
ui
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.
///