1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-23 22:25:56 -04:00

Use episode runtime for size limits when available

Closes #3482
This commit is contained in:
Mark McDowall
2023-03-03 15:17:59 -08:00
parent a42f97229a
commit f22998aef3
13 changed files with 144 additions and 50 deletions
@@ -33,6 +33,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_episodes = Builder<Episode>.CreateListOfSize(10)
.All()
.With(s => s.SeasonNumber = 1)
.With(s => s.Runtime = 30)
.BuildList();
_parseResultMultiSet = new RemoteEpisode
@@ -40,7 +41,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Series = _series,
Release = new ReleaseInfo(),
ParsedEpisodeInfo = new ParsedEpisodeInfo { Quality = new QualityModel(Quality.SDTV, new Revision(version: 2)) },
Episodes = Builder<Episode>.CreateListOfSize(6).All().With(s => s.SeasonNumber = 1).BuildList()
Episodes = Builder<Episode>.CreateListOfSize(6)
.All()
.With(s => s.SeasonNumber = 1)
.With(s => s.Runtime = 30)
.BuildList()
};
_parseResultMulti = new RemoteEpisode
@@ -48,7 +53,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Series = _series,
Release = new ReleaseInfo(),
ParsedEpisodeInfo = new ParsedEpisodeInfo { Quality = new QualityModel(Quality.SDTV, new Revision(version: 2)) },
Episodes = Builder<Episode>.CreateListOfSize(2).All().With(s => s.SeasonNumber = 1).BuildList()
Episodes = Builder<Episode>.CreateListOfSize(2)
.All()
.With(s => s.SeasonNumber = 1)
.With(s => s.Runtime = 30)
.BuildList()
};
_parseResultSingle = new RemoteEpisode
@@ -61,6 +70,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Builder<Episode>.CreateNew()
.With(s => s.SeasonNumber = 1)
.With(s => s.EpisodeNumber = 1)
.With(s => s.Runtime = 30)
.Build()
}
};
@@ -94,13 +104,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_parseResultSingle.Series = _series;
_parseResultSingle.Release.Size = sizeInMegaBytes.Megabytes();
_parseResultSingle.Episodes.First().Id = 5;
_parseResultSingle.Episodes.First().Runtime = runtime;
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(expectedResult);
}
[TestCase(30, 500, true)]
[TestCase(30, 250, true)]
[TestCase(30, 1000, false)]
[TestCase(60, 1000, true)]
[TestCase(60, 250, true)]
[TestCase(60, 2000, false)]
public void should_return_expected_result_for_first_episode_of_season(int runtime, int sizeInMegaBytes, bool expectedResult)
{
@@ -108,13 +119,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_parseResultSingle.Series = _series;
_parseResultSingle.Release.Size = sizeInMegaBytes.Megabytes();
_parseResultSingle.Episodes.First().Id = _episodes.First().Id;
_parseResultSingle.Episodes.First().Runtime = _episodes.First().Runtime;
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(expectedResult);
}
[TestCase(30, 500, true)]
[TestCase(30, 250, true)]
[TestCase(30, 1000, false)]
[TestCase(60, 1000, true)]
[TestCase(60, 250, true)]
[TestCase(60, 2000, false)]
public void should_return_expected_result_for_last_episode_of_season(int runtime, int sizeInMegaBytes, bool expectedResult)
{
@@ -122,6 +134,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_parseResultSingle.Series = _series;
_parseResultSingle.Release.Size = sizeInMegaBytes.Megabytes();
_parseResultSingle.Episodes.First().Id = _episodes.Last().Id;
_parseResultSingle.Episodes.First().Runtime = _episodes.First().Runtime;
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(expectedResult);
}
@@ -137,6 +150,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_series.Runtime = runtime;
_parseResultMulti.Series = _series;
_parseResultMulti.Release.Size = sizeInMegaBytes.Megabytes();
_parseResultMulti.Episodes.ForEach(e => e.Runtime = runtime);
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().Be(expectedResult);
}
@@ -152,6 +166,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_series.Runtime = runtime;
_parseResultMultiSet.Series = _series;
_parseResultMultiSet.Release.Size = sizeInMegaBytes.Megabytes();
_parseResultMultiSet.Episodes.ForEach(e => e.Runtime = runtime);
Subject.IsSatisfiedBy(_parseResultMultiSet, null).Accepted.Should().Be(expectedResult);
}
@@ -162,6 +177,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_series.Runtime = 30;
_parseResultSingle.Series = _series;
_parseResultSingle.Release.Size = 0;
_parseResultSingle.Episodes.First().Runtime = 30;
_qualityType.MinSize = 10;
_qualityType.MaxSize = 20;
@@ -174,6 +190,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_series.Runtime = 30;
_parseResultSingle.Series = _series;
_parseResultSingle.Release.Size = 18457280000;
_parseResultSingle.Episodes.First().Runtime = 30;
_qualityType.MaxSize = null;
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
@@ -185,6 +202,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_series.Runtime = 60;
_parseResultSingle.Series = _series;
_parseResultSingle.Release.Size = 36857280000;
_parseResultSingle.Episodes.First().Runtime = 60;
_qualityType.MaxSize = null;
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
@@ -197,6 +215,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_parseResultSingle.Series = _series;
_parseResultSingle.Series.SeriesType = SeriesTypes.Daily;
_parseResultSingle.Release.Size = 300.Megabytes();
_parseResultSingle.Episodes.First().Runtime = 60;
_qualityType.MaxSize = 10;
@@ -212,6 +231,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_parseResultSingle.Series = _series;
_parseResultSingle.Series.SeriesType = SeriesTypes.Daily;
_parseResultSingle.Release.Size = 8000.Megabytes();
_parseResultSingle.Episodes.First().Runtime = 30;
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
}
@@ -232,6 +252,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_parseResultSingle.Episodes.First().Id = 5;
_parseResultSingle.Release.Size = 200.Megabytes();
_parseResultSingle.Episodes.First().SeasonNumber = 2;
_parseResultSingle.Episodes.First().Runtime = 0;
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(false);
}
@@ -247,6 +268,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_parseResultSingle.Episodes.First().SeasonNumber = 1;
_parseResultSingle.Episodes.First().EpisodeNumber = 2;
_parseResultSingle.Episodes.First().AirDateUtc = _episodes.First().AirDateUtc.Value.AddDays(7);
_parseResultSingle.Episodes.First().Runtime = 0;
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(false);
}
@@ -262,6 +284,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_parseResultSingle.Episodes.First().SeasonNumber = 1;
_parseResultSingle.Episodes.First().EpisodeNumber = 2;
_parseResultSingle.Episodes.First().AirDateUtc = _episodes.First().AirDateUtc.Value.AddHours(1);
_parseResultSingle.Episodes.First().Runtime = 0;
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(true);
}
@@ -272,7 +295,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_series.Runtime = 0;
_parseResultMulti.Series = _series;
_parseResultMulti.Release.Size = 200.Megabytes();
_parseResultMulti.Episodes.ForEach(e => e.SeasonNumber = 2);
_parseResultMulti.Episodes.ForEach(e =>
{
e.SeasonNumber = 2;
e.Runtime = 0;
});
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().Be(false);
}
@@ -290,6 +317,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
e.SeasonNumber = 1;
e.AirDateUtc = airDateUtc;
e.Runtime = 0;
});
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().Be(false);
@@ -308,9 +336,29 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
{
e.SeasonNumber = 1;
e.AirDateUtc = airDateUtc;
e.Runtime = 0;
});
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().Be(true);
}
[Test]
public void should_use_series_runtime_if_episode_runtime_is_not_set()
{
var airDateUtc = _episodes.First().AirDateUtc.Value.AddHours(1);
_series.Runtime = 30;
_parseResultSingle.Series = _series;
_parseResultSingle.Release.Size = 200.Megabytes();
_parseResultSingle.Episodes.ForEach(e =>
{
e.SeasonNumber = 1;
e.AirDateUtc = airDateUtc;
e.Runtime = 0;
});
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(true);
}
}
}