From 72fa89ba76ae58cd9b9b3d07607316a2f35c9236 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Tue, 6 Aug 2019 18:34:23 -0700 Subject: [PATCH] Fixed: Repack don't being grabbed when cutoff already met Fixes #3250 --- .../CutoffSpecificationFixture.cs | 25 +++++++++++++++++++ .../Specifications/CutoffSpecification.cs | 2 +- .../Specifications/UpgradableSpecification.cs | 6 ++--- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/CutoffSpecificationFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/CutoffSpecificationFixture.cs index a6b1abacb..30a0b9789 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/CutoffSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/CutoffSpecificationFixture.cs @@ -260,5 +260,30 @@ namespace NzbDrone.Core.Test.DecisionEngineTests new QualityModel(Quality.Bluray1080p, new Revision(version: 2)), 10).Should().BeTrue(); } + + [Test] + public void should_return_true_if_cutoffs_are_met_but_is_a_revision_upgrade() + { + QualityProfile _profile = new QualityProfile + { + Cutoff = Quality.HDTV1080p.Id, + Items = Qualities.QualityFixture.GetDefaultQualities(), + }; + + LanguageProfile _langProfile = new LanguageProfile + { + Cutoff = Language.English, + Languages = LanguageFixture.GetDefaultLanguages() + }; + + Subject.CutoffNotMet( + _profile, + _langProfile, + new QualityModel(Quality.WEBDL1080p, new Revision(version: 1)), + Language.English, + NoPreferredWordScore, + new QualityModel(Quality.WEBDL1080p, new Revision(version: 2)), + NoPreferredWordScore).Should().BeTrue(); + } } } diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/CutoffSpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/CutoffSpecification.cs index 65c8cbe14..71e8408a6 100644 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/CutoffSpecification.cs +++ b/src/NzbDrone.Core/DecisionEngine/Specifications/CutoffSpecification.cs @@ -38,7 +38,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications _logger.Debug("Comparing file quality and language with report. Existing file is {0} - {1}", file.Quality, file.Language); if (!_upgradableSpecification.CutoffNotMet(qualityProfile, - languageProfile, + languageProfile, file.Quality, file.Language, _preferredWordServiceCalculator.Calculate(subject.Series, file.GetSceneOrFileName()), diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradableSpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradableSpecification.cs index 2a590e44a..4daa96cfb 100644 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradableSpecification.cs +++ b/src/NzbDrone.Core/DecisionEngine/Specifications/UpgradableSpecification.cs @@ -87,14 +87,14 @@ namespace NzbDrone.Core.DecisionEngine.Specifications public bool QualityCutoffNotMet(QualityProfile profile, QualityModel currentQuality, QualityModel newQuality = null) { - var qualityCompare = new QualityModelComparer(profile).Compare(currentQuality.Quality.Id, profile.Cutoff); + var cutoffCompare = new QualityModelComparer(profile).Compare(currentQuality.Quality.Id, profile.Cutoff); - if (qualityCompare < 0) + if (cutoffCompare < 0) { return true; } - if (qualityCompare == 0 && newQuality != null && IsRevisionUpgrade(currentQuality, newQuality)) + if (newQuality != null && IsRevisionUpgrade(currentQuality, newQuality)) { return true; }