diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index fb07bea6a..e9f2fe1a7 100644 --- a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -139,6 +139,9 @@ + + + @@ -331,6 +334,12 @@ Designer Always + + Always + + + Always + Always diff --git a/NzbDrone.Core.Test/ProviderTests/TvRageMappingProviderTests/FindMatchingTvRageSeriesFixture.cs b/NzbDrone.Core.Test/ProviderTests/TvRageMappingProviderTests/FindMatchingTvRageSeriesFixture.cs new file mode 100644 index 000000000..b6f4eafa1 --- /dev/null +++ b/NzbDrone.Core.Test/ProviderTests/TvRageMappingProviderTests/FindMatchingTvRageSeriesFixture.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using FizzWare.NBuilder; +using FluentAssertions; +using NUnit.Framework; +using NzbDrone.Core.Model.TvRage; +using NzbDrone.Core.Providers; +using NzbDrone.Core.Repository; +using NzbDrone.Test.Common; + +namespace NzbDrone.Core.Test.ProviderTests.TvRageMappingProviderTests +{ + public class FindMatchingTvRageSeriesFixture : TestBase + { + private IList _searchResults; + private Series _series; + private Episode _episode; + private TvRageSeries _tvRageSeries; + + [SetUp] + public void Setup() + { + _searchResults = Builder + .CreateListOfSize(5) + .Build(); + + _series = Builder + .CreateNew() + .With(s => s.TvRageId = 0) + .With(s => s.TvRageTitle = null) + .With(s => s.UtcOffset = 0) + .Build(); + + _episode = Builder + .CreateNew() + .With(e => e.AirDate = DateTime.Today.AddDays(-365)) + .Build(); + + _tvRageSeries = Builder + .CreateNew() + .With(s => s.UtcOffset = -8) + .Build(); + + Mocker.GetMock() + .Setup(s => s.GetEpisode(_series.SeriesId, 1, 1)) + .Returns(_episode); + + Mocker.GetMock() + .Setup(s => s.GetCleanName(_series.SeriesId)) + .Returns(""); + + Mocker.GetMock() + .Setup(s => s.SearchSeries(_series.Title)) + .Returns(_searchResults); + + Mocker.GetMock() + .Setup(s => s.GetSeries(_searchResults.First().ShowId)) + .Returns(_tvRageSeries); + } + + private void WithMatchingResult() + { + _series.CleanTitle = Parser.NormalizeTitle(_searchResults.First().Name); + } + + [Test] + public void should_not_set_tvRage_info_when_result_is_null() + { + var result = Mocker.Resolve() + .FindMatchingTvRageSeries(_series); + + result.TvRageId.Should().Be(0); + result.TvRageTitle.Should().Be(null); + result.UtcOffset.Should().Be(0); + } + + [Test] + public void should_set_tvRage_info_when_result_is_returned() + { + WithMatchingResult(); + + var result = Mocker.Resolve() + .FindMatchingTvRageSeries(_series); + + result.TvRageId.Should().Be(_searchResults.First().ShowId); + result.TvRageTitle.Should().Be(_searchResults.First().Name); + result.UtcOffset.Should().Be(_tvRageSeries.UtcOffset); + } + } +} diff --git a/NzbDrone.Core.Test/ProviderTests/TvRageMappingProviderTests/ProcessResultsFixture.cs b/NzbDrone.Core.Test/ProviderTests/TvRageMappingProviderTests/ProcessResultsFixture.cs new file mode 100644 index 000000000..afd8e0779 --- /dev/null +++ b/NzbDrone.Core.Test/ProviderTests/TvRageMappingProviderTests/ProcessResultsFixture.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using FizzWare.NBuilder; +using FluentAssertions; +using NUnit.Framework; +using NzbDrone.Core.Model.TvRage; +using NzbDrone.Core.Providers; +using NzbDrone.Core.Repository; +using NzbDrone.Test.Common; + +namespace NzbDrone.Core.Test.ProviderTests.TvRageMappingProviderTests +{ + public class ProcessResultsFixture : TestBase + { + private IList _searchResults; + private Series _series; + private Episode _episode; + + [SetUp] + public void Setup() + { + _searchResults = Builder + .CreateListOfSize(5) + .Build(); + + _series = Builder.CreateNew().Build(); + + _episode = Builder + .CreateNew() + .With(e => e.AirDate = DateTime.Today.AddDays(-365)) + .Build(); + } + + [Test] + public void should_return_null_if_no_match_is_found() + { + Mocker.Resolve() + .ProcessResults(_searchResults, _series, "nomatchhere", _episode) + .Should() + .BeNull(); + } + + [Test] + public void should_return_result_if_series_clean_name_matches() + { + _series.CleanTitle = Parser.NormalizeTitle(_searchResults.First().Name); + + Mocker.Resolve() + .ProcessResults(_searchResults, _series, "nomatchhere", _episode) + .Should() + .Be(_searchResults.First()); + } + + [Test] + public void should_return_result_if_scene_clean_name_matches() + { + Mocker.Resolve() + .ProcessResults(_searchResults, _series, Parser.NormalizeTitle(_searchResults.First().Name), _episode) + .Should() + .Be(_searchResults.First()); + } + + [Test] + public void should_return_result_if_firstAired_matches() + { + _episode.AirDate = _searchResults.Last().Started; + + Mocker.Resolve() + .ProcessResults(_searchResults, _series, "nomatchhere", _episode) + .Should() + .Be(_searchResults.Last()); + } + } +}