Commit abf2983
Changed files (11)
app
integration_test
lib
features
input
forms
old_bluetooth
model
blood_pressure
export_import
screens
test
features
bluetooth
measurement_list
statistics
model
export_import
app/integration_test/screenshot_home.dart
@@ -73,44 +73,3 @@ bool Function(Element e) _colored(Color color) => (e) =>
e.widget is Container &&
(e.widget as Container).decoration is BoxDecoration &&
((e.widget as Container).decoration as BoxDecoration).color == color;
-
-// Copy of app method
-ThemeData _buildTheme(ColorScheme colorScheme) {
- final inputBorder = OutlineInputBorder(
- borderSide: BorderSide(
- width: 3,
- // Through black background outlineVariant has enough contrast.
- color: (colorScheme.brightness == Brightness.dark)
- ? colorScheme.outlineVariant
- : colorScheme.outline,
- ),
- borderRadius: BorderRadius.circular(20),
- );
-
- return ThemeData(
- colorScheme: colorScheme,
- useMaterial3: true,
- inputDecorationTheme: InputDecorationTheme(
- errorMaxLines: 5,
- border: inputBorder,
- enabledBorder: inputBorder,
- ),
- scaffoldBackgroundColor: colorScheme.brightness == Brightness.dark
- ? Colors.black
- : Colors.white,
- appBarTheme: const AppBarTheme(
- centerTitle: true,
- shape: RoundedRectangleBorder(
- borderRadius: BorderRadius.only(
- bottomRight: Radius.circular(15),
- bottomLeft: Radius.circular(15),
- ),
- ),
- ),
- snackBarTheme: SnackBarThemeData(
- shape: RoundedRectangleBorder(
- borderRadius: BorderRadius.circular(8),
- ),
- ),
- );
-}
app/integration_test/screenshot_input.dart
@@ -100,44 +100,3 @@ bool Function(Element e) _colored(Color color) => (e) =>
e.widget is Container &&
(e.widget as Container).decoration is BoxDecoration &&
((e.widget as Container).decoration as BoxDecoration).color == color;
-
-// Copy of app method
-ThemeData _buildTheme(ColorScheme colorScheme) {
- final inputBorder = OutlineInputBorder(
- borderSide: BorderSide(
- width: 3,
- // Through black background outlineVariant has enough contrast.
- color: (colorScheme.brightness == Brightness.dark)
- ? colorScheme.outlineVariant
- : colorScheme.outline,
- ),
- borderRadius: BorderRadius.circular(20),
- );
-
- return ThemeData(
- colorScheme: colorScheme,
- useMaterial3: true,
- inputDecorationTheme: InputDecorationTheme(
- errorMaxLines: 5,
- border: inputBorder,
- enabledBorder: inputBorder,
- ),
- scaffoldBackgroundColor: colorScheme.brightness == Brightness.dark
- ? Colors.black
- : Colors.white,
- appBarTheme: const AppBarTheme(
- centerTitle: true,
- shape: RoundedRectangleBorder(
- borderRadius: BorderRadius.only(
- bottomRight: Radius.circular(15),
- bottomLeft: Radius.circular(15),
- ),
- ),
- ),
- snackBarTheme: SnackBarThemeData(
- shape: RoundedRectangleBorder(
- borderRadius: BorderRadius.circular(8),
- ),
- ),
- );
-}
app/lib/features/input/forms/add_entry_form.dart
@@ -1,8 +1,6 @@
import 'package:blood_pressure_app/features/bluetooth/backend/bluetooth_backend.dart';
import 'package:blood_pressure_app/features/bluetooth/bluetooth_input.dart';
-import 'package:blood_pressure_app/features/bluetooth/logic/ble_read_cubit.dart';
import 'package:blood_pressure_app/features/bluetooth/logic/bluetooth_cubit.dart';
-import 'package:blood_pressure_app/features/bluetooth/logic/device_scan_cubit.dart';
import 'package:blood_pressure_app/features/input/forms/blood_pressure_form.dart';
import 'package:blood_pressure_app/features/input/forms/date_time_form.dart';
import 'package:blood_pressure_app/features/input/forms/form_base.dart';
app/lib/features/old_bluetooth/bluetooth_input.dart
@@ -15,7 +15,7 @@ import 'package:blood_pressure_app/logging.dart';
import 'package:blood_pressure_app/model/storage/storage.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
-import 'package:flutter_blue_plus/flutter_blue_plus.dart' show BluetoothDevice, Guid;
+import 'package:flutter_blue_plus/flutter_blue_plus.dart' show Guid;
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:health_data_store/health_data_store.dart';
app/lib/model/blood_pressure/model.dart
@@ -18,13 +18,6 @@ class BloodPressureModel extends ChangeNotifier {
late final Database _database;
- FutureOr<void> _onDBCreate(Database db, int version) => db.execute('CREATE TABLE bloodPressureModel('
- 'timestamp INTEGER(14) PRIMARY KEY,'
- 'systolic INTEGER, diastolic INTEGER,'
- 'pulse INTEGER,'
- 'notes STRING,'
- 'needlePin STRING)');
-
FutureOr<void> _onDBUpgrade(Database db, int oldVersion, int newVersion) async {
// When adding more versions the upgrade procedure proposed in https://stackoverflow.com/a/75153875/21489239
// might be useful, to avoid duplicated code. Currently this would only lead to complexity, without benefits.
app/lib/model/export_import/import_field_type.dart
@@ -1,9 +1,7 @@
import 'package:blood_pressure_app/model/blood_pressure/needle_pin.dart';
import 'package:blood_pressure_app/model/export_import/record_formatter.dart';
-import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
-
/// Type a [Formatter] can uses to indicate the kind of data returned.
enum RowDataFieldType {
/// Guarantees [DateTime] is returned.
app/lib/screens/settings_screen.dart
@@ -1,5 +1,4 @@
import 'dart:io';
-import 'dart:typed_data';
import 'package:archive/archive_io.dart';
import 'package:blood_pressure_app/components/input_dialoge.dart';
@@ -346,16 +345,11 @@ class SettingsPage extends StatelessWidget {
messenger.showSnackBar(SnackBar(content: Text(localizations.errCantCreateArchive)));
return;
}
- final compressedArchive = ZipEncoder().encode(archive);
- if (compressedArchive == null) {
- messenger.showSnackBar(SnackBar(content: Text(localizations.errCantCreateArchive)));
- return;
- }
- final archiveData = Uint8List.fromList(compressedArchive);
+ final compressedArchive = ZipEncoder().encodeBytes(archive);
await FilePicker.platform.saveFile(
type: FileType.any, // application/zip
fileName: 'bloodPressureSettings.zip',
- bytes: archiveData,
+ bytes: compressedArchive,
);
},
),
app/test/features/bluetooth/mock/fake_characteristic.dart
@@ -63,10 +63,6 @@ class FakeBleBpCharacteristic implements BluetoothCharacteristic {
// TODO: implement remoteId
DeviceIdentifier get remoteId => throw UnimplementedError();
- @override
- // TODO: implement secondaryServiceUuid
- Guid? get secondaryServiceUuid => throw UnimplementedError();
-
@override
// TODO: implement serviceUuid
Guid get serviceUuid => throw UnimplementedError();
app/test/features/measurement_list/weight_list_test.dart
@@ -56,7 +56,7 @@ void main() {
intervallStoreManager: IntervalStoreManager(interval, IntervalStorage(), IntervalStorage()),
const WeightList(rangeType: IntervalStoreManagerLocation.mainPage),
));
- final localizations = await AppLocalizations.delegate.load(const Locale('en'))!;
+ final localizations = await AppLocalizations.delegate.load(const Locale('en'));
await tester.pumpAndSettle();
expect(find.text('123 kg'), findsOneWidget);
@@ -91,7 +91,7 @@ void main() {
settings: Settings(confirmDeletion: false),
const WeightList(rangeType: IntervalStoreManagerLocation.mainPage),
));
- final localizations = await AppLocalizations.delegate.load(const Locale('en'))!;
+ final localizations = await AppLocalizations.delegate.load(const Locale('en'));
await tester.pumpAndSettle();
expect(find.text('123 kg'), findsOneWidget);
app/test/features/statistics/statistics_test.dart
@@ -1,87 +1,3 @@
-import 'package:blood_pressure_app/model/storage/export_csv_settings_store.dart';
-import 'package:blood_pressure_app/model/storage/export_pdf_settings_store.dart';
-import 'package:blood_pressure_app/model/storage/export_settings_store.dart';
-import 'package:blood_pressure_app/model/storage/interval_store.dart';
-import 'package:blood_pressure_app/model/storage/settings_store.dart';
-import 'package:blood_pressure_app/screens/statistics_screen.dart';
-import 'package:flutter_test/flutter_test.dart';
-import 'package:health_data_store/health_data_store.dart';
-
-import '../../util.dart';
-
void main() {
- /*testWidgets('should load page', (tester) async {
- await _initStatsPage(tester, []);
- expect(tester.takeException(), isNull);
-
- final localizations = await AppLocalizations.delegate.load(const Locale('en'));
- expect(find.text(localizations.statistics), findsAtLeast(1));
- expect(find.text(localizations.valueDistribution), findsOneWidget);
- expect(find.text(localizations.timeResolvedMetrics, skipOffstage: false),
- findsOneWidget,);
- });
- testWidgets('should report measurement count', (tester) async {
- await _initStatsPage(tester, [
- for (int i = 1; i<51; i++) // can't safe entries at or before epoch
- mockRecord(time: DateTime.fromMillisecondsSinceEpoch(1582991592 + i),
- sys: i, dia: 60+i, pul: 110+i,),
- ], intervallStoreManager: IntervallStoreManager(IntervallStorage(),
- IntervallStorage(), IntervallStorage(stepSize: TimeStep.lifetime,),),);
- final localizations = await AppLocalizations.delegate.load(const Locale('en'));
-
- expect(find.text(localizations.measurementCount), findsOneWidget);
-
- final measurementCountWidget = find.ancestor(
- of: find.text(localizations.measurementCount),
- matching: find.byType(ListTile),
- );
- expect(measurementCountWidget, findsOneWidget);
- expect(find.descendant(
- of: measurementCountWidget,
- matching: find.text('49'),
- ), findsNothing,);
- expect(find.descendant(
- of: measurementCountWidget,
- matching: find.text('51'),
- ), findsNothing,);
- expect(find.descendant(
- of: measurementCountWidget,
- matching: find.text('50'),
- ), findsOneWidget,);
- });
- testWidgets("should not display 'null' or -1", (tester) async {
- await _initStatsPage(tester, [
- mockRecord(time: DateTime.fromMillisecondsSinceEpoch(1), sys: 40, dia: 60),
- mockRecord(time: DateTime.fromMillisecondsSinceEpoch(2),),
- ], intervallStoreManager: IntervallStoreManager(IntervallStorage(),
- IntervallStorage(), IntervallStorage(stepSize: TimeStep.lifetime),),);
- expect(find.textContaining('-1'), findsNothing);
- expect(find.textContaining('null'), findsNothing);
- });
- testWidgets("should not display 'null' when empty", (tester) async {
- await _initStatsPage(tester, [],
- intervallStoreManager: IntervallStoreManager(
- IntervallStorage(), IntervallStorage(),
- IntervallStorage(stepSize: TimeStep.lifetime,),),);
- expect(find.textContaining('-1'), findsNothing);
- expect(find.textContaining('null'), findsNothing);
- });*/
-}
-
-Future<void> _initStatsPage(WidgetTester tester, List<BloodPressureRecord> records, {
- Settings? settings,
- ExportSettings? exportSettings,
- CsvExportSettings? csvExportSettings,
- PdfExportSettings? pdfExportSettings,
- IntervalStoreManager? intervallStoreManager,
-}) async {
- await tester.pumpWidget(await appBaseWithData(const StatisticsScreen(),
- records: records,
- settings: settings,
- exportSettings: exportSettings,
- csvExportSettings: csvExportSettings,
- pdfExportSettings: pdfExportSettings,
- intervallStoreManager: intervallStoreManager,
- ));
- await tester.pumpAndSettle();
+ // TODO: test for statistics screen
}
app/test/model/export_import/pdf_converter_test.dart
@@ -5,10 +5,7 @@ import 'package:blood_pressure_app/model/storage/settings_store.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_test/flutter_test.dart';
-import 'package:health_data_store/health_data_store.dart';
-
import 'csv_converter_test.dart';
-import 'record_formatter_test.dart';
void main() {
test('should not return empty data', () async {