main
1import 'package:blood_pressure_app/app.dart';
2import 'package:blood_pressure_app/features/input/add_entry_dialogue.dart';
3import 'package:blood_pressure_app/features/measurement_list/measurement_list_entry.dart';
4import 'package:blood_pressure_app/features/settings/tiles/color_picker_list_tile.dart';
5import 'package:blood_pressure_app/screens/home_screen.dart';
6import 'package:flutter/material.dart';
7import 'package:blood_pressure_app/l10n/app_localizations.dart';
8import 'package:flutter_test/flutter_test.dart';
9import 'package:health_data_store/health_data_store.dart';
10import 'package:integration_test/integration_test.dart';
11
12import '../test/features/settings/tiles/color_picker_list_tile_test.dart';
13import 'util.dart';
14
15void main() {
16 IntegrationTestWidgetsFlutterBinding.ensureInitialized();
17 testWidgets('Can enter value only measurements', (WidgetTester tester) async {
18 final localizations = await AppLocalizations.delegate.load(const Locale('en'));
19 await tester.pumpWidget(App());
20 await tester.pumpAndSettle();
21 await tester.pumpUntil(() => find.byType(AppHome).hasFound);
22 expect(find.byType(AppHome), findsOneWidget);
23 expect(find.byType(AddEntryDialogue), findsNothing);
24 expect(find.byType(MeasurementListRow), findsNothing);
25
26 expect(find.byIcon(Icons.add), findsOneWidget);
27 await tester.tap(find.byIcon(Icons.add));
28 await tester.pumpAndSettle();
29 expect(find.byType(AddEntryDialogue), findsOneWidget);
30
31 await tester.enterText(find.byType(TextFormField).at(0), '123'); // sys
32 await tester.enterText(find.byType(TextFormField).at(1), '67'); // dia
33 await tester.enterText(find.byType(TextFormField).at(2), '56'); // pul
34
35 await tester.tap(find.text(localizations.btnSave));
36 await tester.pumpAndSettle();
37 expect(find.byType(AddEntryDialogue), findsNothing);
38
39 await tester.pumpUntil(() => !find.text(localizations.loading).hasFound);
40 expect(find.text(localizations.loading), findsNothing);
41
42 expect(find.byType(MeasurementListRow), findsOneWidget);
43 expect(find.descendant(
44 of: find.byType(MeasurementListRow),
45 matching: find.text('123'),
46 ), findsOneWidget,);
47 expect(find.descendant(
48 of: find.byType(MeasurementListRow),
49 matching: find.text('67'),
50 ), findsOneWidget,);
51 expect(find.descendant(
52 of: find.byType(MeasurementListRow),
53 matching: find.text('56'),
54 ), findsOneWidget,);
55
56 });
57
58 testWidgets('Can enter complex measurements', (WidgetTester tester) async {
59 final localizations = await AppLocalizations.delegate.load(const Locale('en'));
60 await tester.pumpWidget(App());
61 await tester.pumpAndSettle();
62 await tester.pumpUntil(() => find.byType(AppHome).hasFound);
63 expect(find.byType(AppHome), findsOneWidget);
64
65 await tester.tap(find.byIcon(Icons.add));
66 await tester.pumpAndSettle();
67 expect(find.byType(AddEntryDialogue), findsOneWidget);
68
69 await tester.enterText(find.byType(TextFormField).at(0), '123'); // sys
70 await tester.enterText(find.byType(TextFormField).at(1), '67'); // dia
71 await tester.enterText(find.byType(TextFormField).at(2), '56'); // pul
72 await tester.enterText(find.byType(TextFormField).at(3), 'some test sample note'); // note
73 await tester.tap(find.byType(ColorSelectionListTile));
74 await tester.pumpAndSettle();
75 await tester.tap(find.byElementPredicate(findColored(Colors.red)));
76 await tester.pumpAndSettle();
77
78 await tester.tap(find.text(localizations.btnSave));
79 await tester.pumpAndSettle();
80 expect(find.byType(AddEntryDialogue), findsNothing);
81
82 await tester.pumpUntil(() => !find.text(localizations.loading).hasFound);
83 expect(find.text(localizations.loading), findsNothing);
84
85 expect(find.byType(MeasurementListRow), findsOneWidget);
86 final submittedRecord = tester.widget<MeasurementListRow>(find.byType(MeasurementListRow)).data;
87 expect(submittedRecord.sys?.mmHg, 123);
88 expect(submittedRecord.dia?.mmHg, 67);
89 expect(submittedRecord.pul, 56);
90 expect(submittedRecord.color, Colors.red.toARGB32());
91 expect(submittedRecord.note, 'some test sample note');
92
93 expect(find.text('some test sample note'), findsNothing);
94 await tester.tap(find.byType(MeasurementListRow));
95 await tester.pumpAndSettle();
96 expect(find.text('some test sample note'), findsOneWidget);
97 });
98}