1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-26 22:56:23 -04:00

New: Season pack searching with 'Anime Standard Format Search'

This commit is contained in:
ttran913
2023-08-09 17:13:35 -07:00
committed by GitHub
parent 77a4ba4925
commit 6b533ef2f9
21 changed files with 327 additions and 21 deletions
@@ -128,6 +128,10 @@ namespace NzbDrone.Core.Test.IndexerSearchTests
.Callback<AnimeEpisodeSearchCriteria>(s => result.Add(s))
.Returns(new List<Parser.Model.ReleaseInfo>());
_mockIndexer.Setup(v => v.Fetch(It.IsAny<AnimeSeasonSearchCriteria>()))
.Callback<AnimeSeasonSearchCriteria>(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>());
@@ -414,6 +418,77 @@ namespace NzbDrone.Core.Test.IndexerSearchTests
criteria.ForEach(c => c.IsSeasonSearch.Should().BeTrue());
}
[Test]
public void season_search_for_anime_should_search_for_each_monitored_season()
{
WithEpisodes();
_xemSeries.SeriesType = SeriesTypes.Anime;
_xemEpisodes.ForEach(e => e.EpisodeFileId = 0);
var seasonNumber = 1;
var allCriteria = WatchForSearchCriteria();
Subject.SeasonSearch(_xemSeries.Id, seasonNumber, true, false, true, false);
var criteria = allCriteria.OfType<AnimeSeasonSearchCriteria>().ToList();
var episodesForSeason1 = _xemEpisodes.Where(e => e.SeasonNumber == seasonNumber);
criteria.Count.Should().Be(episodesForSeason1.Select(e => e.SeasonNumber).Distinct().Count());
}
[Test]
public void season_search_for_anime_should_not_search_for_unmonitored_season()
{
WithEpisodes();
_xemSeries.SeriesType = SeriesTypes.Anime;
_xemEpisodes.ForEach(e => e.Monitored = false);
_xemEpisodes.ForEach(e => e.EpisodeFileId = 0);
var seasonNumber = 1;
var allCriteria = WatchForSearchCriteria();
Subject.SeasonSearch(_xemSeries.Id, seasonNumber, false, true, true, false);
var criteria = allCriteria.OfType<AnimeSeasonSearchCriteria>().ToList();
criteria.Count.Should().Be(0);
}
[Test]
public void season_search_for_anime_should_not_search_for_unaired_season()
{
WithEpisodes();
_xemSeries.SeriesType = SeriesTypes.Anime;
_xemEpisodes.ForEach(e => e.AirDateUtc = DateTime.UtcNow.AddDays(5));
_xemEpisodes.ForEach(e => e.EpisodeFileId = 0);
var seasonNumber = 1;
var allCriteria = WatchForSearchCriteria();
Subject.SeasonSearch(_xemSeries.Id, seasonNumber, false, false, true, false);
var criteria = allCriteria.OfType<AnimeSeasonSearchCriteria>().ToList();
criteria.Count.Should().Be(0);
}
[Test]
public void season_search_for_anime_should_not_search_for_season_with_files()
{
WithEpisodes();
_xemSeries.SeriesType = SeriesTypes.Anime;
_xemEpisodes.ForEach(e => e.EpisodeFileId = 1);
var seasonNumber = 1;
var allCriteria = WatchForSearchCriteria();
Subject.SeasonSearch(_xemSeries.Id, seasonNumber, true, false, true, false);
var criteria = allCriteria.OfType<AnimeSeasonSearchCriteria>().ToList();
criteria.Count.Should().Be(0);
}
[Test]
public void season_search_for_daily_should_search_multiple_years()
{