public void GivenThatNoPluginsExists_WhenGetPluginByIdIsCalled_ThenAnExceptionIsThrown()
        {
            var sut = new DefaultPluginManager();
            var pluginLoaderStub = MockRepository.GenerateStub<IPluginLoader>();
            pluginLoaderStub.Stub(x => x.LoadPlugins()).Return(Enumerable.Empty<YarpPluginContainer>());
            sut.PluginLoader = pluginLoaderStub;

            sut.LoadPlugins();
            // ReSharper disable once UnusedVariable
            var plugin = sut.GetPluginById("id");
        }
        public void GivenThatPluginsExistsButNotWithTheGivenName_WhenGetPluginByIdIsCalled_ThenAnExceptionIsThrown()
        {
            var sut = new DefaultPluginManager();
            var pluginLoaderStub = MockRepository.GenerateStub<IPluginLoader>();
            pluginLoaderStub.Stub(x => x.LoadPlugins()).Return(new[] {new YarpPluginContainer(MockRepository.GenerateStub<IYarpPlugin>(), new YarpPluginMetadata("id","testName",
                "author", "description", "version", "category"))});
            sut.PluginLoader = pluginLoaderStub;

            sut.LoadPlugins();
            // ReSharper disable once UnusedVariable
            var plugin = sut.GetPluginById("faultyId");
        }
        public void GivenThatPluginsExistsWithCorrectName_WhenGetPluginByIdIsCalled_ThenTheExistingPluginIsReturned()
        {
            var sut = new DefaultPluginManager();
            var pluginLoaderStub = MockRepository.GenerateStub<IPluginLoader>();
            YarpPluginContainer existingPlugin = new YarpPluginContainer(MockRepository.GenerateStub<IYarpPlugin>(), new YarpPluginMetadata("id", "testName",
                "author", "description", "version", "category"));
            pluginLoaderStub.Stub(x => x.LoadPlugins()).Return(new[] { existingPlugin });
            sut.PluginLoader = pluginLoaderStub;

            sut.LoadPlugins();
            var plugin = sut.GetPluginById("id");

            Assert.IsTrue(ArePluginMetadatasEqual(existingPlugin.Metadata, plugin.Metadata));
        }