|
|
|
@ -38,7 +38,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
|
.Build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private RemoteEpisode GivenRemoteEpisode(List<Episode> episodes, QualityModel quality, Language language, int age = 0, long size = 0, DownloadProtocol downloadProtocol = DownloadProtocol.Usenet)
|
|
|
|
|
private RemoteEpisode GivenRemoteEpisode(List<Episode> episodes, QualityModel quality, Language language, int age = 0, long size = 0, DownloadProtocol downloadProtocol = DownloadProtocol.Usenet, int indexerPriority = 25)
|
|
|
|
|
{
|
|
|
|
|
var remoteEpisode = new RemoteEpisode();
|
|
|
|
|
remoteEpisode.ParsedEpisodeInfo = new ParsedEpisodeInfo();
|
|
|
|
@ -52,6 +52,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
|
remoteEpisode.Release.PublishDate = DateTime.Now.AddDays(-age);
|
|
|
|
|
remoteEpisode.Release.Size = size;
|
|
|
|
|
remoteEpisode.Release.DownloadProtocol = downloadProtocol;
|
|
|
|
|
remoteEpisode.Release.IndexerPriority = indexerPriority;
|
|
|
|
|
|
|
|
|
|
remoteEpisode.Series = Builder<Series>.CreateNew()
|
|
|
|
|
.With(e => e.QualityProfile = new QualityProfile
|
|
|
|
@ -573,5 +574,39 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
|
qualifiedReports.First().RemoteEpisode.ParsedEpisodeInfo.Quality.Revision.Real.Should().Be(0);
|
|
|
|
|
qualifiedReports.First().RemoteEpisode.PreferredWordScore.Should().Be(10);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void sort_download_decisions_based_on_indexer_priority()
|
|
|
|
|
{
|
|
|
|
|
var remoteEpisode1 = GivenRemoteEpisode(new List<Episode> { GivenEpisode(1) }, new QualityModel(Quality.WEBDL1080p, new Revision(1)), Language.English, indexerPriority: 25);
|
|
|
|
|
var remoteEpisode2 = GivenRemoteEpisode(new List<Episode> { GivenEpisode(1) }, new QualityModel(Quality.WEBDL1080p, new Revision(1)), Language.English, indexerPriority: 50);
|
|
|
|
|
var remoteEpisode3 = GivenRemoteEpisode(new List<Episode> { GivenEpisode(1) }, new QualityModel(Quality.WEBDL1080p, new Revision(1)), Language.English, indexerPriority: 1);
|
|
|
|
|
|
|
|
|
|
var decisions = new List<DownloadDecision>();
|
|
|
|
|
decisions.AddRange(new [] { new DownloadDecision(remoteEpisode1), new DownloadDecision(remoteEpisode2), new DownloadDecision(remoteEpisode3) });
|
|
|
|
|
|
|
|
|
|
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
|
|
|
|
|
qualifiedReports.First().RemoteEpisode.Should().Be(remoteEpisode3);
|
|
|
|
|
qualifiedReports.Skip(1).First().RemoteEpisode.Should().Be(remoteEpisode1);
|
|
|
|
|
qualifiedReports.Last().RemoteEpisode.Should().Be(remoteEpisode2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void ensure_download_decisions_indexer_priority_is_not_perfered_over_quality()
|
|
|
|
|
{
|
|
|
|
|
var remoteEpisode1 = GivenRemoteEpisode(new List<Episode> { GivenEpisode(1) }, new QualityModel(Quality.HDTV720p, new Revision(1)), Language.English, indexerPriority: 25);
|
|
|
|
|
var remoteEpisode2 = GivenRemoteEpisode(new List<Episode> { GivenEpisode(1) }, new QualityModel(Quality.WEBDL1080p, new Revision(1)), Language.English, indexerPriority: 50);
|
|
|
|
|
var remoteEpisode3 = GivenRemoteEpisode(new List<Episode> { GivenEpisode(1) }, new QualityModel(Quality.SDTV, new Revision(1)), Language.English, indexerPriority: 1);
|
|
|
|
|
var remoteEpisode4 = GivenRemoteEpisode(new List<Episode> { GivenEpisode(1) }, new QualityModel(Quality.WEBDL1080p, new Revision(1)), Language.English, indexerPriority: 25);
|
|
|
|
|
|
|
|
|
|
var decisions = new List<DownloadDecision>();
|
|
|
|
|
decisions.AddRange(new[] { new DownloadDecision(remoteEpisode1), new DownloadDecision(remoteEpisode2), new DownloadDecision(remoteEpisode3), new DownloadDecision(remoteEpisode4) });
|
|
|
|
|
|
|
|
|
|
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
|
|
|
|
|
qualifiedReports.First().RemoteEpisode.Should().Be(remoteEpisode4);
|
|
|
|
|
qualifiedReports.Skip(1).First().RemoteEpisode.Should().Be(remoteEpisode2);
|
|
|
|
|
qualifiedReports.Skip(2).First().RemoteEpisode.Should().Be(remoteEpisode1);
|
|
|
|
|
qualifiedReports.Last().RemoteEpisode.Should().Be(remoteEpisode3);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|