From 120758bf023451eaa08bd89c3de6829d71ba5071 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 2 Jan 2013 20:09:37 -0800 Subject: [PATCH] More CentralDispatch Tests (bug caught!) --- NzbDrone.Core.Test/CentralDispatchFixture.cs | 41 ++++++++++++++- NzbDrone.Core/CentralDispatch.cs | 54 ++++++++++---------- 2 files changed, 65 insertions(+), 30 deletions(-) diff --git a/NzbDrone.Core.Test/CentralDispatchFixture.cs b/NzbDrone.Core.Test/CentralDispatchFixture.cs index 4ad837a2f..de64d8c55 100644 --- a/NzbDrone.Core.Test/CentralDispatchFixture.cs +++ b/NzbDrone.Core.Test/CentralDispatchFixture.cs @@ -8,7 +8,9 @@ using NUnit.Framework; using NzbDrone.Common; using NzbDrone.Core.Jobs; using NzbDrone.Core.Providers; +using NzbDrone.Core.Providers.ExternalNotification; using NzbDrone.Core.Providers.Indexer; +using NzbDrone.Core.Providers.Metadata; using NzbDrone.Core.Test.Framework; namespace NzbDrone.Core.Test @@ -18,6 +20,8 @@ namespace NzbDrone.Core.Test { readonly IList indexers = typeof(CentralDispatch).Assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(IndexerBase))).ToList(); readonly IList jobs = typeof(CentralDispatch).Assembly.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IJob))).ToList(); + readonly IList extNotifications = typeof(CentralDispatch).Assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(ExternalNotificationBase))).ToList(); + readonly IList metadata = typeof(CentralDispatch).Assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(MetadataBase))).ToList(); private IContainer kernel; @@ -50,7 +54,6 @@ namespace NzbDrone.Core.Test } } - [Test] public void All_jobs_should_be_registered() { @@ -63,7 +66,6 @@ namespace NzbDrone.Core.Test registeredJobs.Should().HaveSameCount(jobs); } - [Test] public void All_indexers_should_be_registered() { @@ -76,6 +78,29 @@ namespace NzbDrone.Core.Test registeredIndexers.Should().HaveSameCount(indexers); } + [Test] + public void All_externalNotifiers_should_be_registered() + { + //Assert + + var externalNotificationBases = kernel.Resolve>(); + + extNotifications.Should().NotBeEmpty(); + + externalNotificationBases.Should().HaveSameCount(extNotifications); + } + + [Test] + public void All_metadata_clients_should_be_registered() + { + //Assert + + var metadataBases = kernel.Resolve>(); + + metadata.Should().NotBeEmpty(); + + metadataBases.Should().HaveSameCount(metadata); + } [Test] public void jobs_are_initialized() @@ -89,6 +114,18 @@ namespace NzbDrone.Core.Test kernel.Resolve().All().Should().HaveSameCount(indexers); } + [Test] + public void externalNotifiers_are_initialized() + { + kernel.Resolve().All().Should().HaveSameCount(extNotifications); + } + + [Test] + public void metadata_clients_are_initialized() + { + kernel.Resolve().All().Should().HaveSameCount(metadata); + } + [Test] public void quality_profile_initialized() { diff --git a/NzbDrone.Core/CentralDispatch.cs b/NzbDrone.Core/CentralDispatch.cs index fe4a78656..ba2a0e019 100644 --- a/NzbDrone.Core/CentralDispatch.cs +++ b/NzbDrone.Core/CentralDispatch.cs @@ -45,9 +45,9 @@ namespace NzbDrone.Core ContainerBuilder.RegisterType(); InitDatabase(); - InitExternalNotifications(); - InitMetadataProviders(); - InitIndexers(); + RegisterExternalNotifications(); + RegisterMetadataProviders(); + RegisterIndexers(); RegisterJobs(); } @@ -76,22 +76,13 @@ namespace NzbDrone.Core ContainerBuilder.RegisterType().WithParameter(ResolvedParameter.ForNamed("LogProvider")); } - private void InitIndexers() + private void RegisterIndexers() { logger.Debug("Registering Indexers..."); ContainerBuilder.RegisterAssemblyTypes(typeof(CentralDispatch).Assembly) .Where(t => t.BaseType == typeof(IndexerBase)) .As(); - - //ContainerBuilder.Bind().To(); - //ContainerBuilder.Bind().To(); - //ContainerBuilder.Bind().To(); - //ContainerBuilder.Bind().To(); - //ContainerBuilder.Bind().To(); - //ContainerBuilder.Bind().To(); - //ContainerBuilder.Bind().To(); - //ContainerBuilder.Bind().To(); } private void RegisterJobs() @@ -100,40 +91,47 @@ namespace NzbDrone.Core ContainerBuilder.RegisterType().SingleInstance(); - ContainerBuilder.RegisterType().As().SingleInstance(); - ContainerBuilder.RegisterAssemblyTypes(typeof(CentralDispatch).Assembly) .Where(t => t.GetInterfaces().Contains(typeof(IJob))) .As() .SingleInstance(); } - private void InitExternalNotifications() + private void RegisterExternalNotifications() { logger.Debug("Registering External Notifications..."); - ContainerBuilder.RegisterType().As().SingleInstance(); - ContainerBuilder.RegisterType().As().SingleInstance(); - ContainerBuilder.RegisterType().As().SingleInstance(); - ContainerBuilder.RegisterType().As().SingleInstance(); - ContainerBuilder.RegisterType().As().SingleInstance(); - ContainerBuilder.RegisterType().As().SingleInstance(); + + ContainerBuilder.RegisterAssemblyTypes(typeof(CentralDispatch).Assembly) + .Where(t => t.BaseType == typeof(ExternalNotificationBase)) + .As(); + + //ContainerBuilder.RegisterType().As().SingleInstance(); + //ContainerBuilder.RegisterType().As().SingleInstance(); + //ContainerBuilder.RegisterType().As().SingleInstance(); + //ContainerBuilder.RegisterType().As().SingleInstance(); + //ContainerBuilder.RegisterType().As().SingleInstance(); + //ContainerBuilder.RegisterType().As().SingleInstance(); } - private void InitMetadataProviders() + private void RegisterMetadataProviders() { logger.Debug("Registering Metadata Providers..."); - ContainerBuilder.RegisterType().As().SingleInstance(); + ContainerBuilder.RegisterAssemblyTypes(typeof(CentralDispatch).Assembly) + .Where(t => t.IsSubclassOf(typeof(MetadataBase))) + .As(); + + //ContainerBuilder.RegisterType().As().SingleInstance(); } - private void InitReporting(IContainer container) + private void RegisterReporting(IContainer container) { EnvironmentProvider.UGuid = container.Resolve().UGuid; ReportingService.RestProvider = container.Resolve(); ReportingService.SetupExceptronDriver(); } - private void InitQuality(IContainer container) + private void RegisterQuality(IContainer container) { logger.Debug("Initializing Quality..."); container.Resolve().SetupDefaultProfiles(); @@ -174,8 +172,8 @@ namespace NzbDrone.Core container.Resolve().Register(); LogConfiguration.Reload(); - InitReporting(container); - InitQuality(container); + RegisterReporting(container); + RegisterQuality(container); var indexers = container.Resolve>(); container.Resolve().InitializeIndexers(indexers.ToList());