def test_changing_settings_with_setitem(self): defaults = {'foo':'bar', 'hello':'world'} self.settings = RFSettings(path=self.settings_file, defaults=defaults) self.settings['foo'] = 'new value' expected = {'foo':'new value', 'hello':'world'} self.assertEquals(expected, self.settings._settings)
def test_default_values_are_read_correctly_when_user_settings(self): defaults = {'foo':'bar', 'hello':'world'} self._write_settings({'foo':'new value'}) expected = {'foo':'new value', 'hello':'world'} self.settings = RFSettings(path=self.settings_file, defaults=defaults) self.assertEquals(self.settings._settings, expected)
def test_restoring(self): self.settings = RFSettings(path=self.settings_file, defaults={'a':1}) values = {'foo':'bar', 'hello':'world'} self.settings.update(values) values['a'] = 1 self.assertEquals(values, self.settings._settings) self.settings.restore() self.assertEquals({'a':1}, self.settings._settings) self.assertEquals({'a':1}, self._read_settings())
def test_updating_settings_with_dict(self): defaults = {'foo':'bar', 'hello':'world'} self.settings = RFSettings(path=self.settings_file, defaults=defaults) self.assertEquals(self.settings._settings, defaults) self.settings.update({'foo':'new value'}) expected = {'foo':'new value', 'hello':'world'} self.assertEquals(self.settings._settings, expected) self.assertEquals(self._read_settings(), expected)
def test_default_values_are_read_correctly_when_invalid_settings(self): defaults = {'foo':'bar'} self._add_invalid_data_to_user_settings_file('invalid syntax =') self.settings = RFSettings(path=self.settings_file, defaults=defaults, logger=self.logger.log) self.assertEquals(self.settings._settings, defaults) log_end = "testsettings.py' is not a valid Python file.\ninvalid syntax (testsettings.py, line 1)" self.assertTrue(self.logger.logs[0].startswith('Settings file')) self.assertTrue(self.logger.logs[0].endswith(log_end))
def test_updating_settings_with_module_and_not_saving(self): defaults = {'foo':'bar', 'hello':'world'} self.settings = RFSettings(path=self.settings_file, defaults=defaults) self._write_settings({'foo':'new value'}) expected = {'foo':'new value', 'hello':'world'} self.assertEquals(self.settings._settings, defaults) self.settings.update(self.settings_file, save=False) self.assertEquals(self.settings._settings, expected) self.assertEquals(self._read_settings(), {'foo':'new value'})
def test_loading(self): self.settings = RFSettings(path=self.settings_file) values = {'foo':'bar', 'hello':'world'} self._write_settings(values) self.settings.load() self.assertEquals(values, self.settings._settings)
def test_saving(self): self.settings = RFSettings(path=self.settings_file) values = {'foo':'bar', 'hello':'world'} self.settings._settings = values self.settings.save() self.assertEquals(values, self._read_settings())
def test_updating_settings_with_none(self): defaults = {'foo':'bar', 'hello':'world'} self.settings = RFSettings(path=self.settings_file, defaults=defaults) self.settings.update(None) self.assertEquals(self.settings._settings, defaults)
def test_getting_settings_with_getitem(self): defaults = {'foo':'bar', 'hello':'world'} self.settings = RFSettings(path=self.settings_file, defaults=defaults) self.assertEquals('bar', self.settings['foo'])
def test_empty_logger_when_invalid_settings(self): defaults = {'foo':'bar'} self._add_invalid_data_to_user_settings_file('invalid syntax') self.settings = RFSettings(path=self.settings_file) self.assertEquals(self.settings._settings, {})
def test_default_values_are_read_correctly_when_no_user_settings(self): defaults = {'foo':'bar'} self.settings = RFSettings(path=self.settings_file, defaults=defaults) self.assertEquals(self.settings._settings, defaults)
class TestRFSettings(unittest.TestCase): def setUp(self): self.logger = Logger() self.settings_file = os.path.join(os.path.dirname(__file__), 'data', 'testsettings.py') def tearDown(self): self.settings.remove() def test_default_values_are_read_correctly_when_no_user_settings(self): defaults = {'foo':'bar'} self.settings = RFSettings(path=self.settings_file, defaults=defaults) self.assertEquals(self.settings._settings, defaults) def test_default_values_are_read_correctly_when_invalid_settings(self): defaults = {'foo':'bar'} self._add_invalid_data_to_user_settings_file('invalid syntax =') self.settings = RFSettings(path=self.settings_file, defaults=defaults, logger=self.logger.log) self.assertEquals(self.settings._settings, defaults) log_end = "testsettings.py' is not a valid Python file.\ninvalid syntax (testsettings.py, line 1)" self.assertTrue(self.logger.logs[0].startswith('Settings file')) self.assertTrue(self.logger.logs[0].endswith(log_end)) def test_empty_logger_when_invalid_settings(self): defaults = {'foo':'bar'} self._add_invalid_data_to_user_settings_file('invalid syntax') self.settings = RFSettings(path=self.settings_file) self.assertEquals(self.settings._settings, {}) def test_default_values_are_read_correctly_when_user_settings(self): defaults = {'foo':'bar', 'hello':'world'} self._write_settings({'foo':'new value'}) expected = {'foo':'new value', 'hello':'world'} self.settings = RFSettings(path=self.settings_file, defaults=defaults) self.assertEquals(self.settings._settings, expected) def test_changing_settings_with_setitem(self): defaults = {'foo':'bar', 'hello':'world'} self.settings = RFSettings(path=self.settings_file, defaults=defaults) self.settings['foo'] = 'new value' expected = {'foo':'new value', 'hello':'world'} self.assertEquals(expected, self.settings._settings) def test_getting_settings_with_getitem(self): defaults = {'foo':'bar', 'hello':'world'} self.settings = RFSettings(path=self.settings_file, defaults=defaults) self.assertEquals('bar', self.settings['foo']) def test_updating_settings_with_dict(self): defaults = {'foo':'bar', 'hello':'world'} self.settings = RFSettings(path=self.settings_file, defaults=defaults) self.assertEquals(self.settings._settings, defaults) self.settings.update({'foo':'new value'}) expected = {'foo':'new value', 'hello':'world'} self.assertEquals(self.settings._settings, expected) self.assertEquals(self._read_settings(), expected) def test_updating_settings_with_module(self): defaults = {'foo':'bar', 'hello':'world'} self.settings = RFSettings(path=self.settings_file, defaults=defaults) self._write_settings({'foo':'new value'}) expected = {'foo':'new value', 'hello':'world'} self.assertEquals(self.settings._settings, defaults) self.settings.update(self.settings_file) self.assertEquals(self.settings._settings, expected) self.assertEquals(self._read_settings(), expected) def test_updating_settings_with_module_and_not_saving(self): defaults = {'foo':'bar', 'hello':'world'} self.settings = RFSettings(path=self.settings_file, defaults=defaults) self._write_settings({'foo':'new value'}) expected = {'foo':'new value', 'hello':'world'} self.assertEquals(self.settings._settings, defaults) self.settings.update(self.settings_file, save=False) self.assertEquals(self.settings._settings, expected) self.assertEquals(self._read_settings(), {'foo':'new value'}) def test_updating_settings_with_none(self): defaults = {'foo':'bar', 'hello':'world'} self.settings = RFSettings(path=self.settings_file, defaults=defaults) self.settings.update(None) self.assertEquals(self.settings._settings, defaults) def test_saving(self): self.settings = RFSettings(path=self.settings_file) values = {'foo':'bar', 'hello':'world'} self.settings._settings = values self.settings.save() self.assertEquals(values, self._read_settings()) def test_loading(self): self.settings = RFSettings(path=self.settings_file) values = {'foo':'bar', 'hello':'world'} self._write_settings(values) self.settings.load() self.assertEquals(values, self.settings._settings) def test_restoring(self): self.settings = RFSettings(path=self.settings_file, defaults={'a':1}) values = {'foo':'bar', 'hello':'world'} self.settings.update(values) values['a'] = 1 self.assertEquals(values, self.settings._settings) self.settings.restore() self.assertEquals({'a':1}, self.settings._settings) self.assertEquals({'a':1}, self._read_settings()) def _write_settings(self, dict): io = SettingsIO(path=self.settings_file) io.write(dict) def _read_settings(self): io = SettingsIO(path=self.settings_file) return io.read() def _add_invalid_data_to_user_settings_file(self, data): f = open(self.settings_file, 'w') f.write(data) f.close()