Commit c640ed6
Changed files (2)
test
model
test/model/export_import/export_columns_store_test.dart
@@ -37,25 +37,6 @@ void main() {
expect(manager.userColumns[c2.internalIdentifier]?.csvTitle, 'test2');
});
- test('should be restoreable from json', () async { // TODO: consider moving to json_serialization_test and adding crash tests
- final init = ExportColumnsManager();
- final c2 = UserColumn('test2', 'test2', '234');
- init.addOrUpdate(UserColumn('test', 'test', '\$SYS'));
- init.addOrUpdate(c2);
-
- final fromJson = ExportColumnsManager.fromJson(init.toJson());
-
- expect(fromJson.userColumns.length, init.userColumns.length);
- expect(fromJson.userColumns.keys, init.userColumns.keys);
- expect(fromJson.userColumns[c2.internalIdentifier]?.internalIdentifier,
- init.userColumns[c2.internalIdentifier]?.internalIdentifier);
- expect(fromJson.userColumns[c2.internalIdentifier]?.csvTitle,
- init.userColumns[c2.internalIdentifier]?.csvTitle);
- expect(fromJson.userColumns[c2.internalIdentifier]?.formatPattern,
- init.userColumns[c2.internalIdentifier]?.formatPattern);
- expect(fromJson.toJson(), init.toJson());
- });
-
test('should restore TimeColumns from configurations', () {
final initialManager = ExportColumnsManager();
initialManager.addOrUpdate(TimeColumn('testA', 'dd'));
test/model/json_serialization_test.dart
@@ -1,6 +1,8 @@
+import 'package:blood_pressure_app/model/export_import/column.dart';
import 'package:blood_pressure_app/model/export_import/export_configuration.dart';
import 'package:blood_pressure_app/model/horizontal_graph_line.dart';
+import 'package:blood_pressure_app/model/storage/export_columns_store.dart';
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';
@@ -293,4 +295,33 @@ void main() {
expect(v3.exportData, PdfExportSettings().exportData);
});
});
+
+ group('ExportColumnsManager', (){
+ test('should be able to recreate all values from json', () {
+ final initial = ExportColumnsManager();
+ final c1 = UserColumn('test', 'test', '\$SYS');
+ final c2 = TimeColumn('testB', 'mmm');
+ initial.addOrUpdate(c1);
+ initial.addOrUpdate(c2);
+ final fromJson = ExportColumnsManager.fromJson(initial.toJson());
+
+ expect(initial.toJson(), fromJson.toJson());
+ });
+
+ test('should not crash when parsing incorrect json', () {
+ ExportColumnsManager.fromJson('banana');
+ ExportColumnsManager.fromJson('{"userColumns" = 1}');
+ ExportColumnsManager.fromJson('{"userColumns": 1');
+ ExportColumnsManager.fromJson('{userColumns: 1}');
+ ExportColumnsManager.fromJson('green{userColumns: 1}');
+ });
+
+ test('should not crash when parsing invalid values and ignore them', () {
+ final v1 = ExportColumnsManager.fromJson('{"userColumns": [1]}');
+ final v2 = ExportColumnsManager.fromJson('{"cellFontSize": "red"}');
+
+ expect(v1.userColumns.length, ExportColumnsManager().userColumns.length);
+ expect(v2.userColumns.length, ExportColumnsManager().userColumns.length);
+ });
+ });
}
\ No newline at end of file