Some test cleanup for season search

This commit is contained in:
Mark McDowall 2014-01-14 11:58:53 -08:00
parent 3ccdbca712
commit c50fb84216
5 changed files with 37 additions and 62 deletions

View File

@ -20,7 +20,6 @@ namespace NzbDrone.Core.Test.IndexerTests.IntegrationTests
public void SetUp() public void SetUp()
{ {
UseRealHttp(); UseRealHttp();
Mocker.SetConstant<IIndexerParsingService>(new IndexerParsingService());
} }
[Test] [Test]

View File

@ -1,17 +1,14 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Runtime.Remoting.Messaging;
using System.Text;
using FizzWare.NBuilder; using FizzWare.NBuilder;
using FluentValidation.Results;
using Moq; using Moq;
using NUnit.Framework; using NUnit.Framework;
using NzbDrone.Common; using NzbDrone.Common;
using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers;
using NzbDrone.Core.Indexers.Newznab;
using NzbDrone.Core.Indexers.Omgwtfnzbs;
using NzbDrone.Core.IndexerSearch.Definitions; using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.Tv; using NzbDrone.Core.Tv;
using NzbDrone.Test.Common; using NzbDrone.Test.Common;
@ -21,52 +18,44 @@ namespace NzbDrone.Core.Test.IndexerTests
public class SeasonSearchFixture : TestBase<FetchFeedService> public class SeasonSearchFixture : TestBase<FetchFeedService>
{ {
private Series _series; private Series _series;
private IIndexer _newznab;
private IIndexer _omgwtfnzbs;
[SetUp] [SetUp]
public void Setup() public void Setup()
{ {
_series = Builder<Series>.CreateNew().Build(); _series = Builder<Series>.CreateNew().Build();
_newznab = new Newznab(); Mocker.GetMock<IHttpProvider>().Setup(s => s.DownloadString(It.IsAny<String>())).Returns("<xml></xml>");
_newznab.Definition = new IndexerDefinition();
_newznab.Definition.Name = "nzbs.org";
_newznab.Definition.Settings = new NewznabSettings
{
ApiKey = "",
Url = "http://nzbs.org"
};
_omgwtfnzbs = new Omgwtfnzbs();
_omgwtfnzbs.Definition = new IndexerDefinition();
_omgwtfnzbs.Definition.Name = "omgwtfnzbs";
_omgwtfnzbs.Definition.Settings = new OmgwtfnzbsSettings
{
ApiKey = "",
Username = "NzbDrone"
};
} }
private void WithResults(int count) private IndexerBase<TestIndexerSettings> WithIndexer(bool paging, int resultCount)
{ {
var results = Builder<ReleaseInfo>.CreateListOfSize(count) var results = Builder<ReleaseInfo>.CreateListOfSize(resultCount)
.Build(); .Build();
Mocker.GetMock<IIndexerParsingService>() var indexer = Mocker.GetMock<IndexerBase<TestIndexerSettings>>();
.Setup(s => s.Parse(It.IsAny<IIndexer>(), It.IsAny<String>(), It.IsAny<String>()))
.Returns(results);
Mocker.GetMock<IHttpProvider>().Setup(s => s.DownloadString(It.IsAny<String>())).Returns("<xml></xml>"); indexer.Setup(s => s.Parser.Process(It.IsAny<String>(), It.IsAny<String>()))
.Returns(results);
indexer.Setup(s => s.GetSeasonSearchUrls(It.IsAny<String>(), It.IsAny<Int32>(), It.IsAny<Int32>(), It.IsAny<Int32>()))
.Returns(new List<string> { "http://www.nzbdrone.com" });
indexer.SetupGet(s => s.SupportsPaging).Returns(paging);
var definition = new IndexerDefinition();
definition.Name = "Test";
indexer.SetupGet(s => s.Definition)
.Returns(definition);
return indexer.Object;
} }
[Test] [Test]
public void should_not_use_offset_if_result_count_is_less_than_90() public void should_not_use_offset_if_result_count_is_less_than_90()
{ {
WithResults(25); var indexer = WithIndexer(true, 25);
Subject.Fetch(_newznab, new SeasonSearchCriteria { Series = _series, SceneTitle = _series.Title }); Subject.Fetch(indexer, new SeasonSearchCriteria { Series = _series, SceneTitle = _series.Title });
Mocker.GetMock<IHttpProvider>().Verify(v => v.DownloadString(It.IsAny<String>()), Times.Once()); Mocker.GetMock<IHttpProvider>().Verify(v => v.DownloadString(It.IsAny<String>()), Times.Once());
} }
@ -74,8 +63,8 @@ namespace NzbDrone.Core.Test.IndexerTests
[Test] [Test]
public void should_not_use_offset_for_sites_that_do_not_support_it() public void should_not_use_offset_for_sites_that_do_not_support_it()
{ {
WithResults(25); var indexer = WithIndexer(false, 125);
Subject.Fetch(_omgwtfnzbs, new SeasonSearchCriteria { Series = _series, SceneTitle = _series.Title }); Subject.Fetch(indexer, new SeasonSearchCriteria { Series = _series, SceneTitle = _series.Title });
Mocker.GetMock<IHttpProvider>().Verify(v => v.DownloadString(It.IsAny<String>()), Times.Once()); Mocker.GetMock<IHttpProvider>().Verify(v => v.DownloadString(It.IsAny<String>()), Times.Once());
} }
@ -83,10 +72,18 @@ namespace NzbDrone.Core.Test.IndexerTests
[Test] [Test]
public void should_not_use_offset_if_its_already_tried_10_times() public void should_not_use_offset_if_its_already_tried_10_times()
{ {
WithResults(100); var indexer = WithIndexer(true, 100);
Subject.Fetch(_newznab, new SeasonSearchCriteria { Series = _series, SceneTitle = _series.Title }); Subject.Fetch(indexer, new SeasonSearchCriteria { Series = _series, SceneTitle = _series.Title });
Mocker.GetMock<IHttpProvider>().Verify(v => v.DownloadString(It.IsAny<String>()), Times.Exactly(11)); Mocker.GetMock<IHttpProvider>().Verify(v => v.DownloadString(It.IsAny<String>()), Times.Exactly(11));
} }
} }
public class TestIndexerSettings : IProviderConfig
{
public ValidationResult Validate()
{
throw new NotImplementedException();
}
}
} }

