def setUp(self): self.session_registry = SessionPluginRegistry() class TranslateSessionPlugin(object): name = 'translate' regex = r'^translate (?P<from>\w+) (?P<to>\w+)$' self.translate = TranslateSessionPlugin
class SessionPluginRegistryTest(TestCase): def setUp(self): self.session_registry = SessionPluginRegistry() class TranslateSessionPlugin(object): name = 'translate' regex = r'^translate (?P<from>\w+) (?P<to>\w+)$' self.translate = TranslateSessionPlugin def test_register_plugin(self): assert 0 == len(self.session_registry.plugins) self.session_registry.register(self.translate) assert 1 == len(self.session_registry.plugins) assert (re.compile(self.translate.regex), self.translate) == \ self.session_registry.plugins[self.translate.name] class OtherTranslatePlugin(object): name = 'translate' regex = r'*' # ignore duplicates self.session_registry.register(OtherTranslatePlugin) assert 1 == len(self.session_registry.plugins) assert (re.compile(self.translate.regex), self.translate) == \ self.session_registry.plugins[self.translate.name] def test_unregister_plugin_by_name(self): assert 0 == len(self.session_registry.plugins) self.session_registry.register(self.translate) assert 1 == len(self.session_registry.plugins) self.session_registry.unregister(self.translate.name) assert 0 == len(self.session_registry.plugins) def test_unregister_plugin_by_callable(self): self.session_registry.register(self.translate) assert 1 == len(self.session_registry.plugins) self.session_registry.unregister(self.translate) # by callable, using ``name`` attribute assert 0 == len(self.session_registry.plugins) def test_clear(self): self.session_registry.register(self.translate) assert 1 == len(self.session_registry.plugins) self.session_registry.clear() assert 0 == len(self.session_registry.plugins)