Commit 89a3e3b
Changed files (3)
lib
model
export_import
storage
test
model
export_import
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);
+ });
+ });
+}