2013-01-19 21:08:03 +00:00
|
|
|
|
using System;
|
2011-07-08 05:41:08 +00:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
2013-01-03 01:09:13 +00:00
|
|
|
|
using Autofac;
|
2011-07-08 05:41:08 +00:00
|
|
|
|
using FluentAssertions;
|
2013-01-19 20:59:36 +00:00
|
|
|
|
using NCrunch.Framework;
|
2011-07-08 05:41:08 +00:00
|
|
|
|
using NUnit.Framework;
|
2013-02-16 22:44:35 +00:00
|
|
|
|
using NzbDrone.Common;
|
2011-12-02 01:33:17 +00:00
|
|
|
|
using NzbDrone.Core.Jobs;
|
2011-07-08 05:41:08 +00:00
|
|
|
|
using NzbDrone.Core.Providers;
|
2013-01-03 04:09:37 +00:00
|
|
|
|
using NzbDrone.Core.Providers.ExternalNotification;
|
2011-07-08 05:41:08 +00:00
|
|
|
|
using NzbDrone.Core.Providers.Indexer;
|
2013-01-03 04:09:37 +00:00
|
|
|
|
using NzbDrone.Core.Providers.Metadata;
|
2011-07-08 05:41:08 +00:00
|
|
|
|
using NzbDrone.Core.Test.Framework;
|
|
|
|
|
|
|
|
|
|
namespace NzbDrone.Core.Test
|
|
|
|
|
{
|
|
|
|
|
[TestFixture]
|
2013-01-19 20:59:36 +00:00
|
|
|
|
[ExclusivelyUses("REAL_LOG_FILE")]
|
2013-01-19 21:08:03 +00:00
|
|
|
|
[Serial]
|
2013-02-02 20:54:03 +00:00
|
|
|
|
class CentralDispatchFixture : SqlCeTest
|
2011-07-08 05:41:08 +00:00
|
|
|
|
{
|
2013-01-19 19:42:06 +00:00
|
|
|
|
readonly IList<string> indexers = typeof(CentralDispatch).Assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(IndexerBase))).Select(c => c.ToString()).ToList();
|
2013-02-16 19:23:31 +00:00
|
|
|
|
readonly IList<string> jobs = typeof(CentralDispatch).Assembly.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IJob))).Select(c => c.ToString()).ToList();
|
2013-01-03 04:09:37 +00:00
|
|
|
|
readonly IList<Type> extNotifications = typeof(CentralDispatch).Assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(ExternalNotificationBase))).ToList();
|
|
|
|
|
readonly IList<Type> metadata = typeof(CentralDispatch).Assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(MetadataBase))).ToList();
|
2011-07-08 05:41:08 +00:00
|
|
|
|
|
2013-01-19 19:42:06 +00:00
|
|
|
|
private readonly IContainer kernel;
|
2011-11-08 20:12:54 +00:00
|
|
|
|
|
2011-11-17 06:40:54 +00:00
|
|
|
|
public CentralDispatchFixture()
|
2011-11-08 20:12:54 +00:00
|
|
|
|
{
|
2013-02-16 22:44:35 +00:00
|
|
|
|
if (EnvironmentProvider.IsMono)
|
|
|
|
|
{
|
|
|
|
|
throw new IgnoreException("SqlCe is not supported");
|
|
|
|
|
}
|
2013-02-16 19:23:31 +00:00
|
|
|
|
|
2011-11-17 06:40:54 +00:00
|
|
|
|
InitLogging();
|
2013-01-03 01:09:13 +00:00
|
|
|
|
var dispatch = new CentralDispatch();
|
2013-01-03 03:04:42 +00:00
|
|
|
|
kernel = dispatch.BuildContainer();
|
2013-01-03 01:09:13 +00:00
|
|
|
|
|
2011-11-17 06:40:54 +00:00
|
|
|
|
WebTimer.Stop();
|
2011-11-08 20:12:54 +00:00
|
|
|
|
}
|
|
|
|
|
|
2011-07-08 05:41:08 +00:00
|
|
|
|
[Test]
|
|
|
|
|
public void InitAppTest()
|
|
|
|
|
{
|
2011-11-17 06:40:54 +00:00
|
|
|
|
kernel.Should().NotBeNull();
|
2011-07-08 05:41:08 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void Resolve_all_providers()
|
|
|
|
|
{
|
|
|
|
|
var providers = typeof(CentralDispatch).Assembly.GetTypes().Where(t => t.Name.EndsWith("Provider")).ToList();
|
|
|
|
|
|
|
|
|
|
providers.Should().NotBeEmpty();
|
|
|
|
|
|
|
|
|
|
foreach (var provider in providers)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Resolving " + provider.Name);
|
2013-01-03 01:09:13 +00:00
|
|
|
|
kernel.Resolve(provider).Should().NotBeNull();
|
2011-07-08 05:41:08 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void All_jobs_should_be_registered()
|
|
|
|
|
{
|
2013-01-03 01:09:13 +00:00
|
|
|
|
var registeredJobs = kernel.Resolve<IEnumerable<IJob>>();
|
2011-07-08 05:41:08 +00:00
|
|
|
|
|
|
|
|
|
jobs.Should().NotBeEmpty();
|
|
|
|
|
|
|
|
|
|
registeredJobs.Should().HaveSameCount(jobs);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void All_indexers_should_be_registered()
|
|
|
|
|
{
|
2013-01-03 01:09:13 +00:00
|
|
|
|
var registeredIndexers = kernel.Resolve<IEnumerable<IndexerBase>>();
|
2011-07-08 05:41:08 +00:00
|
|
|
|
|
|
|
|
|
indexers.Should().NotBeEmpty();
|
|
|
|
|
|
|
|
|
|
registeredIndexers.Should().HaveSameCount(indexers);
|
|
|
|
|
}
|
|
|
|
|
|
2013-01-03 04:09:37 +00:00
|
|
|
|
[Test]
|
|
|
|
|
public void All_externalNotifiers_should_be_registered()
|
|
|
|
|
{
|
|
|
|
|
var externalNotificationBases = kernel.Resolve<IEnumerable<ExternalNotificationBase>>();
|
|
|
|
|
|
|
|
|
|
extNotifications.Should().NotBeEmpty();
|
|
|
|
|
|
|
|
|
|
externalNotificationBases.Should().HaveSameCount(extNotifications);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void All_metadata_clients_should_be_registered()
|
|
|
|
|
{
|
|
|
|
|
var metadataBases = kernel.Resolve<IEnumerable<MetadataBase>>();
|
|
|
|
|
|
|
|
|
|
metadata.Should().NotBeEmpty();
|
|
|
|
|
|
|
|
|
|
metadataBases.Should().HaveSameCount(metadata);
|
|
|
|
|
}
|
2011-07-08 05:41:08 +00:00
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void jobs_are_initialized()
|
|
|
|
|
{
|
2013-01-03 01:09:13 +00:00
|
|
|
|
kernel.Resolve<JobProvider>().All().Should().HaveSameCount(jobs);
|
2011-07-08 05:41:08 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void indexers_are_initialized()
|
|
|
|
|
{
|
2013-01-19 19:42:06 +00:00
|
|
|
|
kernel.Resolve<IndexerProvider>().All().Select(c => c.IndexProviderType).Should().BeEquivalentTo(indexers);
|
2011-07-08 05:41:08 +00:00
|
|
|
|
}
|
|
|
|
|
|
2013-01-03 04:09:37 +00:00
|
|
|
|
[Test]
|
|
|
|
|
public void externalNotifiers_are_initialized()
|
|
|
|
|
{
|
|
|
|
|
kernel.Resolve<ExternalNotificationProvider>().All().Should().HaveSameCount(extNotifications);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void metadata_clients_are_initialized()
|
|
|
|
|
{
|
|
|
|
|
kernel.Resolve<MetadataProvider>().All().Should().HaveSameCount(metadata);
|
|
|
|
|
}
|
|
|
|
|
|
2011-07-08 05:41:08 +00:00
|
|
|
|
[Test]
|
|
|
|
|
public void quality_profile_initialized()
|
|
|
|
|
{
|
2013-01-19 20:59:36 +00:00
|
|
|
|
kernel.Resolve<QualityProvider>().All().Should().HaveCount(2);
|
2011-07-08 05:41:08 +00:00
|
|
|
|
}
|
2011-10-23 21:53:24 +00:00
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void JobProvider_should_be_singletone()
|
|
|
|
|
{
|
2013-01-03 01:09:13 +00:00
|
|
|
|
var first = kernel.Resolve<JobProvider>();
|
|
|
|
|
var second = kernel.Resolve<JobProvider>();
|
2011-10-23 21:53:24 +00:00
|
|
|
|
|
|
|
|
|
first.Should().BeSameAs(second);
|
|
|
|
|
}
|
2011-07-08 05:41:08 +00:00
|
|
|
|
}
|
2012-08-14 00:05:01 +00:00
|
|
|
|
}
|