1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-21 22:05:38 -04:00

Fixed: Respect Quality cutoff if Custom Format cutoff isn't met

Closes #7132
This commit is contained in:
Mark McDowall
2024-09-02 13:27:21 -07:00
committed by GitHub
parent 66cead6b48
commit 6f51e72d00
10 changed files with 388 additions and 392 deletions
@@ -3,8 +3,8 @@ using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.CustomFormats;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Languages;
using NzbDrone.Core.Profiles.Qualities;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;
@@ -17,23 +17,13 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
public static object[] IsUpgradeTestCases =
{
new object[] { Quality.SDTV, 1, Quality.SDTV, 2, Quality.SDTV, true },
new object[] { Quality.WEBDL720p, 1, Quality.WEBDL720p, 2, Quality.WEBDL720p, true },
new object[] { Quality.SDTV, 1, Quality.SDTV, 1, Quality.SDTV, false },
new object[] { Quality.WEBDL720p, 1, Quality.HDTV720p, 2, Quality.Bluray720p, false },
new object[] { Quality.WEBDL720p, 1, Quality.HDTV720p, 2, Quality.WEBDL720p, false },
new object[] { Quality.WEBDL720p, 1, Quality.WEBDL720p, 1, Quality.WEBDL720p, false },
new object[] { Quality.WEBDL1080p, 1, Quality.WEBDL1080p, 1, Quality.WEBDL1080p, false }
};
public static object[] IsUpgradeTestCasesLanguages =
{
new object[] { Quality.SDTV, 1, Language.English, Quality.SDTV, 2, Language.English, Quality.SDTV, Language.Spanish, true },
new object[] { Quality.SDTV, 1, Language.English, Quality.SDTV, 1, Language.Spanish, Quality.SDTV, Language.Spanish, true },
new object[] { Quality.WEBDL720p, 1, Language.French, Quality.WEBDL720p, 2, Language.English, Quality.WEBDL720p, Language.Spanish, true },
new object[] { Quality.SDTV, 1, Language.English, Quality.SDTV, 1, Language.English, Quality.SDTV, Language.English, false },
new object[] { Quality.WEBDL720p, 1, Language.English, Quality.HDTV720p, 2, Language.Spanish, Quality.Bluray720p, Language.Spanish, false },
new object[] { Quality.WEBDL720p, 1, Language.Spanish, Quality.HDTV720p, 2, Language.French, Quality.WEBDL720p, Language.Spanish, false }
new object[] { Quality.SDTV, 1, Quality.SDTV, 2, Quality.SDTV, UpgradeableRejectReason.None },
new object[] { Quality.WEBDL720p, 1, Quality.WEBDL720p, 2, Quality.WEBDL720p, UpgradeableRejectReason.None },
new object[] { Quality.SDTV, 1, Quality.SDTV, 1, Quality.SDTV, UpgradeableRejectReason.CustomFormatScore },
new object[] { Quality.WEBDL720p, 1, Quality.HDTV720p, 2, Quality.Bluray720p, UpgradeableRejectReason.BetterQuality },
new object[] { Quality.WEBDL720p, 1, Quality.HDTV720p, 2, Quality.WEBDL720p, UpgradeableRejectReason.BetterQuality },
new object[] { Quality.WEBDL720p, 1, Quality.WEBDL720p, 1, Quality.WEBDL720p, UpgradeableRejectReason.CustomFormatScore },
new object[] { Quality.WEBDL1080p, 1, Quality.WEBDL1080p, 1, Quality.WEBDL1080p, UpgradeableRejectReason.CustomFormatScore }
};
private void GivenAutoDownloadPropers(ProperDownloadTypes type)
@@ -45,7 +35,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[Test]
[TestCaseSource(nameof(IsUpgradeTestCases))]
public void IsUpgradeTest(Quality current, int currentVersion, Quality newQuality, int newVersion, Quality cutoff, bool expected)
public void IsUpgradeTest(Quality current, int currentVersion, Quality newQuality, int newVersion, Quality cutoff, UpgradeableRejectReason expected)
{
GivenAutoDownloadPropers(ProperDownloadTypes.PreferAndUpgrade);
@@ -80,7 +70,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
new List<CustomFormat>(),
new QualityModel(Quality.DVD, new Revision(version: 2)),
new List<CustomFormat>())
.Should().BeTrue();
.Should().Be(UpgradeableRejectReason.None);
}
[Test]
@@ -99,7 +89,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
new List<CustomFormat>(),
new QualityModel(Quality.DVD, new Revision(version: 2)),
new List<CustomFormat>())
.Should().BeFalse();
.Should().Be(UpgradeableRejectReason.CustomFormatScore);
}
[Test]
@@ -107,7 +97,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
var profile = new QualityProfile
{
Items = Qualities.QualityFixture.GetDefaultQualities(),
Items = Qualities.QualityFixture.GetDefaultQualities()
};
Subject.IsUpgradable(
@@ -116,7 +106,45 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
new List<CustomFormat>(),
new QualityModel(Quality.HDTV720p, new Revision(version: 1)),
new List<CustomFormat>())
.Should().BeFalse();
.Should().Be(UpgradeableRejectReason.CustomFormatScore);
}
[Test]
public void should_return_true_if_release_has_higher_quality_and_cutoff_is_not_already_met()
{
var profile = new QualityProfile
{
Items = Qualities.QualityFixture.GetDefaultQualities(),
UpgradeAllowed = true,
Cutoff = Quality.HDTV1080p.Id
};
Subject.IsUpgradable(
profile,
new QualityModel(Quality.HDTV720p, new Revision(version: 1)),
new List<CustomFormat>(),
new QualityModel(Quality.HDTV1080p, new Revision(version: 1)),
new List<CustomFormat>())
.Should().Be(UpgradeableRejectReason.None);
}
[Test]
public void should_return_false_if_release_has_higher_quality_and_cutoff_is_already_met()
{
var profile = new QualityProfile
{
Items = Qualities.QualityFixture.GetDefaultQualities(),
UpgradeAllowed = true,
Cutoff = Quality.HDTV720p.Id
};
Subject.IsUpgradable(
profile,
new QualityModel(Quality.HDTV720p, new Revision(version: 1)),
new List<CustomFormat>(),
new QualityModel(Quality.HDTV1080p, new Revision(version: 1)),
new List<CustomFormat>())
.Should().Be(UpgradeableRejectReason.QualityCutoff);
}
}
}