diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/PrioritizeDownloadDecisionFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/PrioritizeDownloadDecisionFixture.cs index 76e139fe1..c9e75ab1d 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/PrioritizeDownloadDecisionFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/PrioritizeDownloadDecisionFixture.cs @@ -379,5 +379,34 @@ namespace NzbDrone.Core.Test.DecisionEngineTests var qualifiedReports = Subject.PrioritizeDecisions(decisions); qualifiedReports.First().RemoteEpisode.Release.Should().Be(remoteEpisode1.Release); } + + [Test] + public void should_prefer_quality_over_the_number_of_peers() + { + var remoteEpisode1 = GivenRemoteEpisode(new List { GivenEpisode(1) }, new QualityModel(Quality.Bluray1080p)); + var remoteEpisode2 = GivenRemoteEpisode(new List { GivenEpisode(1) }, new QualityModel(Quality.SDTV)); + + var torrentInfo1 = new TorrentInfo(); + torrentInfo1.PublishDate = DateTime.Now; + torrentInfo1.DownloadProtocol = DownloadProtocol.Torrent; + torrentInfo1.Seeders = 100; + torrentInfo1.Peers = 10; + torrentInfo1.Size = 200.Megabytes(); + + var torrentInfo2 = torrentInfo1.JsonClone(); + torrentInfo2.Seeders = 1100; + torrentInfo2.Peers = 10; + torrentInfo1.Size = 250.Megabytes(); + + remoteEpisode1.Release = torrentInfo1; + remoteEpisode2.Release = torrentInfo2; + + var decisions = new List(); + decisions.Add(new DownloadDecision(remoteEpisode1)); + decisions.Add(new DownloadDecision(remoteEpisode2)); + + var qualifiedReports = Subject.PrioritizeDecisions(decisions); + ((TorrentInfo)qualifiedReports.First().RemoteEpisode.Release).Should().Be(torrentInfo1); + } } }