Commit 90bc857
Changed files (3)
app
lib
features
measurement_list
screens
test
features
measurement_list
app/lib/features/measurement_list/legacy_measurement_list.dart → app/lib/features/measurement_list/compact_measurement_list.dart
@@ -8,11 +8,10 @@ import 'package:health_data_store/health_data_store.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
-/// A old more compact [BloodPressureRecord] list, that lacks some of the new
-/// features.
-class LegacyMeasurementsList extends StatefulWidget {
- /// Create a more compact measurement list without all new features.
- const LegacyMeasurementsList({super.key,
+/// A more compact [BloodPressureRecord] list that is less verbose.
+class CompactMeasurementList extends StatefulWidget {
+ /// Create a more compact, less verbose measurement list.
+ const CompactMeasurementList({super.key,
required this.data,
});
@@ -20,10 +19,10 @@ class LegacyMeasurementsList extends StatefulWidget {
final List<FullEntry> data;
@override
- State<LegacyMeasurementsList> createState() => _LegacyMeasurementsListState();
+ State<CompactMeasurementList> createState() => _CompactMeasurementListState();
}
-class _LegacyMeasurementsListState extends State<LegacyMeasurementsList> {
+class _CompactMeasurementListState extends State<CompactMeasurementList> {
late final List<int> _tableElementsSizes;
app/lib/screens/home_screen.dart
@@ -1,7 +1,7 @@
import 'package:blood_pressure_app/data_util/blood_pressure_builder.dart';
import 'package:blood_pressure_app/data_util/entry_context.dart';
import 'package:blood_pressure_app/data_util/repository_builder.dart';
-import 'package:blood_pressure_app/features/measurement_list/legacy_measurement_list.dart';
+import 'package:blood_pressure_app/features/measurement_list/compact_measurement_list.dart';
import 'package:blood_pressure_app/features/measurement_list/measurement_list.dart';
import 'package:blood_pressure_app/features/statistics/measurement_graph.dart';
import 'package:blood_pressure_app/model/storage/intervall_store.dart';
@@ -63,7 +63,7 @@ class AppHome extends StatelessWidget {
final entries = FullEntryList.merged(records, notes, intakes);
entries.sort((a, b) => b.time.compareTo(a.time)); // newest first
if (context.select<Settings, bool>((s) => s.compactList)) {
- return LegacyMeasurementsList(
+ return CompactMeasurementList(
data: entries,
);
}
app/test/features/measurement_list/compact_measurement_list_test.dart
@@ -0,0 +1,58 @@
+import 'package:blood_pressure_app/features/measurement_list/compact_measurement_list.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_gen/gen_l10n/app_localizations.dart';
+import 'package:flutter_test/flutter_test.dart';
+
+import '../../model/export_import/record_formatter_test.dart';
+import '../../util.dart';
+
+void main() {
+ testWidgets('shows header and no data when empty', (WidgetTester tester) async {
+ await tester.pumpWidget(materialApp(const CompactMeasurementList(data: [])));
+ final localizations = await AppLocalizations.delegate.load(const Locale('en'));
+
+ expect(find.text(localizations.time), findsOneWidget);
+ expect(find.text(localizations.sysShort), findsOneWidget);
+ expect(find.text(localizations.diaShort), findsOneWidget);
+ expect(find.text(localizations.pulShort), findsOneWidget);
+ expect(find.text(localizations.notes), findsOneWidget);
+
+ expect(find.text(localizations.errNoData), findsOneWidget);
+ });
+
+ testWidgets('shows passed tiles', (WidgetTester tester) async {
+ await tester.pumpWidget(materialApp(CompactMeasurementList(data: [
+ mockEntry(sys: 123, dia: 45, pul: 67, note: 'testnote'),
+ ])));
+ final localizations = await AppLocalizations.delegate.load(const Locale('en'));
+
+ expect(find.text(localizations.time), findsOneWidget);
+ expect(find.text(localizations.sysShort), findsOneWidget);
+ expect(find.text(localizations.diaShort), findsOneWidget);
+ expect(find.text(localizations.pulShort), findsOneWidget);
+ expect(find.text(localizations.notes), findsOneWidget);
+
+ expect(find.text(localizations.errNoData), findsNothing);
+ expect(find.byType(Dismissible), findsOneWidget);
+ expect(find.text('123'), findsOneWidget);
+ expect(find.text('45'), findsOneWidget);
+ expect(find.text('67'), findsOneWidget);
+ expect(find.text('testnote'), findsOneWidget);
+ });
+
+ // TODO: test delete once storage logic is mockable (extract add and delete to
+ // object in context)
+ /*testWidgets('initializes deletion when swiping from right to left', (WidgetTester tester) async {
+ await tester.pumpWidget(materialApp(CompactMeasurementList(data: [
+ mockEntry(sys: 123, dia: 45, pul: 67, note: 'testnote'),
+ ])));
+
+ expect(find.byType(AddEntryDialoge), findsNothing);
+ expect(find.byIcon(Icons.delete), findsNothing);
+
+ await tester.drag(find.text('45'), const Offset(-500.0, 0));
+ await tester.pumpAndSettle();
+ expect(find.text('Confirm deletion'), findsOneWidget);
+ });*/
+ // TODO: opens edit when swiping from left to right
+}