main
1import 'package:blood_pressure_app/features/data_picker/interval_picker.dart';
2import 'package:blood_pressure_app/features/home/navigation_action_buttons.dart';
3import 'package:blood_pressure_app/features/measurement_list/compact_measurement_list.dart';
4import 'package:blood_pressure_app/features/measurement_list/measurement_list.dart';
5import 'package:blood_pressure_app/features/statistics/value_graph.dart';
6import 'package:blood_pressure_app/model/storage/settings_store.dart';
7import 'package:blood_pressure_app/screens/home_screen.dart';
8import 'package:flutter/material.dart';
9import 'package:flutter_test/flutter_test.dart';
10
11import '../model/analyzer_test.dart';
12import '../util.dart';
13
14void main() {
15 final TestWidgetsFlutterBinding binding = TestWidgetsFlutterBinding.ensureInitialized();
16
17 testWidgets('shows graph above list in phone mode', (tester) async {
18 await binding.setSurfaceSize(const Size(400, 800));
19
20 await tester.pumpWidget(await appBaseWithData(const AppHome()));
21 await tester.pumpAndSettle();
22
23 expect(find.byType(NavigationActionButtons), findsOneWidget);
24
25 expect(find.byType(BloodPressureValueGraph), findsOneWidget);
26 expect(find.byType(IntervalPicker), findsOneWidget);
27 expect(find.byType(MeasurementList), findsOneWidget);
28
29 expect(
30 tester.getCenter(find.byType(BloodPressureValueGraph)).dy,
31 lessThan(tester.getCenter(find.byType(IntervalPicker)).dy)
32 );
33 expect(
34 tester.getCenter(find.byType(IntervalPicker)).dy,
35 lessThan(tester.getCenter(find.byType(MeasurementList)).dy)
36 );
37 });
38
39 testWidgets('only shows graph in landscape more', (tester) async {
40 await binding.setSurfaceSize(const Size(800, 400));
41
42 await tester.pumpWidget(await appBaseWithData(const AppHome(),
43 records: [mockRecord(sys: 123)],
44 ));
45 await tester.pumpAndSettle();
46
47 expect(find.byType(BloodPressureValueGraph), findsOneWidget);
48 expect(find.byType(SafeArea), findsAtLeast(1));
49 expect(find.byType(Scaffold), findsAtLeast(1));
50 expect(find.byType(NavigationActionButtons), findsNothing);
51 expect(find.byType(IntervalPicker), findsOneWidget);
52 expect(find.byType(MeasurementList), findsNothing);
53 });
54
55 testWidgets('respects compact list setting', (tester) async {
56 await binding.setSurfaceSize(const Size(400, 800));
57
58 final s = Settings(useLegacyList: false);
59 await tester.pumpWidget(await appBaseWithData(const AppHome(), settings: s));
60 await tester.pumpAndSettle();
61
62 expect(find.byType(MeasurementList), findsOneWidget);
63 expect(find.byType(CompactMeasurementList), findsNothing);
64
65 s.compactList = true;
66 await tester.pump();
67
68 expect(find.byType(MeasurementList), findsNothing);
69 expect(find.byType(CompactMeasurementList), findsOneWidget);
70 });
71
72 testWidgets('landscape graph is wrapped in theming', (tester) async {
73 await binding.setSurfaceSize(const Size(800, 400));
74
75 await tester.pumpWidget(appBaseForScreen(const AppHome()));
76 await tester.pumpAndSettle();
77
78 expect(find.byType(BloodPressureValueGraph), findsOneWidget);
79 expect(find.ancestor(of: find.byType(BloodPressureValueGraph), matching: find.byType(Scaffold)), findsOneWidget);
80 expect(find.ancestor(of: find.byType(BloodPressureValueGraph), matching: find.byType(MaterialApp)), findsOneWidget);
81 });
82
83 testWidgets('includes safe area in phone mode', (tester) async {
84 await binding.setSurfaceSize(const Size(400, 800));
85
86 await tester.pumpWidget(await appBaseWithData(const AppHome()));
87 await tester.pumpAndSettle();
88
89 expect(find.byType(SafeArea), findsOneWidget);
90 });
91}