def test_must_register_single_plugin_on_initialization(self): new_sam_plugin = SamPlugins(self.mock_plugin) self.assertTrue(new_sam_plugin.is_registered(self.mock_plugin_name))
class TestSamPluginsRegistration(TestCase): def setUp(self): # Setup the plugin to be a "subclass" of the BasePlugin self.mock_plugin_name = "mock_plugin" self.mock_plugin = Mock(spec=BasePlugin) self.mock_plugin.name = self.mock_plugin_name self.sam_plugins = SamPlugins() def test_register_must_work(self): self.sam_plugins.register(self.mock_plugin) self.assertEquals(self.mock_plugin, self.sam_plugins._get(self.mock_plugin_name)) def test_register_must_raise_on_duplicate_plugin(self): self.sam_plugins.register(self.mock_plugin) with self.assertRaises(ValueError): self.sam_plugins.register(self.mock_plugin) def test_register_must_raise_on_invalid_plugin_type(self): # Plugin which is not an instance of BaseClass bad_plugin = Mock() bad_plugin.name = "some name" with self.assertRaises(ValueError): self.sam_plugins.register(bad_plugin) def test_register_must_append_plugins_to_end(self): plugin1 = _make_mock_plugin("plugin1") plugin2 = _make_mock_plugin("plugin2") plugin3 = _make_mock_plugin("plugin3") self.sam_plugins.register(plugin1) self.sam_plugins.register(plugin2) self.sam_plugins.register(plugin3) expected = [plugin1, plugin2, plugin3] self.assertEquals(expected, self.sam_plugins._plugins) def test_must_register_plugins_list_on_initialization(self): plugin1 = _make_mock_plugin("plugin1") plugin2 = _make_mock_plugin("plugin2") plugins_list = [plugin1, plugin2] new_sam_plugin = SamPlugins(plugins_list) # Also make sure the plugins are in the same order as in input self.assertEquals(plugins_list, new_sam_plugin._plugins) def test_must_register_single_plugin_on_initialization(self): new_sam_plugin = SamPlugins(self.mock_plugin) self.assertTrue(new_sam_plugin.is_registered(self.mock_plugin_name)) def test_len_must_get_num_registered_plugins(self): plugin1 = _make_mock_plugin("plugin1") plugin2 = _make_mock_plugin("plugin2") self.sam_plugins.register(plugin1) self.sam_plugins.register(plugin2) self.assertEquals(2, len(self.sam_plugins)) def test_is_registered_must_find_registered_plugins(self): self.sam_plugins.register(self.mock_plugin) self.assertTrue(self.sam_plugins.is_registered(self.mock_plugin_name)) def test_is_registered_must_return_false_when_no_plugins_registered(self): # No Plugins are registered self.assertFalse(self.sam_plugins.is_registered(self.mock_plugin_name)) def test_is_registered_must_return_false_for_non_existent_plugins(self): # Register a plugin but check with some random name self.sam_plugins.register(self.mock_plugin) self.assertFalse(self.sam_plugins.is_registered("some plugin name")) def test_get_must_return_a_registered_plugin(self): plugin1 = _make_mock_plugin("plugin1") plugin2 = _make_mock_plugin("plugin2") self.sam_plugins.register(plugin1) self.sam_plugins.register(plugin2) self.assertEquals(plugin1, self.sam_plugins._get(plugin1.name)) self.assertEquals(plugin2, self.sam_plugins._get(plugin2.name)) def test_get_must_handle_no_registered_plugins(self): # NO plugins registered self.assertIsNone(self.sam_plugins._get("some plugin")) def test_get_must_handle_non_registered_plugins(self): # Register one plugin, but try to retrieve some other non-existent plugin self.sam_plugins.register(self.mock_plugin) self.assertIsNone(self.sam_plugins._get("some plugin"))