public void GivenThatNoPluginsExists_WhenGetPluginByNameIsCalled_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.GetPluginByName("name");
        }
        public void TestPluginLoading()
        {
            DefaultPluginManager man = new DefaultPluginManager();

            Assert.True(man.LoadedPlugins.Any(), "No plugins were found.");
            Assert.True(man.LoadedPlugins.Any(d => d.Name == "MiscTools"), "The default MiscTools plugin wasn't found.");

            foreach (ILecternPlugin plugin in man.LoadedPlugins)
            {
                plugin.Load();
            }
        }
        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 GivenThatOnePluginExists_WhenGetAllPluginsIsCalledAfterLoading_ThenTheReturnedListContainsOnePlugin()
        {
            var sut = new DefaultPluginManager();
            var pluginLoaderStub = MockRepository.GenerateStub<IPluginLoader>();
            pluginLoaderStub.Stub(x => x.LoadPlugins()).Return(new List<YarpPluginContainer> { new YarpPluginContainer(MockRepository.GenerateStub<IYarpPlugin>(), new YarpPluginMetadata("id", "name", "author", "desc", "version", "categoryKD")) });
            sut.PluginLoader = pluginLoaderStub;

            sut.LoadPlugins();
            var plugins = sut.GetAllPlugins();

            Assert.AreEqual(1, plugins.Count());
        }
        public void GivenThatNoPluginsExists_WhenGetAllPluginsIsCalledAfterLoading_ThenTheReturnedListIsEmpty()
        {
            var sut = new DefaultPluginManager();
            var pluginLoaderStub = MockRepository.GenerateStub<IPluginLoader>();
            pluginLoaderStub.Stub(x => x.LoadPlugins()).Return(Enumerable.Empty<YarpPluginContainer>());
            sut.PluginLoader = pluginLoaderStub;

            sut.LoadPlugins();
            var plugins = sut.GetAllPlugins();

            Assert.AreEqual(0, plugins.Count());
        }
        public void GivenThatPluginsExistsWithCorrectName_WhenGetPluginByNameIsCalled_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.GetPluginByName("testName");

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