Cleaned up IndexerService and tests

pull/6/head
Mark McDowall 12 years ago
parent 5b50aa5d59
commit 563db453fc

@ -20,17 +20,13 @@ namespace NzbDrone.Core.Test.Indexers
{ {
[TestFixture] [TestFixture]
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
public class IndexerServiceTest : CoreTest public class IndexerServiceTest : CoreTest<IndexerService>
{ {
[Test] [Test]
public void Init_indexer_test() public void Init_indexer_test()
{ {
Mocker.SetConstant<IEnumerable<IndexerBase>>(new List<IndexerBase> { Mocker.Resolve<MockIndexer>() }); Mocker.SetConstant<IEnumerable<IndexerBase>>(new List<IndexerBase> { Mocker.Resolve<MockIndexer>() });
//Mocker.GetMock<IIndexerRepository>()
// .Setup(s => s.Find(typeof(MockIndexer)))
// .Returns()
Mocker.Resolve<IndexerService>(); Mocker.Resolve<IndexerService>();
Mocker.GetMock<IIndexerRepository>() Mocker.GetMock<IIndexerRepository>()
@ -46,7 +42,7 @@ namespace NzbDrone.Core.Test.Indexers
.Setup(s => s.All()) .Setup(s => s.All())
.Returns(new List<Indexer> {new Indexer {OID = 1, Type = "", Enable = false, Name = "Fake Indexer"}}); .Returns(new List<Indexer> {new Indexer {OID = 1, Type = "", Enable = false, Name = "Fake Indexer"}});
Mocker.Resolve<IndexerService>().GetEnabledIndexers().Should().BeEmpty(); Subject.GetEnabledIndexers().Should().BeEmpty();
} }
[Test] [Test]

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using NLog; using NLog;
using NzbDrone.Core.Indexers.Providers; using NzbDrone.Core.Indexers.Providers;
using NzbDrone.Core.Lifecycle;
using PetaPoco; using PetaPoco;
namespace NzbDrone.Core.Indexers namespace NzbDrone.Core.Indexers
@ -15,19 +16,41 @@ namespace NzbDrone.Core.Indexers
Indexer GetSettings(Type type); Indexer GetSettings(Type type);
} }
public class IndexerService : IIndexerService public class IndexerService : IIndexerService, IInitializable
{ {
private readonly IIndexerRepository _indexerRepository; private readonly IIndexerRepository _indexerRepository;
private readonly Logger _logger;
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
private IList<IndexerBase> _indexers; private IList<IndexerBase> _indexers;
public IndexerService(IIndexerRepository indexerRepository, IEnumerable<IndexerBase> indexers) public IndexerService(IIndexerRepository indexerRepository, IEnumerable<IndexerBase> indexers, Logger logger)
{ {
_indexerRepository = indexerRepository; _indexerRepository = indexerRepository;
_logger = logger;
_indexers = indexers.ToList(); _indexers = indexers.ToList();
InitializeIndexers(); }
public void Init()
{
_logger.Debug("Initializing indexers. Count {0}", _indexers.Count);
var currentIndexers = All();
foreach (var feedProvider in _indexers)
{
IndexerBase indexerLocal = feedProvider;
if (!currentIndexers.Exists(c => c.Type == indexerLocal.GetType().ToString()))
{
var settings = new Indexer
{
Enable = indexerLocal.EnabledByDefault,
Type = indexerLocal.GetType().ToString(),
Name = indexerLocal.Name
};
_indexerRepository.Insert(settings);
}
}
} }
public List<Indexer> All() public List<Indexer> All()
@ -43,45 +66,14 @@ namespace NzbDrone.Core.Indexers
public void SaveSettings(Indexer indexer) public void SaveSettings(Indexer indexer)
{ {
if (indexer.OID == 0) //Todo: This will be used in the API
{ _logger.Debug("Upserting Indexer definitions for {0}", indexer.Name);
Logger.Debug("Adding Indexer definitions for {0}", indexer.Name); _indexerRepository.Upsert(indexer);
_indexerRepository.Insert(indexer);
}
else
{
Logger.Debug("Updating Indexer definitions for {0}", indexer.Name);
_indexerRepository.Update(indexer);
}
} }
public Indexer GetSettings(Type type) public Indexer GetSettings(Type type)
{ {
return _indexerRepository.Find(type); return _indexerRepository.Find(type);
} }
private void InitializeIndexers()
{
Logger.Debug("Initializing indexers. Count {0}", _indexers.Count);
var currentIndexers = All();
foreach (var feedProvider in _indexers)
{
IndexerBase indexerLocal = feedProvider;
if (!currentIndexers.Exists(c => c.Type == indexerLocal.GetType().ToString()))
{
var settings = new Indexer
{
Enable = indexerLocal.EnabledByDefault,
Type = indexerLocal.GetType().ToString(),
Name = indexerLocal.Name
};
SaveSettings(settings);
}
}
}
} }
} }

