class FeaturesRegistryTests(TestCase): """Unit tests for djblets.features.registry.FeaturesRegistry.""" def setUp(self): super(FeaturesRegistryTests, self).setUp() self.registry = FeaturesRegistry() def test_register_with_missing_id(self): """Testing FeaturesRegistry.register with missing ID""" class InvalidFeature(Feature): pass with self.assertRaises(RegistrationError): self.registry.register(InvalidFeature()) def test_register_with_conflict(self): """Testing FeaturesRegistry.register with conflicting ID""" self.registry.register(DummyFeature(register=False)) with self.assertRaises(FeatureConflictError): self.registry.register(DummyFeature(register=False)) def test_register_calls_initialize(self): """Testing FeaturesRegistry.register initializes feature""" feature = DummyFeature(register=False) self.registry.register(feature) self.assertTrue(getattr(feature, '_feature_inited', False)) def test_unregister_calls_shutdown(self): """Testing FeaturesRegistry.register shuts down feature""" feature = DummyFeature(register=False) self.registry.register(feature) self.assertTrue(getattr(feature, '_feature_inited', False)) self.registry.unregister(feature) self.assertFalse(feature._feature_inited) def test_get_feature(self): """Testing FeaturesRegistry.get_feature""" feature = DummyFeature(register=False) self.registry.register(feature) self.assertEqual(self.registry.get_feature(feature.feature_id), feature) def test_get_feature_with_invalid_id(self): """Testing FeaturesRegistry.get_feature with invalid ID""" self.assertEqual(self.registry.get_feature('bad-id'), None)