parent
d7e9ccde8e
commit
5114c75cbb
|
@ -2,6 +2,7 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using FizzWare.NBuilder;
|
using FizzWare.NBuilder;
|
||||||
using FluentAssertions;
|
using FluentAssertions;
|
||||||
|
using Moq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NzbDrone.Core.DecisionEngine.Specifications;
|
using NzbDrone.Core.DecisionEngine.Specifications;
|
||||||
using NzbDrone.Core.MediaFiles;
|
using NzbDrone.Core.MediaFiles;
|
||||||
|
@ -138,5 +139,19 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
||||||
_parseResultSingle.ParsedEpisodeInfo.Quality = new QualityModel(Quality.WEBDL1080p);
|
_parseResultSingle.ParsedEpisodeInfo.Quality = new QualityModel(Quality.WEBDL1080p);
|
||||||
_upgradeDisk.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
|
_upgradeDisk.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_not_be_upgradable_if_revision_downgrade_and_preferred_word_upgrade_if_propers_are_preferred()
|
||||||
|
{
|
||||||
|
Mocker.GetMock<IEpisodeFilePreferredWordCalculator>()
|
||||||
|
.Setup(s => s.Calculate(It.IsAny<Series>(), It.IsAny<EpisodeFile>()))
|
||||||
|
.Returns(5);
|
||||||
|
|
||||||
|
_parseResultSingle.PreferredWordScore = 10;
|
||||||
|
|
||||||
|
_firstFile.Quality = new QualityModel(Quality.WEBDL1080p, new Revision(2));
|
||||||
|
_parseResultSingle.ParsedEpisodeInfo.Quality = new QualityModel(Quality.WEBDL1080p);
|
||||||
|
_upgradeDisk.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
|
||||||
{
|
{
|
||||||
var qualityComparer = new QualityModelComparer(qualityProfile);
|
var qualityComparer = new QualityModelComparer(qualityProfile);
|
||||||
var qualityCompare = qualityComparer.Compare(newQuality?.Quality, currentQuality.Quality);
|
var qualityCompare = qualityComparer.Compare(newQuality?.Quality, currentQuality.Quality);
|
||||||
|
var downloadPropersAndRepacks = _configService.DownloadPropersAndRepacks;
|
||||||
|
|
||||||
if (qualityCompare > 0)
|
if (qualityCompare > 0)
|
||||||
{
|
{
|
||||||
|
@ -52,15 +53,25 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var qualityRevisionComapre = newQuality?.Revision.CompareTo(currentQuality.Revision);
|
||||||
|
|
||||||
// Accept unless the user doesn't want to prefer propers, optionally they can
|
// Accept unless the user doesn't want to prefer propers, optionally they can
|
||||||
// use preferred words to prefer propers/repacks over non-propers/repacks.
|
// use preferred words to prefer propers/repacks over non-propers/repacks.
|
||||||
if (_configService.DownloadPropersAndRepacks != ProperDownloadTypes.DoNotPrefer &&
|
if (downloadPropersAndRepacks != ProperDownloadTypes.DoNotPrefer &&
|
||||||
newQuality?.Revision.CompareTo(currentQuality.Revision) > 0)
|
qualityRevisionComapre > 0)
|
||||||
{
|
{
|
||||||
_logger.Debug("New item has a better quality revision");
|
_logger.Debug("New item has a better quality revision");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Reject unless the user does not prefer propers/repacks and it's a revision downgrade.
|
||||||
|
if (downloadPropersAndRepacks != ProperDownloadTypes.DoNotPrefer &&
|
||||||
|
qualityRevisionComapre < 0)
|
||||||
|
{
|
||||||
|
_logger.Debug("Existing item has a better quality revision, skipping");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
var languageCompare = new LanguageComparer(languageProfile).Compare(newLanguage, currentLanguage);
|
var languageCompare = new LanguageComparer(languageProfile).Compare(newLanguage, currentLanguage);
|
||||||
|
|
||||||
if (languageCompare > 0)
|
if (languageCompare > 0)
|
||||||
|
@ -77,7 +88,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
|
||||||
|
|
||||||
if (!IsPreferredWordUpgradable(currentScore, newScore))
|
if (!IsPreferredWordUpgradable(currentScore, newScore))
|
||||||
{
|
{
|
||||||
_logger.Debug("Existing item has a better preferred word score, skipping");
|
_logger.Debug("Existing item has an equal or better preferred word score, skipping");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue