main
 1import 'package:blood_pressure_app/features/measurement_list/measurement_list.dart';
 2import 'package:blood_pressure_app/features/measurement_list/measurement_list_entry.dart';
 3import 'package:blood_pressure_app/model/storage/settings_store.dart';
 4import 'package:flutter/material.dart';
 5import 'package:blood_pressure_app/l10n/app_localizations.dart';
 6import 'package:flutter_test/flutter_test.dart';
 7
 8import '../../model/export_import/record_formatter_test.dart';
 9import '../../util.dart';
10
11void main() {
12  testWidgets('contains all elements in time range', (tester) async {
13    await tester.pumpWidget(materialApp(
14      MeasurementList(
15        entries: [
16          mockEntry(time: DateTime(2020), sys: 2020),
17          mockEntry(time: DateTime(2021), sys: 2021),
18          mockEntry(time: DateTime(2022), sys: 2022),
19          mockEntry(time: DateTime(2023), sys: 2023),
20        ],
21      ),
22    ));
23    expect(find.byType(MeasurementListRow), findsNWidgets(4));
24    expect(find.text('2020'), findsOneWidget);
25    expect(find.text('2021'), findsOneWidget);
26    expect(find.text('2022'), findsOneWidget);
27    expect(find.text('2023'), findsOneWidget);
28  });
29  testWidgets('entries are ordered in reversed passed order', (tester) async {
30    await tester.pumpWidget(materialApp(
31      MeasurementList(
32        entries: [
33          mockEntry(time: DateTime.fromMillisecondsSinceEpoch(4000), sys: 1),
34          mockEntry(time: DateTime.fromMillisecondsSinceEpoch(2000), sys: 2),
35          mockEntry(time: DateTime.fromMillisecondsSinceEpoch(1000), sys: 3),
36        ],
37      ),
38    ));
39    expect(find.byType(MeasurementListRow), findsNWidgets(3));
40    // coordinates starting at top left
41    final top = await tester.getCenter(find.text('1')).dy;
42    final center = await tester.getCenter(find.text('2')).dy;
43    final bottom = await tester.getCenter(find.text('3')).dy;
44    expect(bottom, greaterThan(center));
45    expect(top, lessThan(center));
46  });
47  testWidgets('entries are ordered in reversed chronological order', (tester) async {
48    final localizations = await AppLocalizations.delegate.load(const Locale('en'));
49    await tester.pumpWidget(materialApp(
50      MeasurementList(
51        entries: [
52          mockEntry(time: DateTime.fromMillisecondsSinceEpoch(2000), sys: 2),
53        ],
54      ),
55      settings: Settings(
56        sysColor: Colors.blue,
57        diaColor: Colors.purple,
58        pulColor: Colors.indigo,
59      )
60    ));
61    expect(
62      find.byWidgetPredicate((widget) =>
63        widget is Text
64        && widget.data == localizations.sysLong
65        && widget.style?.color == Colors.blue),
66      findsOneWidget,
67    );
68    expect(
69      find.byWidgetPredicate((widget) =>
70        widget is Text
71        && widget.data == localizations.diaLong
72        && widget.style?.color == Colors.purple),
73      findsOneWidget,
74    );
75    expect(
76      find.byWidgetPredicate((widget) =>
77        widget is Text
78        && widget.data == localizations.pulLong
79        && widget.style?.color == Colors.indigo),
80      findsOneWidget,
81    );
82  });
83}