@ -36,7 +36,6 @@ namespace NzbDrone.Core.Jobs
private ProgressNotification _notification; private ProgressNotification _notification;
public JobController(NotificationProvider notificationProvider, IEnumerable<IJob> jobs, IJobRepository jobRepository, Logger logger) public JobController(NotificationProvider notificationProvider, IEnumerable<IJob> jobs, IJobRepository jobRepository, Logger logger)
{ {
StopWatch = new Stopwatch(); StopWatch = new Stopwatch();
@ -61,7 +60,6 @@ namespace NzbDrone.Core.Jobs
} }
} }
public virtual void QueueScheduled() public virtual void QueueScheduled()
{ {
lock (_executionLock) lock (_executionLock)
@ -260,7 +258,5 @@ namespace NzbDrone.Core.Jobs
_logger.Trace("resetting queue processor thread"); _logger.Trace("resetting queue processor thread");
_jobThread = new Thread(ProcessQueue) { Name = "JobQueueThread" }; _jobThread = new Thread(ProcessQueue) { Name = "JobQueueThread" };
} }
} }
} }

@ -279,7 +279,7 @@
<Compile Include="Jobs\RefreshEpsiodeMetadata.cs" /> <Compile Include="Jobs\RefreshEpsiodeMetadata.cs" />
<Compile Include="Jobs\PastWeekBacklogSearchJob.cs" /> <Compile Include="Jobs\PastWeekBacklogSearchJob.cs" />
<Compile Include="Jobs\SearchHistoryCleanupJob.cs" /> <Compile Include="Jobs\SearchHistoryCleanupJob.cs" />
<Compile Include="Lifecycle\IInitilizable.cs" /> <Compile Include="Lifecycle\IInitializable.cs" />
<Compile Include="Model\HistoryQueryModel.cs" /> <Compile Include="Model\HistoryQueryModel.cs" />
<Compile Include="Model\DownloadClientType.cs" /> <Compile Include="Model\DownloadClientType.cs" />
<Compile Include="Instrumentation\LogProvider.cs" /> <Compile Include="Instrumentation\LogProvider.cs" />

@ -2,7 +2,6 @@
<FileVersion>1</FileVersion> <FileVersion>1</FileVersion>
<AutoEnableOnStartup>False</AutoEnableOnStartup> <AutoEnableOnStartup>False</AutoEnableOnStartup>
<AllowParallelTestExecution>true</AllowParallelTestExecution> <AllowParallelTestExecution>true</AllowParallelTestExecution>
<AllowTestsToRunInParallelWithThemselves>true</AllowTestsToRunInParallelWithThemselves>
<FrameworkUtilisationTypeForNUnit>UseDynamicAnalysis</FrameworkUtilisationTypeForNUnit> <FrameworkUtilisationTypeForNUnit>UseDynamicAnalysis</FrameworkUtilisationTypeForNUnit>
<FrameworkUtilisationTypeForGallio>Disabled</FrameworkUtilisationTypeForGallio> <FrameworkUtilisationTypeForGallio>Disabled</FrameworkUtilisationTypeForGallio>
<FrameworkUtilisationTypeForMSpec>Disabled</FrameworkUtilisationTypeForMSpec> <FrameworkUtilisationTypeForMSpec>Disabled</FrameworkUtilisationTypeForMSpec>

Loading…
Cancel
Save