diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeDiskSpecificationFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeDiskSpecificationFixture.cs index 9b694f388..6ea7e9d14 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeDiskSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/UpgradeDiskSpecificationFixture.cs @@ -87,5 +87,13 @@ public void should_not_be_upgradable_if_qualities_are_the_same() _parseResultSingle.ParsedMovieInfo.Quality = new QualityModel(Quality.WEBDL1080p); _upgradeDisk.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse(); } + + [Test] + public void should_not_be_upgradable_if_revision_downgrade_if_propers_are_preferred() + { + _firstFile.Quality = new QualityModel(Quality.WEBDL1080p, new Revision(2)); + _parseResultSingle.ParsedMovieInfo.Quality = new QualityModel(Quality.WEBDL1080p); + _upgradeDisk.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse(); + } } } diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradableSpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradableSpecification.cs index 8d3286479..bf5c7a1ca 100644 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradableSpecification.cs +++ b/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradableSpecification.cs @@ -32,6 +32,7 @@ public bool IsUpgradable(Profile profile, QualityModel currentQuality, List 0) { @@ -45,10 +46,12 @@ public bool IsUpgradable(Profile profile, QualityModel currentQuality, List 0) + if (downloadPropersAndRepacks != ProperDownloadTypes.DoNotPrefer && + qualityRevisionCompare > 0) { return true; } @@ -56,6 +59,14 @@ public bool IsUpgradable(Profile profile, QualityModel currentQuality, List