Commit 89a3e3b

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2023-12-06 14:20:56
test ActiveExportColumnConfiguration
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent d436dd1
Changed files (3)
lib
test
model
lib/model/export_import/export_configuration.dart
@@ -8,6 +8,8 @@ import 'package:flutter/widgets.dart';
 import 'package:flutter_gen/gen_l10n/app_localizations.dart';
 
 /// Class for managing columns currently used for ex- and import.
+///
+/// TODO: implement methods for modifying columns once UI code requires it
 class ActiveExportColumnConfiguration extends ChangeNotifier {
   /// Create a manager of the currently relevant [ExportColumn]s.
   ActiveExportColumnConfiguration({
lib/model/storage/export_columns_store.dart
@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
 
 /// Class for managing columns available to the user.
 class ExportColumnsManager extends ChangeNotifier { // TODO: separate ExportColumnsManager for export and import ?
-  /// Create a new class for managing export columns.
+  /// Create a new manager for export columns.
   ///
   /// It will be filled with the default columns but won't contain initial user columns.
   ExportColumnsManager();
@@ -50,7 +50,7 @@ class ExportColumnsManager extends ChangeNotifier { // TODO: separate ExportColu
                 (c) => c.internalIdentifier == identifier).firstOrNull; // ?? ...
   }
 
-  String toJson() {
+  String toJson() { // TODO: update from and TO json to new style
     final columns = [];
     for (final c in _userColumns.values) {
       switch (c) {
test/model/export_import/export_configuration_test.dart
@@ -0,0 +1,45 @@
+
+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/storage/export_columns_store.dart';
+import 'package:flutter_test/flutter_test.dart';
+
+void main() {
+  group('ActiveExportColumnConfiguration', () {
+    test('should not throw errors', () {
+      ActiveExportColumnConfiguration();
+      ActiveExportColumnConfiguration(activePreset: ExportImportPreset.myHeart);
+      ActiveExportColumnConfiguration(activePreset: ExportImportPreset.none, userSelectedColumnIds: ['a','b','c']);
+      ActiveExportColumnConfiguration(activePreset: null, userSelectedColumnIds: ['a','b','c']);
+    });
+
+    test('should return correct columns depending on mode', () {
+      final config = ActiveExportColumnConfiguration(
+          activePreset: ExportImportPreset.bloodPressureApp,
+          userSelectedColumnIds: ['a', 'b', 'c'],
+      );
+      expect(config.getActiveColumns(ExportColumnsManager()), everyElement(isA<NativeColumn>()));
+
+      config.activePreset = ExportImportPreset.myHeart;
+      expect(config.getActiveColumns(ExportColumnsManager()), everyElement(isA<BuildInColumn>()));
+
+      config.activePreset = ExportImportPreset.none;
+      final manager = ExportColumnsManager();
+      manager.addOrUpdate(UserColumn('a', 'testA', ''));
+      manager.addOrUpdate(UserColumn('b', 'testB', ''));
+      manager.addOrUpdate(UserColumn('c', 'testC', ''));
+      expect(config.getActiveColumns(manager).length, 3);
+      expect(config.getActiveColumns(manager), everyElement(isA<UserColumn>()));
+    });
+
+    test('should notify listeners', () {
+      final config = ActiveExportColumnConfiguration();
+      int callCount = 0;
+      config.addListener(() {
+        callCount += 1;
+      });
+      config.activePreset = ExportImportPreset.bloodPressureApp;
+      expect(callCount, 1);
+    });
+  });
+}