|
|
|
@ -1,16 +1,17 @@
|
|
|
|
|
using NzbDrone.Core.DecisionEngine;
|
|
|
|
|
using NzbDrone.Core.DataAugmentation.Scene;
|
|
|
|
|
using NzbDrone.Core.IndexerSearch;
|
|
|
|
|
using NzbDrone.Core.Test.Framework;
|
|
|
|
|
using FizzWare.NBuilder;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using FizzWare.NBuilder;
|
|
|
|
|
using FluentAssertions;
|
|
|
|
|
using Moq;
|
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
using NzbDrone.Core.Tv;
|
|
|
|
|
using NzbDrone.Core.DataAugmentation.Scene;
|
|
|
|
|
using NzbDrone.Core.DecisionEngine;
|
|
|
|
|
using NzbDrone.Core.Indexers;
|
|
|
|
|
using NzbDrone.Core.IndexerSearch;
|
|
|
|
|
using NzbDrone.Core.IndexerSearch.Definitions;
|
|
|
|
|
using NzbDrone.Core.Test.Framework;
|
|
|
|
|
using NzbDrone.Core.Tv;
|
|
|
|
|
|
|
|
|
|
namespace NzbDrone.Core.Test.IndexerSearchTests
|
|
|
|
|
{
|
|
|
|
@ -55,7 +56,7 @@ namespace NzbDrone.Core.Test.IndexerSearchTests
|
|
|
|
|
.Returns(new List<string>());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void WithEpisode(int seasonNumber, int episodeNumber, int? sceneSeasonNumber, int? sceneEpisodeNumber)
|
|
|
|
|
private void WithEpisode(int seasonNumber, int episodeNumber, int? sceneSeasonNumber, int? sceneEpisodeNumber, string airDate = null)
|
|
|
|
|
{
|
|
|
|
|
var episode = Builder<Episode>.CreateNew()
|
|
|
|
|
.With(v => v.SeriesId == _xemSeries.Id)
|
|
|
|
@ -64,6 +65,7 @@ namespace NzbDrone.Core.Test.IndexerSearchTests
|
|
|
|
|
.With(v => v.EpisodeNumber, episodeNumber)
|
|
|
|
|
.With(v => v.SceneSeasonNumber, sceneSeasonNumber)
|
|
|
|
|
.With(v => v.SceneEpisodeNumber, sceneEpisodeNumber)
|
|
|
|
|
.With(v => v.AirDate = (airDate ?? $"{2000 + seasonNumber}-{episodeNumber:00}-05"))
|
|
|
|
|
.With(v => v.Monitored = true)
|
|
|
|
|
.Build();
|
|
|
|
|
|
|
|
|
@ -108,10 +110,22 @@ namespace NzbDrone.Core.Test.IndexerSearchTests
|
|
|
|
|
.Callback<SeasonSearchCriteria>(s => result.Add(s))
|
|
|
|
|
.Returns(new List<Parser.Model.ReleaseInfo>());
|
|
|
|
|
|
|
|
|
|
_mockIndexer.Setup(v => v.Fetch(It.IsAny<DailyEpisodeSearchCriteria>()))
|
|
|
|
|
.Callback<DailyEpisodeSearchCriteria>(s => result.Add(s))
|
|
|
|
|
.Returns(new List<Parser.Model.ReleaseInfo>());
|
|
|
|
|
|
|
|
|
|
_mockIndexer.Setup(v => v.Fetch(It.IsAny<DailySeasonSearchCriteria>()))
|
|
|
|
|
.Callback<DailySeasonSearchCriteria>(s => result.Add(s))
|
|
|
|
|
.Returns(new List<Parser.Model.ReleaseInfo>());
|
|
|
|
|
|
|
|
|
|
_mockIndexer.Setup(v => v.Fetch(It.IsAny<AnimeEpisodeSearchCriteria>()))
|
|
|
|
|
.Callback<AnimeEpisodeSearchCriteria>(s => result.Add(s))
|
|
|
|
|
.Returns(new List<Parser.Model.ReleaseInfo>());
|
|
|
|
|
|
|
|
|
|
_mockIndexer.Setup(v => v.Fetch(It.IsAny<SpecialEpisodeSearchCriteria>()))
|
|
|
|
|
.Callback<SpecialEpisodeSearchCriteria>(s => result.Add(s))
|
|
|
|
|
.Returns(new List<Parser.Model.ReleaseInfo>());
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -249,6 +263,68 @@ namespace NzbDrone.Core.Test.IndexerSearchTests
|
|
|
|
|
criteria.Count.Should().Be(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void season_search_for_daily_should_search_multiple_years()
|
|
|
|
|
{
|
|
|
|
|
WithEpisode(1, 1, null, null, "2005-12-30");
|
|
|
|
|
WithEpisode(1, 2, null, null, "2005-12-31");
|
|
|
|
|
WithEpisode(1, 3, null, null, "2006-01-01");
|
|
|
|
|
WithEpisode(1, 4, null, null, "2006-01-02");
|
|
|
|
|
_xemSeries.SeriesType = SeriesTypes.Daily;
|
|
|
|
|
|
|
|
|
|
var allCriteria = WatchForSearchCriteria();
|
|
|
|
|
|
|
|
|
|
Subject.SeasonSearch(_xemSeries.Id, 1, false, true);
|
|
|
|
|
|
|
|
|
|
var criteria = allCriteria.OfType<DailySeasonSearchCriteria>().ToList();
|
|
|
|
|
|
|
|
|
|
criteria.Count.Should().Be(2);
|
|
|
|
|
criteria[0].Year.Should().Be(2005);
|
|
|
|
|
criteria[1].Year.Should().Be(2006);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void season_search_for_daily_should_search_single_episode_if_possible()
|
|
|
|
|
{
|
|
|
|
|
WithEpisode(1, 1, null, null, "2005-12-30");
|
|
|
|
|
WithEpisode(1, 2, null, null, "2005-12-31");
|
|
|
|
|
WithEpisode(1, 3, null, null, "2006-01-01");
|
|
|
|
|
_xemSeries.SeriesType = SeriesTypes.Daily;
|
|
|
|
|
|
|
|
|
|
var allCriteria = WatchForSearchCriteria();
|
|
|
|
|
|
|
|
|
|
Subject.SeasonSearch(_xemSeries.Id, 1, false, true);
|
|
|
|
|
|
|
|
|
|
var criteria1 = allCriteria.OfType<DailySeasonSearchCriteria>().ToList();
|
|
|
|
|
var criteria2 = allCriteria.OfType<DailyEpisodeSearchCriteria>().ToList();
|
|
|
|
|
|
|
|
|
|
criteria1.Count.Should().Be(1);
|
|
|
|
|
criteria1[0].Year.Should().Be(2005);
|
|
|
|
|
|
|
|
|
|
criteria2.Count.Should().Be(1);
|
|
|
|
|
criteria2[0].AirDate.Should().Be(new DateTime(2006, 1, 1));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void season_search_for_daily_should_not_search_for_unmonitored_episodes()
|
|
|
|
|
{
|
|
|
|
|
WithEpisode(1, 1, null, null, "2005-12-30");
|
|
|
|
|
WithEpisode(1, 2, null, null, "2005-12-31");
|
|
|
|
|
WithEpisode(1, 3, null, null, "2006-01-01");
|
|
|
|
|
_xemSeries.SeriesType = SeriesTypes.Daily;
|
|
|
|
|
_xemEpisodes[0].Monitored = false;
|
|
|
|
|
|
|
|
|
|
var allCriteria = WatchForSearchCriteria();
|
|
|
|
|
|
|
|
|
|
Subject.SeasonSearch(_xemSeries.Id, 1, false, true);
|
|
|
|
|
|
|
|
|
|
var criteria1 = allCriteria.OfType<DailySeasonSearchCriteria>().ToList();
|
|
|
|
|
var criteria2 = allCriteria.OfType<DailyEpisodeSearchCriteria>().ToList();
|
|
|
|
|
|
|
|
|
|
criteria1.Should().HaveCount(0);
|
|
|
|
|
criteria2.Should().HaveCount(2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void getscenenames_should_use_seasonnumber_if_no_scene_seasonnumber_is_available()
|
|
|
|
|
{
|
|
|
|
|