def setUp(self): # Build up a mocked extension self.extension = Mock() self.extension.registration = Mock() self.test_dict = { 'test_key1': 'test_value1', 'test_key2': 'test_value2', } self.extension.registration.settings = self.test_dict self.settings = Settings(self.extension)
def setUp(self): # Build up a mocked extension self.extension = Mock() self.extension.registration = Mock() self.test_dict = {"test_key1": "test_value1", "test_key2": "test_value2"} self.extension.registration.settings = self.test_dict self.settings = Settings(self.extension)
def __init__(self, extension_manager): self.extension_manager = extension_manager self.hooks = set() self.settings = Settings(self) self.admin_site = None self.middleware_instances = [] for middleware_cls in self.middleware: # We may be loading in traditional middleware (which doesn't take # any parameters in the constructor), or special Extension-aware # middleware (which takes an extension parameter). We need to # try to introspect and figure out what it is. try: arg_spec = inspect.getargspec(middleware_cls.__init__) except (AttributeError, TypeError): # There's no custom __init__ here. It may not exist # in the case of an old-style object, in which case we'll # get an AttributeError. Or, it may be a new-style object # with no custom __init__, in which case we'll get a TypeError. arg_spec = None if arg_spec and len(arg_spec) >= 2 and arg_spec[1] == 'extension': middleware_instance = middleware_cls(self) else: middleware_instance = middleware_cls() self.middleware_instances.append(middleware_instance) self.initialize()
class SettingsTest(TestCase): def setUp(self): # Build up a mocked extension self.extension = Mock() self.extension.registration = Mock() self.test_dict = { 'test_key1': 'test_value1', 'test_key2': 'test_value2', } self.extension.registration.settings = self.test_dict self.settings = Settings(self.extension) def test_constructor(self): """Testing the Extension's Settings constructor""" # Build the Settings objects self.assertEqual(self.extension, self.settings.extension) # Ensure that the registration settings dict gets # added to this Settings self.assertEqual(self.test_dict['test_key1'], self.settings['test_key1']) def test_load_updates_dict(self): """Testing that Settings.load correctly updates core dict""" new_dict = { 'test_new_key': 'test_new_value', 'test_key1': 'new_value', } self.extension.registration.settings = new_dict self.settings.load() # Should have added test_new_key, and modified test_key1 self.assertEqual(new_dict['test_new_key'], self.settings['test_new_key']) self.assertEqual(new_dict['test_key1'], self.settings['test_key1']) # Should have left test_key2 alone self.assertEqual(self.test_dict['test_key2'], self.settings['test_key2']) def test_load_silently_discards(self): """Testing that Settings.load silently ignores invalid settings""" some_string = 'This is a string' self.extension.registration.settings = some_string try: self.settings.load() except Exception: self.fail("Shouldn't have raised an exception") def test_save_updates_database(self): """Testing that Settings.save will correctly update registration""" registration = self.extension.registration self.settings['test_new_key'] = 'Test new value' generated_dict = dict(self.settings) self.settings.save() self.assertTrue(registration.save.called) self.assertEqual(generated_dict, registration.settings) def test_save_emits_settings_saved_signal(self): """Testing that Settings.save emits the settings_saved signal""" saw = {} def on_settings_saved(*args, **kwargs): saw['signal'] = True settings_saved.connect(on_settings_saved, sender=self.extension) self.settings['test_new_key'] = 'Test new value' self.settings.save() self.assertIn('signal', saw)