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}