Commit 642b803

derdilla <derdilla06@gmail.com>
2023-06-21 13:36:01
fix tests andwarnings
1 parent a18d942
lib/model/ram_only_implementations.dart
@@ -3,6 +3,7 @@ import 'dart:collection';
 import 'package:blood_pressure_app/model/blood_pressure.dart';
 import 'package:blood_pressure_app/model/export_import.dart';
 import 'package:blood_pressure_app/model/settings_store.dart';
+import 'package:file_saver/src/utils/mime_types.dart';
 import 'package:flutter/material.dart';
 
 class RamBloodPressureModel extends ChangeNotifier implements BloodPressureModel {
@@ -103,6 +104,15 @@ class RamSettings extends ChangeNotifier implements Settings {
   bool _validateInputs = true;
   int _graphTitlesCount = 5;
   ExportFormat _exportFormat = ExportFormat.csv;
+  String _csvFieldDelimiter = ',';
+  String _csvTextDelimiter = '"';
+  List<String> _exportAddableItems = [];
+  bool _exportCsvHeadline = true;
+  bool _exportCustomEntries = false;
+  DateTimeRange _exportDataRange = DateTimeRange(start: DateTime.fromMillisecondsSinceEpoch(0), end: DateTime.fromMillisecondsSinceEpoch(0));
+  List<String> _exportItems = ['timestampUnixMs', 'systolic', 'diastolic', 'pulse', 'notes'];
+  bool _exportLimitDataRange = false;
+  MimeType _exportMimeType = MimeType.csv;
 
   RamSettings() {
     _accentColor = createMaterialColor(0xFF009688);
@@ -296,15 +306,6 @@ class RamSettings extends ChangeNotifier implements Settings {
     notifyListeners();
   }
 
-  @override
-  bool get useExportCompatability => _useExportCompatability;
-
-  @override
-  set useExportCompatability(bool value) {
-    _useExportCompatability = value;
-    notifyListeners();
-  }
-
   @override
   bool get validateInputs => _validateInputs;
 
@@ -332,6 +333,94 @@ class RamSettings extends ChangeNotifier implements Settings {
     notifyListeners();
   }
 
+  bool get useExportCompatability => _useExportCompatability;
+
+  set useExportCompatability(bool value) {
+    _useExportCompatability = value;
+    notifyListeners();
+  }
+
+  @override
+  String get csvFieldDelimiter => _csvFieldDelimiter;
+
+  @override
+  set csvFieldDelimiter(String value) {
+    _csvFieldDelimiter = value;
+    notifyListeners();
+  }
+
+  @override
+  String get csvTextDelimiter => _csvTextDelimiter;
+
+  @override
+  set csvTextDelimiter(String value) {
+    _csvTextDelimiter = value;
+    notifyListeners();
+  }
+
+  @override
+  List<String> get exportAddableItems => _exportAddableItems;
+
+  @override
+  set exportAddableItems(List<String> value) {
+    _exportAddableItems = value;
+    notifyListeners();
+  }
+
+  @override
+  bool get exportCsvHeadline => _exportCsvHeadline;
+
+  @override
+  set exportCsvHeadline(bool value) {
+    _exportCsvHeadline = value;
+    notifyListeners();
+  }
+
+  @override
+  bool get exportCustomEntries => _exportCustomEntries;
+
+  @override
+  set exportCustomEntries(bool value) {
+    _exportCustomEntries = value;
+    notifyListeners();
+  }
+
+  @override
+  DateTimeRange get exportDataRange => _exportDataRange;
+
+  @override
+  set exportDataRange(DateTimeRange value) {
+    _exportDataRange = value;
+    notifyListeners();
+  }
+
+  @override
+  List<String> get exportItems => _exportItems;
+
+  @override
+  set exportItems(List<String> value) {
+    _exportItems = value;
+    notifyListeners();
+  }
+
+  @override
+  bool get exportLimitDataRange => _exportLimitDataRange;
+
+  @override
+  set exportLimitDataRange(bool value) {
+    _exportLimitDataRange = value;
+    notifyListeners();
+  }
+
+  @override
+  MimeType get exportMimeType => _exportMimeType;
+
+  @override
+  set exportMimeType(MimeType value) {
+    _exportMimeType = value;
+    notifyListeners();
+  }
+
   @override
   void changeStepSize(int value) {
     graphStepSize = value;
lib/model/settings_store.dart
@@ -19,10 +19,6 @@ class Settings extends ChangeNotifier {
     return component;
   }
 
-  void forceNotifyListeners() {
-    notifyListeners();
-  }
-
   int get graphStepSize {
     return _prefs.getInt('graphStepSize') ?? TimeStep.day;
   }
test/model/settings_test.dart
@@ -1,5 +1,7 @@
 import 'package:blood_pressure_app/model/ram_only_implementations.dart';
 import 'package:blood_pressure_app/model/settings_store.dart';
+import 'package:file_saver/file_saver.dart';
+import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:shared_preferences/shared_preferences.dart';
 import 'package:sqflite_common_ffi/sqflite_ffi.dart';
@@ -29,7 +31,6 @@ void main() {
       expect(s.pulColor.value, 0xFFF44336);
       expect(s.allowManualTimeInput, true);
       expect(s.dateFormatString, 'yyyy-MM-dd  HH:mm');
-      expect(s.useExportCompatability, false);
       expect(s.iconSize, 30);
       expect(s.sysWarn, 125); // depends on overrideWarnValues
       expect(s.diaWarn, 80); // depends on overrideWarnValues
@@ -40,6 +41,14 @@ void main() {
       expect(s.animationSpeed, 150);
       expect(s.confirmDeletion, true);
       expect(s.graphTitlesCount, 5);
+      expect(s.csvFieldDelimiter, ',');
+      expect(s.csvTextDelimiter, '"');
+      expect(s.exportItems, ['timestampUnixMs', 'systolic', 'diastolic', 'pulse', 'notes']);
+      expect(s.exportAddableItems, []);
+      expect(s.exportCsvHeadline, true);
+      expect(s.exportDataRange.start.millisecondsSinceEpoch, 0);
+      expect(s.exportLimitDataRange, false);
+      expect(s.exportMimeType, MimeType.csv);
 
       s.overrideWarnValues = true;
       expect(s.sysWarn, 120);
@@ -70,7 +79,6 @@ void main() {
       s.pulColor = createMaterialColor(0xFF942DA7);
       s.allowManualTimeInput = false;
       s.dateFormatString = 'yy:dd @ H:mm.ss';
-      s.useExportCompatability = true;
       s.iconSize = 50;
       s.sysWarn = 314; // depends on overrideWarnValues
       s.diaWarn = 159; // depends on overrideWarnValues
@@ -81,6 +89,13 @@ void main() {
       s.animationSpeed = 100;
       s.confirmDeletion = false;
       s.graphTitlesCount = 7;
+      s.csvFieldDelimiter = '|';
+      s.csvTextDelimiter = '\'';
+      s.exportAddableItems = ['timestampUnixMs'];
+      s.exportItems = ['systolic', 'diastolic', 'pulse', 'notes'];
+      s.exportCsvHeadline = false;
+      s.exportLimitDataRange = true;
+      s.exportMimeType = MimeType.pdf;
 
       expect(s.displayDataStart, DateTime.fromMillisecondsSinceEpoch(10000));
       expect(s.displayDataEnd, DateTime.fromMillisecondsSinceEpoch(200000));
@@ -91,7 +106,6 @@ void main() {
       expect(s.diaColor.value, 0xFF942DA6);
       expect(s.pulColor.value, 0xFF942DA7);
       expect(s.allowManualTimeInput, false);
-      expect(s.useExportCompatability, true);
       expect(s.iconSize, 50);
       expect(s.sysWarn, 314);
       expect(s.diaWarn, 159);
@@ -102,6 +116,13 @@ void main() {
       expect(s.animationSpeed, 100);
       expect(s.confirmDeletion, false);
       expect(s.graphTitlesCount, 7);
+      expect(s.csvFieldDelimiter, '|');
+      expect(s.csvTextDelimiter, '\'');
+      expect(s.exportItems, ['systolic', 'diastolic', 'pulse', 'notes']);
+      expect(s.exportAddableItems, ['timestampUnixMs']);
+      expect(s.exportCsvHeadline, false);
+      expect(s.exportLimitDataRange, true);
+      expect(s.exportMimeType, MimeType.pdf);
     });
 
     test('setting fields should notify listeners and change values', () async {
@@ -123,7 +144,6 @@ void main() {
       s.pulColor = createMaterialColor(0xFF942DA7);
       s.allowManualTimeInput = false;
       s.dateFormatString = 'yy:dd @ H:mm.ss';
-      s.useExportCompatability = true;
       s.iconSize = 10;
       s.sysWarn = 314; // depends on overrideWarnValues
       s.diaWarn = 159; // depends on overrideWarnValues
@@ -134,8 +154,16 @@ void main() {
       s.animationSpeed = 100;
       s.confirmDeletion = true;
       s.graphTitlesCount = 2;
+      s.csvFieldDelimiter = '|';
+      s.csvTextDelimiter = '\'';
+      s.exportAddableItems = ['timestampUnixMs'];
+      s.exportItems = ['systolic', 'diastolic', 'pulse', 'notes'];
+      s.exportCsvHeadline = false;
+      s.exportDataRange = DateTimeRange(start: DateTime.fromMillisecondsSinceEpoch(20), end: DateTime.now());
+      s.exportLimitDataRange = true;
+      s.exportMimeType = MimeType.pdf;
 
-      expect(i, 22);
+      expect(i, 29);
     });
   });
 
@@ -160,7 +188,6 @@ void main() {
       expect(s.pulColor.value, 0xFFF44336);
       expect(s.allowManualTimeInput, true);
       expect(s.dateFormatString, 'yyyy-MM-dd  HH:mm');
-      expect(s.useExportCompatability, false);
       expect(s.iconSize, 30);
       expect(s.sysWarn, 125); // depends on overrideWarnValues
       expect(s.diaWarn, 80); // depends on overrideWarnValues
@@ -171,6 +198,14 @@ void main() {
       expect(s.animationSpeed, 150);
       expect(s.confirmDeletion, true);
       expect(s.graphTitlesCount, 5);
+      expect(s.csvFieldDelimiter, ',');
+      expect(s.csvTextDelimiter, '"');
+      expect(s.exportItems, ['timestampUnixMs', 'systolic', 'diastolic', 'pulse', 'notes']);
+      expect(s.exportAddableItems, []);
+      expect(s.exportCsvHeadline, true);
+      expect(s.exportDataRange.start.millisecondsSinceEpoch, 0);
+      expect(s.exportLimitDataRange, false);
+      expect(s.exportMimeType, MimeType.csv);
 
       s.overrideWarnValues = true;
       expect(s.sysWarn, 120);
@@ -201,7 +236,6 @@ void main() {
       s.pulColor = createMaterialColor(0xFF942DA7);
       s.allowManualTimeInput = false;
       s.dateFormatString = 'yy:dd @ H:mm.ss';
-      s.useExportCompatability = true;
       s.iconSize = 50;
       s.sysWarn = 314; // depends on overrideWarnValues
       s.diaWarn = 159; // depends on overrideWarnValues
@@ -212,6 +246,13 @@ void main() {
       s.animationSpeed = 100;
       s.confirmDeletion = false;
       s.graphTitlesCount = 7;
+      s.csvFieldDelimiter = '|';
+      s.csvTextDelimiter = '\'';
+      s.exportAddableItems = ['timestampUnixMs'];
+      s.exportItems = ['systolic', 'diastolic', 'pulse', 'notes'];
+      s.exportCsvHeadline = false;
+      s.exportLimitDataRange = true;
+      s.exportMimeType = MimeType.pdf;
 
       expect(s.displayDataStart, DateTime.fromMillisecondsSinceEpoch(10000));
       expect(s.displayDataEnd, DateTime.fromMillisecondsSinceEpoch(200000));
@@ -222,7 +263,6 @@ void main() {
       expect(s.diaColor.value, 0xFF942DA6);
       expect(s.pulColor.value, 0xFF942DA7);
       expect(s.allowManualTimeInput, false);
-      expect(s.useExportCompatability, true);
       expect(s.iconSize, 50);
       expect(s.sysWarn, 314);
       expect(s.diaWarn, 159);
@@ -233,6 +273,13 @@ void main() {
       expect(s.animationSpeed, 100);
       expect(s.confirmDeletion, false);
       expect(s.graphTitlesCount, 7);
+      expect(s.csvFieldDelimiter, '|');
+      expect(s.csvTextDelimiter, '\'');
+      expect(s.exportItems, ['systolic', 'diastolic', 'pulse', 'notes']);
+      expect(s.exportAddableItems, ['timestampUnixMs']);
+      expect(s.exportCsvHeadline, false);
+      expect(s.exportLimitDataRange, true);
+      expect(s.exportMimeType, MimeType.pdf);
     });
 
     test('setting fields should notify listeners and change values', () async {
@@ -254,7 +301,6 @@ void main() {
       s.pulColor = createMaterialColor(0xFF942DA7);
       s.allowManualTimeInput = false;
       s.dateFormatString = 'yy:dd @ H:mm.ss';
-      s.useExportCompatability = true;
       s.iconSize = 10;
       s.sysWarn = 314; // depends on overrideWarnValues
       s.diaWarn = 159; // depends on overrideWarnValues
@@ -265,8 +311,16 @@ void main() {
       s.animationSpeed = 100;
       s.confirmDeletion = true;
       s.graphTitlesCount = 2;
+      s.csvFieldDelimiter = '|';
+      s.csvTextDelimiter = '\'';
+      s.exportAddableItems = ['timestampUnixMs'];
+      s.exportItems = ['systolic', 'diastolic', 'pulse', 'notes'];
+      s.exportCsvHeadline = false;
+      s.exportDataRange = DateTimeRange(start: DateTime.fromMillisecondsSinceEpoch(20), end: DateTime.now());
+      s.exportLimitDataRange = true;
+      s.exportMimeType = MimeType.pdf;
 
-      expect(i, 22);
+      expect(i, 29);
     });
   });
 }