def test_read_defaults(self): handler = SettingsHandler() handler.widget_class = SimpleWidget defaults = {'a': 5, 'b': {1: 5}} with self.override_default_settings(SimpleWidget, defaults): handler.read_defaults() self.assertEqual(handler.defaults, defaults)
def test_read_defaults(self): handler = SettingsHandler() handler.widget_class = SimpleWidget defaults = {'a': 5, 'b': {1: 5}} with self.override_default_settings(SimpleWidget, defaults): handler.read_defaults() self.assertEqual(handler.defaults, defaults)
def test_read_defaults(self): default_settings = {'a': 5, 'b': {1: 5}} f, settings_file = mkstemp(suffix='.ini') with open(settings_file, 'wb') as f: pickle.dump(default_settings, f) handler = SettingsHandler() handler._get_settings_filename = lambda: settings_file handler.read_defaults() self.assertEqual(handler.defaults, default_settings) os.remove(settings_file)
def test_read_defaults_migrates_settings(self): handler = SettingsHandler() handler.widget_class = SimpleWidget migrate_settings = Mock() with patch.object(SimpleWidget, "migrate_settings", migrate_settings): # Old settings without version settings = {"value": 5} with self.override_default_settings(SimpleWidget, settings): handler.read_defaults() migrate_settings.assert_called_with(settings, 0) migrate_settings.reset() # Settings with version settings_with_version = dict(settings) settings_with_version[VERSION_KEY] = 1 with self.override_default_settings(SimpleWidget, settings_with_version): handler.read_defaults() migrate_settings.assert_called_with(settings, 1)
def test_read_defaults_migrates_settings(self): handler = SettingsHandler() handler.widget_class = SimpleWidget migrate_settings = Mock() with patch.object(SimpleWidget, "migrate_settings", migrate_settings): # Old settings without version settings = {"value": 5} with self.override_default_settings(SimpleWidget, settings): handler.read_defaults() migrate_settings.assert_called_with(settings, 0) migrate_settings.reset() # Settings with version settings_with_version = dict(settings) settings_with_version[VERSION_KEY] = 1 with self.override_default_settings(SimpleWidget, settings_with_version): handler.read_defaults() migrate_settings.assert_called_with(settings, 1)
def test_fast_save(self): handler = SettingsHandler() handler.read_defaults = lambda: None handler.bind(SimpleWidget) widget = SimpleWidget() handler.fast_save(widget, 'component.int_setting', 5) self.assertEqual(Component.int_setting.default, 5) handler.fast_save(widget, 'non_setting', 4)
def test_fast_save(self): handler = SettingsHandler() handler.read_defaults = lambda: None handler.bind(SimpleWidget) widget = SimpleWidget() handler.fast_save(widget, 'component.int_setting', 5) self.assertEqual(Component.int_setting.default, 5) handler.fast_save(widget, 'non_setting', 4)
def test_create_uses_template_if_provided(self): template = SettingsHandler() template.read_defaults = lambda: None template.a = 'a' template.b = 'b' handler = SettingsHandler.create(SimpleWidget, template) self.assertEqual(handler.a, 'a') self.assertEqual(handler.b, 'b') # create should copy the template handler.b = 'B' self.assertEqual(template.b, 'b')
def test_create_uses_template_if_provided(self): template = SettingsHandler() template.read_defaults = lambda: None template.a = 'a' template.b = 'b' handler = SettingsHandler.create(SimpleWidget, template) self.assertEqual(handler.a, 'a') self.assertEqual(handler.b, 'b') # create should copy the template handler.b = 'B' self.assertEqual(template.b, 'b')
def test_fast_save_siblings_spill(self): handler_mk1 = SettingsHandler() handler_mk1.read_defaults = lambda: None handler_mk1.bind(SimpleWidgetMk1) widget_mk1 = SimpleWidgetMk1() handler_mk1.fast_save(widget_mk1, "setting", -1) handler_mk1.fast_save(widget_mk1, "component.int_setting", 1) self.assertEqual( handler_mk1.known_settings['setting'].default, -1) self.assertEqual( handler_mk1.known_settings['component.int_setting'].default, 1) handler_mk1.initialize(widget_mk1, data=None) handler_mk1.provider.providers["component"].initialize( widget_mk1.component, data=None) self.assertEqual(widget_mk1.setting, -1) self.assertEqual(widget_mk1.component.int_setting, 1) handler_mk2 = SettingsHandler() handler_mk2.read_defaults = lambda: None handler_mk2.bind(SimpleWidgetMk2) widget_mk2 = SimpleWidgetMk2() handler_mk2.initialize(widget_mk2, data=None) handler_mk2.provider.providers["component"].initialize( widget_mk2.component, data=None) self.assertEqual(widget_mk2.setting, 42, "spils defaults into sibling classes") self.assertEqual(Component.int_setting.default, 42) self.assertEqual(widget_mk2.component.int_setting, 42, "spils defaults into sibling classes")
def test_fast_save_siblings_spill(self): handler_mk1 = SettingsHandler() handler_mk1.read_defaults = lambda: None handler_mk1.bind(SimpleWidgetMk1) widget_mk1 = SimpleWidgetMk1() handler_mk1.fast_save(widget_mk1, "setting", -1) handler_mk1.fast_save(widget_mk1, "component.int_setting", 1) self.assertEqual(handler_mk1.known_settings['setting'].default, -1) self.assertEqual( handler_mk1.known_settings['component.int_setting'].default, 1) handler_mk1.initialize(widget_mk1, data=None) handler_mk1.provider.providers["component"].initialize( widget_mk1.component, data=None) self.assertEqual(widget_mk1.setting, -1) self.assertEqual(widget_mk1.component.int_setting, 1) handler_mk2 = SettingsHandler() handler_mk2.read_defaults = lambda: None handler_mk2.bind(SimpleWidgetMk2) widget_mk2 = SimpleWidgetMk2() handler_mk2.initialize(widget_mk2, data=None) handler_mk2.provider.providers["component"].initialize( widget_mk2.component, data=None) self.assertEqual(widget_mk2.setting, 42, "spils defaults into sibling classes") self.assertEqual(Component.int_setting.default, 42) self.assertEqual(widget_mk2.component.int_setting, 42, "spils defaults into sibling classes")
def test_schema_only_settings(self): handler = SettingsHandler() handler.read_defaults = lambda: None handler.bind(SimpleWidget) # fast_save should not update defaults widget = SimpleWidget() handler.fast_save(widget, 'schema_only_setting', 5) self.assertEqual( handler.known_settings['schema_only_setting'].default, None) # update_defaults should not update defaults widget.schema_only_setting = 5 handler.update_defaults(widget) self.assertEqual( handler.known_settings['schema_only_setting'].default, None) # pack_data should pack setting widget.schema_only_setting = 5 data = handler.pack_data(widget) self.assertEqual(data['schema_only_setting'], 5)
def test_schema_only_settings(self): handler = SettingsHandler() handler.read_defaults = lambda: None handler.bind(SimpleWidget) # fast_save should not update defaults widget = SimpleWidget() handler.fast_save(widget, 'schema_only_setting', 5) self.assertEqual(handler.known_settings['schema_only_setting'].default, None) # update_defaults should not update defaults widget.schema_only_setting = 5 handler.update_defaults(widget) self.assertEqual(handler.known_settings['schema_only_setting'].default, None) # pack_data should pack setting widget.schema_only_setting = 5 data = handler.pack_data(widget) self.assertEqual(data['schema_only_setting'], 5)