Sonarr/src/NzbDrone.Core.Test/IndexerTests/SeasonSearchFixture.cs

92 lines
3.1 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using FizzWare.NBuilder;
2014-01-14 19:58:53 +00:00
using FluentValidation.Results;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Http;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Parser.Model;
2014-01-14 19:58:53 +00:00
using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.Tv;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.IndexerTests
{
[TestFixture]
public class SeasonSearchFixture : TestBase<FetchFeedService>
{
private Series _series;
[SetUp]
public void Setup()
{
_series = Builder<Series>.CreateNew().Build();
var response = new HttpResponse(null, new HttpHeader(), "<xml></xml>", System.Net.HttpStatusCode.OK);
Mocker.GetMock<IHttpClient>()
.Setup(s => s.Get(It.IsAny<HttpRequest>())).Returns(response);
}
2014-01-14 19:58:53 +00:00
private IndexerBase<TestIndexerSettings> WithIndexer(bool paging, int resultCount)
{
2014-01-14 19:58:53 +00:00
var results = Builder<ReleaseInfo>.CreateListOfSize(resultCount)
.Build();
2014-01-14 19:58:53 +00:00
var indexer = Mocker.GetMock<IndexerBase<TestIndexerSettings>>();
2014-01-14 19:58:53 +00:00
indexer.Setup(s => s.Parser.Process(It.IsAny<String>(), It.IsAny<String>()))
.Returns(results);
indexer.Setup(s => s.GetSeasonSearchUrls(It.IsAny<List<String>>(), It.IsAny<Int32>(), It.IsAny<Int32>(), It.IsAny<Int32>()))
2014-01-14 19:58:53 +00:00
.Returns(new List<string> { "http://www.nzbdrone.com" });
indexer.SetupGet(s => s.SupportedPageSize).Returns(paging ? 100 : 0);
2014-01-14 19:58:53 +00:00
var definition = new IndexerDefinition();
definition.Name = "Test";
indexer.SetupGet(s => s.Definition)
.Returns(definition);
return indexer.Object;
}
[Test]
public void should_not_use_offset_if_result_count_is_less_than_90()
{
2014-01-14 19:58:53 +00:00
var indexer = WithIndexer(true, 25);
Subject.Fetch(indexer, new SeasonSearchCriteria { Series = _series, SceneTitles = new List<string>{_series.Title} });
Mocker.GetMock<IHttpClient>().Verify(v => v.Get(It.IsAny<HttpRequest>()), Times.Once());
}
[Test]
public void should_not_use_offset_for_sites_that_do_not_support_it()
{
2014-01-14 19:58:53 +00:00
var indexer = WithIndexer(false, 125);
Subject.Fetch(indexer, new SeasonSearchCriteria { Series = _series, SceneTitles = new List<string> { _series.Title } });
Mocker.GetMock<IHttpClient>().Verify(v => v.Get(It.IsAny<HttpRequest>()), Times.Once());
}
[Test]
public void should_not_use_offset_if_its_already_tried_10_times()
{
2014-01-14 19:58:53 +00:00
var indexer = WithIndexer(true, 100);
Subject.Fetch(indexer, new SeasonSearchCriteria { Series = _series, SceneTitles = new List<string> { _series.Title } });
Mocker.GetMock<IHttpClient>().Verify(v => v.Get(It.IsAny<HttpRequest>()), Times.Exactly(10));
}
}
2014-01-14 19:58:53 +00:00
public class TestIndexerSettings : IProviderConfig
{
public ValidationResult Validate()
{
throw new NotImplementedException();
}
}
}