diff --git a/config_provider.py b/config_provider.py index d45df3ea465d2d61dcd9dd32aa959779268b04bc..1399ab36591535cdbd9953bd2de39afb85935cc7 100644 --- a/config_provider.py +++ b/config_provider.py @@ -1,8 +1,14 @@ class ConfigProvider: - def __init__(self, load_function, *args, **kwargs): - self._conf_dict = load_function(*args, **kwargs) + def __init__(self, load_function): + self._conf_dict = load_function['function']( + *load_function.get('args'), **load_function.get('kwargs')) + self._load_function = load_function @property def dict(self): - return self._conf_dict \ No newline at end of file + return self._conf_dict + + def reload(self): + self._conf_dict = self._load_function['function']( + *self._load_function.get('args'), **self._load_function.get('kwargs')) \ No newline at end of file diff --git a/test/test_config_provider.py b/test/test_config_provider.py index 3664c88a801bb5fd93d06ee43543d3b56ead6aa6..e2add058ff995b8f0b696bb26480d8a1e5dd7263 100644 --- a/test/test_config_provider.py +++ b/test/test_config_provider.py @@ -3,7 +3,45 @@ import config_provider class TestConfigProvider(unittest.TestCase): + def setUp(self): + self.dummy_config = { + 'A': 'a', + 'B': 'b'} + def read_dummy_conf(self, **kwargs): + conf_dict = dict(self.dummy_config, **kwargs) + return conf_dict + self.read_function = read_dummy_conf + self.config = config_provider.ConfigProvider( + load_function = { + 'function': self.read_function, 'args': [self], + 'kwargs': {'salt': 'pepper'}}) + def test_init(self): config = config_provider.ConfigProvider( - load_function = dict, foo = 'bar') - self.assertEqual({'foo': 'bar'}, config.dict) \ No newline at end of file + load_function = { + 'function': self.read_function, 'args': [self], + 'kwargs': {'foo': 'bar'}}) + self.assertEqual({'foo': 'bar', 'A': 'a', 'B': 'b'}, config.dict) + + def test_reload(self): + old_dict = dict(self.config.dict) + self.dummy_config = {'A': 'a1', 'B': 'b'} + expected_dict = {'A': 'a1', 'B': 'b', 'salt': 'pepper'} + with self.subTest( + 'before Reload: self.config.dict = ' + str(self.config.dict) + + ' old_dict = ' + str(old_dict) + ' self.dummy_config = ' + + str(self.dummy_config)): + self.assertEqual( + old_dict, self.config.dict, 'old_dict musst equal self.config.dict') + self.assertNotEqual( + self.dummy_config, self.config.dict, + 'self.dummy_config musst not equal self.config.dict') + self.config.reload() + with self.subTest('after Reload: self.config.dict = ' + str(self.config.dict) + + ' old_dict = ' + str(old_dict) + ' self.dummy_config = ' + + str(self.dummy_config)): + self.assertEqual( + expected_dict, self.config.dict, + 'expected_dict musst equal self.config.dict') + self.assertNotEqual( + old_dict, self.config.dict, 'old_dict musst not equal self.config.dict') \ No newline at end of file