diff --git a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest.cs b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest.cs index 86e2a637b..a476f8bfc 100644 --- a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest.cs +++ b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest.cs @@ -1544,5 +1544,51 @@ namespace NzbDrone.Core.Test.ProviderTests { Mocker.Resolve().SetPostDownloadStatus(new List(), PostDownloadStatusType.Failed); } + + [Test] + public void RefreshEpisodeInfo_should_ignore_episode_zero_except_if_season_one() + { + //Arrange + const int seriesId = 71663; + const int episodeCount = 5; + + var tvdbSeries = Builder.CreateNew().With( + c => c.Episodes = + new List(Builder.CreateListOfSize(episodeCount). + All() + .With(l => l.Language = new TvdbLanguage(0, "eng", "a")) + .With(e => e.EpisodeNumber = 0) + .TheFirst(1) + .With(e => e.SeasonNumber = 1) + .TheNext(1) + .With(e => e.SeasonNumber = 2) + .TheNext(1) + .With(e => e.SeasonNumber = 3) + .TheNext(1) + .With(e => e.SeasonNumber = 4) + .TheNext(1) + .With(e => e.SeasonNumber = 5) + .Build()) + ).With(c => c.Id = seriesId).Build(); + + var fakeSeries = Builder.CreateNew().With(c => c.SeriesId = seriesId).Build(); + + WithRealDb(); + + Db.Insert(fakeSeries); + + Mocker.GetMock() + .Setup(c => c.GetSeries(seriesId, true)) + .Returns(tvdbSeries); + + //Act + Mocker.Resolve().RefreshEpisodeInfo(fakeSeries); + + //Assert + var result = Mocker.Resolve().GetEpisodeBySeries(seriesId).ToList(); + result.Should().HaveCount(episodeCount); + result.Where(e => e.Ignored).Should().HaveCount(episodeCount - 1); + result.Single(e => e.SeasonNumber == 1).Ignored.Should().BeFalse(); + } } } diff --git a/NzbDrone.Core/Providers/EpisodeProvider.cs b/NzbDrone.Core/Providers/EpisodeProvider.cs index b3bf229db..fcaca6cfe 100644 --- a/NzbDrone.Core/Providers/EpisodeProvider.cs +++ b/NzbDrone.Core/Providers/EpisodeProvider.cs @@ -287,7 +287,7 @@ namespace NzbDrone.Core.Providers newList.Add(episodeToUpdate); //If it is Episode Zero Ignore it, since it is new - if (episode.EpisodeNumber == 0) + if (episode.EpisodeNumber == 0 && episode.SeasonNumber > 1) { episodeToUpdate.Ignored = true; }