From fbc0a561ca75a22df072d07877038bfd729071be Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 30 Nov 2011 00:21:18 -0800 Subject: [PATCH] Fixed a big where Season 0 wasn't being ignored for new seasons + a test to confirm it. --- .../ProviderTests/EpisodeProviderTest.cs | 40 +++++++++++++++++++ NzbDrone.Core/Providers/EpisodeProvider.cs | 9 +++-- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest.cs b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest.cs index 0b75cb2a0..5c09f6721 100644 --- a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest.cs +++ b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest.cs @@ -414,6 +414,46 @@ namespace NzbDrone.Core.Test.ProviderTests result.Where(e => e.EpisodeNumber == 0 && e.SeasonNumber == 15).Single().Ignored.Should().BeTrue(); } + [Test] + public void RefreshEpisodeInfo_ignore_season_zero() + { + //Arrange + const int seriesId = 71663; + const int episodeCount = 10; + + var fakeEpisodes = Builder.CreateNew().With( + c => c.Episodes = + new List(Builder.CreateListOfSize(episodeCount). + All() + .With(l => l.Language = new TvdbLanguage(0, "eng", "a")) + .With(e => e.SeasonNumber = 0) + .Build()) + ).With(c => c.Id = seriesId).Build(); + + var fakeSeries = Builder.CreateNew().With(c => c.SeriesId = seriesId).Build(); + + var mocker = new AutoMoqer(); + + var db = TestDbHelper.GetEmptyDatabase(); + mocker.SetConstant(db); + + db.Insert(fakeSeries); + + mocker.GetMock() + .Setup(c => c.GetSeries(seriesId, true)) + .Returns(fakeEpisodes); + + + //Act + mocker.Resolve().RefreshEpisodeInfo(fakeSeries); + + //Assert + var result = mocker.Resolve().GetEpisodeBySeries(seriesId).ToList(); + mocker.GetMock().VerifyAll(); + result.Should().HaveCount(episodeCount); + result.Where(e => e.Ignored).Should().HaveCount(episodeCount); + } + [Test] public void new_episodes_only_calls_Insert() { diff --git a/NzbDrone.Core/Providers/EpisodeProvider.cs b/NzbDrone.Core/Providers/EpisodeProvider.cs index e7a625186..73b3f8168 100644 --- a/NzbDrone.Core/Providers/EpisodeProvider.cs +++ b/NzbDrone.Core/Providers/EpisodeProvider.cs @@ -278,12 +278,13 @@ namespace NzbDrone.Core.Providers episodeToUpdate = new Episode(); newList.Add(episodeToUpdate); - //We need to check if this episode should be ignored based on IsIgnored rules - IsIgnored(series.SeriesId, episode.SeasonNumber); - //If it is Episode Zero Ignore it, since it is new if (episode.EpisodeNumber == 0) episodeToUpdate.Ignored = true; + + //Else we need to check if this episode should be ignored based on IsIgnored rules + else + episodeToUpdate.Ignored = IsIgnored(series.SeriesId, episode.SeasonNumber); } else @@ -436,7 +437,7 @@ namespace NzbDrone.Core.Providers var tvDbIdQuery = String.Format("DELETE FROM Episodes WHERE SeriesId = {0} AND TvDbEpisodeId > 0 AND TvDbEpisodeId NOT IN ({1})", series.SeriesId, tvDbIdString); - Logger.Trace("Deleting nivalid episodes by TvDbId for {0}", series.SeriesId); + Logger.Trace("Deleting invalid episodes by TvDbId for {0}", series.SeriesId); _database.Execute(tvDbIdQuery); Logger.Trace("Finished deleting invalid episodes for {0}", series.SeriesId);