From 117cebe6555e9b3be8ef2cf1b1ab8f085f1e6c01 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sat, 15 Oct 2011 11:51:11 -0700 Subject: [PATCH] Found and fixed a bug in EpisodeProvider.GetEpisodesByParseResults, where it would incorrectly return all episodes for a season when a file was detected as a Full Season release. --- ...deProviderTest_GetEpisodesByParseResult.cs | 64 ------------------- NzbDrone.Core/Providers/EpisodeProvider.cs | 8 --- .../Providers/PostDownloadProvider.cs | 10 ++- NzbDrone.Core/packages.config | 2 +- 4 files changed, 10 insertions(+), 74 deletions(-) diff --git a/NzbDrone.Core.Test/EpisodeProviderTest_GetEpisodesByParseResult.cs b/NzbDrone.Core.Test/EpisodeProviderTest_GetEpisodesByParseResult.cs index 1b7e5648f..c46af9eb7 100644 --- a/NzbDrone.Core.Test/EpisodeProviderTest_GetEpisodesByParseResult.cs +++ b/NzbDrone.Core.Test/EpisodeProviderTest_GetEpisodesByParseResult.cs @@ -234,69 +234,5 @@ namespace NzbDrone.Core.Test db.Fetch().Should().HaveCount(2); ep.First().Ignored.Should().BeFalse(); } - - [Test] - public void Full_Season_return_all_episodes_for_season() - { - var mocker = new AutoMoqer(); - var db = MockLib.GetEmptyDatabase(); - mocker.SetConstant(db); - - var fakeSeries = Builder.CreateNew().Build(); - - var fakeEpisodes = Builder.CreateListOfSize(10) - .WhereAll() - .Have(e => e.SeriesId = fakeSeries.SeriesId) - .Have(e => e.SeasonNumber = 2) - .Build(); - - db.Insert(fakeSeries); - db.InsertMany(fakeEpisodes); - - var parseResult = new EpisodeParseResult - { - Series = fakeSeries, - SeasonNumber = 2, - EpisodeNumbers = new List(), - FullSeason = true - }; - - var ep = mocker.Resolve().GetEpisodesByParseResult(parseResult); - - ep.Should().HaveCount(10); - db.Fetch().Should().HaveCount(10); - } - - [Test] - public void No_Episodes_Not_a_proper_full_season_release() - { - var mocker = new AutoMoqer(); - var db = MockLib.GetEmptyDatabase(); - mocker.SetConstant(db); - - var fakeSeries = Builder.CreateNew().Build(); - - var fakeEpisodes = Builder.CreateListOfSize(10) - .WhereAll() - .Have(e => e.SeriesId = fakeSeries.SeriesId) - .Have(e => e.SeasonNumber = 2) - .Build(); - - db.Insert(fakeSeries); - db.InsertMany(fakeEpisodes); - - var parseResult = new EpisodeParseResult - { - Series = fakeSeries, - SeasonNumber = 2, - EpisodeNumbers = new List(), - FullSeason = false - }; - - var ep = mocker.Resolve().GetEpisodesByParseResult(parseResult); - - ep.Should().HaveCount(0); - db.Fetch().Should().HaveCount(10); - } } } \ No newline at end of file diff --git a/NzbDrone.Core/Providers/EpisodeProvider.cs b/NzbDrone.Core/Providers/EpisodeProvider.cs index 547c0aa64..d8ce7c1dc 100644 --- a/NzbDrone.Core/Providers/EpisodeProvider.cs +++ b/NzbDrone.Core/Providers/EpisodeProvider.cs @@ -125,14 +125,6 @@ namespace NzbDrone.Core.Providers { var result = new List(); - if (parseResult.EpisodeNumbers.Count == 0 && parseResult.FullSeason) - { - result.AddRange(GetEpisodesBySeason(parseResult.Series.SeriesId, parseResult.SeasonNumber)); - - //Return now as no further processing is required - return result; - } - foreach (var episodeNumber in parseResult.EpisodeNumbers) { var episodeInfo = GetEpisode(parseResult.Series.SeriesId, parseResult.SeasonNumber, episodeNumber); diff --git a/NzbDrone.Core/Providers/PostDownloadProvider.cs b/NzbDrone.Core/Providers/PostDownloadProvider.cs index f592f9d83..3d964dd6f 100644 --- a/NzbDrone.Core/Providers/PostDownloadProvider.cs +++ b/NzbDrone.Core/Providers/PostDownloadProvider.cs @@ -180,7 +180,15 @@ namespace NzbDrone.Core.Providers var parseResult = Parser.ParseTitle(directoryInfo.Name.Substring(8)); parseResult.Series = _seriesProvider.FindSeries(parseResult.CleanTitle); - var episodeIds = _episodeProvider.GetEpisodesByParseResult(parseResult).Select(e => e.EpisodeId); + var episodeIds = new List(); + + if (parseResult.EpisodeNumbers.Count == 0 && parseResult.FullSeason) + episodeIds = + _episodeProvider.GetEpisodesBySeason(parseResult.Series.SeriesId, parseResult.SeasonNumber) + .Select(e => e.EpisodeId).ToList(); + + else + episodeIds = _episodeProvider.GetEpisodesByParseResult(parseResult).Select(e => e.EpisodeId).ToList(); _episodeProvider.SetPostDownloadStatus(episodeIds, postDownloadStatus); } diff --git a/NzbDrone.Core/packages.config b/NzbDrone.Core/packages.config index 15b7af0e6..f34d83bf2 100644 --- a/NzbDrone.Core/packages.config +++ b/NzbDrone.Core/packages.config @@ -1,6 +1,6 @@  + - \ No newline at end of file