View File

@ -22,12 +22,10 @@ namespace NzbDrone.Core.Indexers
{ {
private readonly Logger _logger; private readonly Logger _logger;
private readonly IHttpProvider _httpProvider; private readonly IHttpProvider _httpProvider;
private readonly IIndexerParsingService _indexerParsingService;
public FetchFeedService(IHttpProvider httpProvider, IIndexerParsingService indexerParsingService, Logger logger) public FetchFeedService(IHttpProvider httpProvider, Logger logger)
{ {
_httpProvider = httpProvider; _httpProvider = httpProvider;
_indexerParsingService = indexerParsingService;
_logger = logger; _logger = logger;
} }
@ -107,7 +105,7 @@ namespace NzbDrone.Core.Indexers
var xml = _httpProvider.DownloadString(url); var xml = _httpProvider.DownloadString(url);
if (!string.IsNullOrWhiteSpace(xml)) if (!string.IsNullOrWhiteSpace(xml))
{ {
result.AddRange(_indexerParsingService.Parse(indexer, xml, url)); result.AddRange(indexer.Parser.Process(xml, url));
} }
else else
{ {

View File

@ -1,18 +0,0 @@
using System.Collections.Generic;
using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.Indexers
{
public interface IIndexerParsingService
{
IEnumerable<ReleaseInfo> Parse(IIndexer indexer, string xml, string url);
}
public class IndexerParsingService : IIndexerParsingService
{
public IEnumerable<ReleaseInfo> Parse(IIndexer indexer, string xml, string url)
{
return indexer.Parser.Process(xml, url);
}
}
}

View File

@ -270,7 +270,6 @@
<Compile Include="Indexers\Eztv\Eztv.cs" /> <Compile Include="Indexers\Eztv\Eztv.cs" />
<Compile Include="Indexers\FetchAndParseRssService.cs" /> <Compile Include="Indexers\FetchAndParseRssService.cs" />
<Compile Include="Indexers\IIndexer.cs" /> <Compile Include="Indexers\IIndexer.cs" />
<Compile Include="Indexers\IndexerParsingService.cs" />
<Compile Include="Indexers\IndexerSettingUpdatedEvent.cs" /> <Compile Include="Indexers\IndexerSettingUpdatedEvent.cs" />
<Compile Include="Indexers\NewznabTestService.cs" /> <Compile Include="Indexers\NewznabTestService.cs" />
<Compile Include="Indexers\IParseFeed.cs" /> <Compile Include="Indexers\IParseFeed.cs" />