Fixed: Scene numbered season searches when some episode weren't monitored
This commit is contained in:
parent
a1a91878ad
commit
210524b51a
|
@ -123,5 +123,19 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
||||||
WithFirstEpisodeUnmonitored();
|
WithFirstEpisodeUnmonitored();
|
||||||
_monitoredEpisodeSpecification.IsSatisfiedBy(_parseResultSingle, new SeasonSearchCriteria()).Accepted.Should().BeFalse();
|
_monitoredEpisodeSpecification.IsSatisfiedBy(_parseResultSingle, new SeasonSearchCriteria()).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_true_if_episode_is_not_monitored_and_monitoredEpisodesOnly_flag_is_false()
|
||||||
|
{
|
||||||
|
WithFirstEpisodeUnmonitored();
|
||||||
|
_monitoredEpisodeSpecification.IsSatisfiedBy(_parseResultSingle, new SingleEpisodeSearchCriteria { MonitoredEpisodesOnly = false }).Accepted.Should().BeTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_false_if_episode_is_not_monitored_and_monitoredEpisodesOnly_flag_is_true()
|
||||||
|
{
|
||||||
|
WithFirstEpisodeUnmonitored();
|
||||||
|
_monitoredEpisodeSpecification.IsSatisfiedBy(_parseResultSingle, new SingleEpisodeSearchCriteria{ MonitoredEpisodesOnly = true}).Accepted.Should().BeFalse();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -20,7 +20,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync
|
||||||
{
|
{
|
||||||
if (searchCriteria != null)
|
if (searchCriteria != null)
|
||||||
{
|
{
|
||||||
if ((searchCriteria as SeasonSearchCriteria) == null)
|
if (!searchCriteria.MonitoredEpisodesOnly)
|
||||||
{
|
{
|
||||||
_logger.Debug("Skipping monitored check during search");
|
_logger.Debug("Skipping monitored check during search");
|
||||||
return Decision.Accept();
|
return Decision.Accept();
|
||||||
|
|
|
@ -17,6 +17,7 @@ namespace NzbDrone.Core.IndexerSearch.Definitions
|
||||||
public Series Series { get; set; }
|
public Series Series { get; set; }
|
||||||
public List<String> SceneTitles { get; set; }
|
public List<String> SceneTitles { get; set; }
|
||||||
public List<Episode> Episodes { get; set; }
|
public List<Episode> Episodes { get; set; }
|
||||||
|
public virtual bool MonitoredEpisodesOnly { get; set; }
|
||||||
|
|
||||||
public List<String> QueryTitles
|
public List<String> QueryTitles
|
||||||
{
|
{
|
||||||
|
|
|
@ -4,6 +4,14 @@ namespace NzbDrone.Core.IndexerSearch.Definitions
|
||||||
{
|
{
|
||||||
public int SeasonNumber { get; set; }
|
public int SeasonNumber { get; set; }
|
||||||
|
|
||||||
|
public override bool MonitoredEpisodesOnly
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
return string.Format("[{0} : S{1:00}]", Series.Title, SeasonNumber);
|
return string.Format("[{0} : S{1:00}]", Series.Title, SeasonNumber);
|
||||||
|
|
|
@ -115,11 +115,18 @@ namespace NzbDrone.Core.IndexerSearch
|
||||||
{
|
{
|
||||||
var episode = sceneSeasonEpisodes.First();
|
var episode = sceneSeasonEpisodes.First();
|
||||||
var searchSpec = Get<SingleEpisodeSearchCriteria>(series, sceneSeasonEpisodes.ToList());
|
var searchSpec = Get<SingleEpisodeSearchCriteria>(series, sceneSeasonEpisodes.ToList());
|
||||||
|
|
||||||
searchSpec.SeasonNumber = sceneSeasonEpisodes.Key;
|
searchSpec.SeasonNumber = sceneSeasonEpisodes.Key;
|
||||||
|
searchSpec.MonitoredEpisodesOnly = true;
|
||||||
|
|
||||||
if (episode.SceneSeasonNumber.HasValue && episode.SceneEpisodeNumber.HasValue)
|
if (episode.SceneSeasonNumber.HasValue && episode.SceneEpisodeNumber.HasValue)
|
||||||
|
{
|
||||||
searchSpec.EpisodeNumber = episode.SceneEpisodeNumber.Value;
|
searchSpec.EpisodeNumber = episode.SceneEpisodeNumber.Value;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
searchSpec.EpisodeNumber = episode.EpisodeNumber;
|
searchSpec.EpisodeNumber = episode.EpisodeNumber;
|
||||||
|
}
|
||||||
|
|
||||||
var decisions = Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec);
|
var decisions = Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec);
|
||||||
downloadDecisions.AddRange(decisions);
|
downloadDecisions.AddRange(decisions);
|
||||||
|
|
Loading…
Reference in New Issue