New: Allow Season packs to be grabbed automatically if all episodes will have aired within 24 hours

Closes #5191
This commit is contained in:
Mark McDowall 2022-12-07 20:26:46 -08:00
parent 0450d0b2b6
commit 87795708b5
2 changed files with 11 additions and 3 deletions

View File

@ -1,4 +1,4 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using FizzWare.NBuilder; using FizzWare.NBuilder;
@ -57,6 +57,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeTrue(); Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeTrue();
} }
[Test]
public void should_return_true_if_all_episodes_will_have_aired_in_the_next_24_hours()
{
_remoteEpisode.Episodes.Last().AirDateUtc = DateTime.UtcNow.AddHours(23);
Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeTrue();
}
[Test] [Test]
public void should_return_false_if_one_episode_has_not_aired() public void should_return_false_if_one_episode_has_not_aired()
{ {

View File

@ -1,4 +1,4 @@
using System; using System;
using System.Linq; using System.Linq;
using NLog; using NLog;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
@ -25,7 +25,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
{ {
_logger.Debug("Checking if all episodes in full season release have aired. {0}", subject.Release.Title); _logger.Debug("Checking if all episodes in full season release have aired. {0}", subject.Release.Title);
if (subject.Episodes.Any(e => !e.AirDateUtc.HasValue || e.AirDateUtc.Value.After(DateTime.UtcNow))) if (subject.Episodes.Any(e => !e.AirDateUtc.HasValue || e.AirDateUtc.Value.After(DateTime.UtcNow.AddHours(24))))
{ {
_logger.Debug("Full season release {0} rejected. All episodes haven't aired yet.", subject.Release.Title); _logger.Debug("Full season release {0} rejected. All episodes haven't aired yet.", subject.Release.Title);
return Decision.Reject("Full season release rejected. All episodes haven't aired yet."); return Decision.Reject("Full season release rejected. All episodes haven't aired yet.");