From b7229dea062b39ffa97ea0af3aac1864d4b363b3 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Fri, 25 Jan 2013 14:58:01 -0800 Subject: [PATCH] Repack/propers for older episodes are no more #ND-53 Fixed: Do not download Propers/Repacks for episodes older than 7 days --- .../UpgradeDiskSpecificationFixture.cs | 26 +++++++++++++++++-- .../UpgradeDiskSpecification.cs | 13 +++++++--- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/NzbDrone.Core.Test/ProviderTests/DecisionEngineTests/UpgradeDiskSpecificationFixture.cs b/NzbDrone.Core.Test/ProviderTests/DecisionEngineTests/UpgradeDiskSpecificationFixture.cs index df017e25a..128bfe93a 100644 --- a/NzbDrone.Core.Test/ProviderTests/DecisionEngineTests/UpgradeDiskSpecificationFixture.cs +++ b/NzbDrone.Core.Test/ProviderTests/DecisionEngineTests/UpgradeDiskSpecificationFixture.cs @@ -1,5 +1,6 @@ // ReSharper disable RedundantUsingDirective +using System; using System.Collections.Generic; using System.Linq; using FizzWare.NBuilder; @@ -31,8 +32,8 @@ namespace NzbDrone.Core.Test.ProviderTests.DecisionEngineTests Mocker.Resolve(); _upgradeDisk = Mocker.Resolve(); - firstFile = new EpisodeFile { Quality = QualityTypes.Bluray1080p, Proper = true }; - secondFile = new EpisodeFile { Quality = QualityTypes.Bluray1080p, Proper = true }; + firstFile = new EpisodeFile { Quality = QualityTypes.Bluray1080p, Proper = true, DateAdded = DateTime.Now }; + secondFile = new EpisodeFile { Quality = QualityTypes.Bluray1080p, Proper = true, DateAdded = DateTime.Now }; var singleEpisodeList = new List { new Episode { EpisodeFile = firstFile }, new Episode { EpisodeFile = null } }; var doubleEpisodeList = new List { new Episode { EpisodeFile = firstFile }, new Episode { EpisodeFile = secondFile }, new Episode { EpisodeFile = null } }; @@ -121,5 +122,26 @@ namespace NzbDrone.Core.Test.ProviderTests.DecisionEngineTests parseResultSingle.Quality = new QualityModel(QualityTypes.WEBDL1080p, false); _upgradeDisk.IsSatisfiedBy(parseResultSingle).Should().BeFalse(); } + + [Test] + public void should_return_false_when_episodeFile_was_added_more_than_7_days_ago() + { + firstFile.DateAdded = DateTime.Today.AddDays(-30); + _upgradeDisk.IsSatisfiedBy(parseResultSingle).Should().BeFalse(); + } + + [Test] + public void should_return_false_when_first_episodeFile_was_added_more_than_7_days_ago() + { + firstFile.DateAdded = DateTime.Today.AddDays(-30); + _upgradeDisk.IsSatisfiedBy(parseResultMulti).Should().BeFalse(); + } + + [Test] + public void should_return_false_when_second_episodeFile_was_added_more_than_7_days_ago() + { + secondFile.DateAdded = DateTime.Today.AddDays(-30); + _upgradeDisk.IsSatisfiedBy(parseResultMulti).Should().BeFalse(); + } } } \ No newline at end of file diff --git a/NzbDrone.Core/Providers/DecisionEngine/UpgradeDiskSpecification.cs b/NzbDrone.Core/Providers/DecisionEngine/UpgradeDiskSpecification.cs index c68b9d333..317c13dc0 100644 --- a/NzbDrone.Core/Providers/DecisionEngine/UpgradeDiskSpecification.cs +++ b/NzbDrone.Core/Providers/DecisionEngine/UpgradeDiskSpecification.cs @@ -1,4 +1,5 @@ -using System.Linq; +using System; +using System.Linq; using NLog; using NzbDrone.Core.Model; @@ -6,13 +7,11 @@ namespace NzbDrone.Core.Providers.DecisionEngine { public class UpgradeDiskSpecification { - private readonly EpisodeProvider _episodeProvider; private readonly QualityUpgradeSpecification _qualityUpgradeSpecification; private static readonly Logger logger = LogManager.GetCurrentClassLogger(); - public UpgradeDiskSpecification(EpisodeProvider episodeProvider, QualityUpgradeSpecification qualityUpgradeSpecification) + public UpgradeDiskSpecification(QualityUpgradeSpecification qualityUpgradeSpecification) { - _episodeProvider = episodeProvider; _qualityUpgradeSpecification = qualityUpgradeSpecification; } @@ -27,6 +26,12 @@ namespace NzbDrone.Core.Providers.DecisionEngine logger.Trace("Comparing file quality with report. Existing file is {0} proper:{1}", file.Quality, file.Proper); if (!_qualityUpgradeSpecification.IsSatisfiedBy(new QualityModel { Quality = file.Quality, Proper = file.Proper }, subject.Quality, subject.Series.QualityProfile.Cutoff)) return false; + + if(subject.Quality.Proper && file.DateAdded < DateTime.Today.AddDays(-7)) + { + logger.Trace("Proper for old file, skipping: {0}", subject); + return false; + } } return true;