From 9bf798d61fc199d355a5de9660da50e6b37c43b4 Mon Sep 17 00:00:00 2001 From: Conor Finn <conor.finn@stfc.ac.uk> Date: Mon, 16 Dec 2019 10:20:14 +0000 Subject: [PATCH] RE #27187 Add settings model and tests --- scripts/Engineering/gui/CMakeLists.txt | 1 + .../settings/settings_model.py | 31 +++++++++++ .../settings/test/test_settings_model.py | 51 +++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 scripts/Engineering/gui/engineering_diffraction/settings/settings_model.py create mode 100644 scripts/Engineering/gui/engineering_diffraction/settings/test/test_settings_model.py diff --git a/scripts/Engineering/gui/CMakeLists.txt b/scripts/Engineering/gui/CMakeLists.txt index 52562a486b8..4b5c38e394c 100644 --- a/scripts/Engineering/gui/CMakeLists.txt +++ b/scripts/Engineering/gui/CMakeLists.txt @@ -5,6 +5,7 @@ set(TEST_PY_FILES engineering_diffraction/tabs/common/test/test_vanadium_corrections.py # Settings engineering_diffraction/settings/test/test_settings_helper.py + engineering_diffraction/settings/test/test_settings_model.py # Calibration engineering_diffraction/tabs/calibration/test/test_calib_model.py engineering_diffraction/tabs/calibration/test/test_calib_presenter.py diff --git a/scripts/Engineering/gui/engineering_diffraction/settings/settings_model.py b/scripts/Engineering/gui/engineering_diffraction/settings/settings_model.py new file mode 100644 index 00000000000..8c197fcb4d6 --- /dev/null +++ b/scripts/Engineering/gui/engineering_diffraction/settings/settings_model.py @@ -0,0 +1,31 @@ +# Mantid Repository : https://github.com/mantidproject/mantid +# +# Copyright © 2019 ISIS Rutherford Appleton Laboratory UKRI, +# NScD Oak Ridge National Laboratory, European Spallation Source +# & Institut Laue - Langevin +# SPDX - License - Identifier: GPL - 3.0 + + +from __future__ import (absolute_import, division, print_function) + +from Engineering.gui.engineering_diffraction.settings.settings_helper import get_setting, set_setting + + +class SettingsModel(object): + INTERFACES_SETTINGS_GROUP = "CustomInterfaces" + ENGINEERING_PREFIX = "EngineeringDiffraction2/" + + def get_settings_dict(self, keys): + settings = {} + for setting_name in keys: + settings[setting_name] = self.get_setting(setting_name) + return settings + + def set_settings_dict(self, settings): + for key in settings: + self.set_setting(key, settings[key]) + + def get_setting(self, name): + return get_setting(self.INTERFACES_SETTINGS_GROUP, self.ENGINEERING_PREFIX, name) + + def set_setting(self, name, value): + set_setting(self.INTERFACES_SETTINGS_GROUP, self.ENGINEERING_PREFIX, name, value) \ No newline at end of file diff --git a/scripts/Engineering/gui/engineering_diffraction/settings/test/test_settings_model.py b/scripts/Engineering/gui/engineering_diffraction/settings/test/test_settings_model.py new file mode 100644 index 00000000000..3acd388e063 --- /dev/null +++ b/scripts/Engineering/gui/engineering_diffraction/settings/test/test_settings_model.py @@ -0,0 +1,51 @@ +# Mantid Repository : https://github.com/mantidproject/mantid +# +# Copyright © 2019 ISIS Rutherford Appleton Laboratory UKRI, +# NScD Oak Ridge National Laboratory, European Spallation Source +# & Institut Laue - Langevin +# SPDX - License - Identifier: GPL - 3.0 + + +from __future__ import (absolute_import, division, print_function) + +import unittest + +from mantid.py3compat.mock import patch +from Engineering.gui.engineering_diffraction.settings.settings_model import SettingsModel + +dir_path = "Engineering.gui.engineering_diffraction.settings." + + +class SettingsModelTest(unittest.TestCase): + def setUp(self): + self.model = SettingsModel() + + @patch(dir_path + "settings_model.set_setting") + def test_set_setting(self, set_setting_mock): + self.model.set_setting("name", "value") + set_setting_mock.assert_called_with("CustomInterfaces", "EngineeringDiffraction2/", "name", "value") + + @patch(dir_path + "settings_model.get_setting") + def test_get_setting(self, get_setting_mock): + self.model.get_setting("name") + get_setting_mock.assert_called_with("CustomInterfaces", "EngineeringDiffraction2/", "name", return_type=str) + + @patch(dir_path + "settings_model.set_setting") + def test_set_settings_dict(self, set_setting_mock): + self.model.set_settings_dict({"name": "value", "namebool": False, "namenum": 10}) + self.assertEqual(set_setting_mock.call_count, 3) + set_setting_mock.assert_any_call("CustomInterfaces", "EngineeringDiffraction2/", "name", "value") + set_setting_mock.assert_any_call("CustomInterfaces", "EngineeringDiffraction2/", "namebool", False) + set_setting_mock.assert_any_call("CustomInterfaces", "EngineeringDiffraction2/", "namenum", 10) + + @patch(dir_path + "settings_model.get_setting") + def test_get_settings_dict(self, get_setting_mock): + get_setting_mock.return_value = "value" + self.assertEqual(self.model.get_settings_dict({"name1": str, "name2": str}), + {'name1': 'value', 'name2': 'value'}) + self.assertEqual(get_setting_mock.call_count, 2) + get_setting_mock.assert_any_call("CustomInterfaces", "EngineeringDiffraction2/", "name1", return_type=str) + get_setting_mock.assert_any_call("CustomInterfaces", "EngineeringDiffraction2/", "name2", return_type=str) + + +if __name__ == '__main__': + unittest.main() -- GitLab