main
1
2import 'package:blood_pressure_app/features/bluetooth/logic/characteristics/ble_measurement_data.dart';
3import 'package:blood_pressure_app/features/bluetooth/logic/characteristics/ble_measurement_status.dart';
4import 'package:blood_pressure_app/features/bluetooth/ui/measurement_multiple.dart';
5import 'package:flutter/material.dart';
6import 'package:blood_pressure_app/l10n/app_localizations.dart';
7import 'package:flutter_test/flutter_test.dart';
8
9import '../../../util.dart';
10
11
12void main() {
13 testWidgets('should show everything and be interactive', (WidgetTester tester) async {
14 int tapCount = 0;
15 final List<BleMeasurementData> selected = [];
16 final measurements = [
17 BleMeasurementData(
18 systolic: 123,
19 diastolic: 456,
20 pulse: 67,
21 meanArterialPressure: 123456,
22 isMMHG: true,
23 userID: 3,
24 status: BleMeasurementStatus(
25 bodyMovementDetected: true,
26 cuffTooLose: true,
27 irregularPulseDetected: true,
28 pulseRateInRange: true,
29 pulseRateExceedsUpperLimit: true,
30 pulseRateIsLessThenLowerLimit: true,
31 improperMeasurementPosition: true,
32 ),
33 timestamp: DateTime.now().subtract(const Duration(minutes: 1)),
34 ),
35 BleMeasurementData(
36 systolic: 124,
37 diastolic: 457,
38 pulse: null,
39 meanArterialPressure: 123457,
40 isMMHG: true,
41 userID: null,
42 status: BleMeasurementStatus(
43 bodyMovementDetected: true,
44 cuffTooLose: true,
45 irregularPulseDetected: true,
46 pulseRateInRange: true,
47 pulseRateExceedsUpperLimit: true,
48 pulseRateIsLessThenLowerLimit: true,
49 improperMeasurementPosition: true,
50 ),
51 timestamp: null,
52 ),
53 ];
54
55 await tester.pumpWidget(materialApp(MeasurementMultiple(
56 onClosed: () => tapCount++,
57 onSelect: selected.add,
58 measurements: measurements,
59 )));
60
61 final localizations = await AppLocalizations.delegate.load(const Locale('en'));
62 expect(find.text(localizations.selectMeasurementTitle), findsOneWidget);
63 expect(find.byIcon(Icons.close), findsOneWidget);
64
65 expect(find.byType(ListTile), findsNWidgets(2));
66
67 expect(find.textContaining(localizations.userID), findsOneWidget); // one measurement has UserID: null
68 expect(find.textContaining(localizations.bloodPressure), findsNWidgets(2));
69 for (final measurement in measurements) {
70 expect(find.textContaining(measurement.systolic.toInt().toString()), findsOneWidget);
71 }
72
73 expect(find.text(localizations.measurementIndex(2)), findsOneWidget);
74 expect(find.text(localizations.select), findsNWidgets(2));
75
76 expect(selected, isEmpty);
77 await tester.tap(find.text(localizations.select).first);
78 expect(selected.length, 1);
79 expect(selected, contains(measurements[0]));
80
81 expect(tapCount, 0);
82 await tester.tap(find.byIcon(Icons.close));
83 await tester.pump();
84 expect(tapCount, 1);
85 });
86}