Commit c640ed6

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2023-12-20 16:54:55
test ExportColumnsManager json serialization
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent edab503
Changed files (2)
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