diff --git a/NzbDrone.Core.Test/SeriesProviderTest.cs b/NzbDrone.Core.Test/SeriesProviderTest.cs index 088db987b..15c1f8210 100644 --- a/NzbDrone.Core.Test/SeriesProviderTest.cs +++ b/NzbDrone.Core.Test/SeriesProviderTest.cs @@ -488,6 +488,7 @@ namespace NzbDrone.Core.Test var fakeEpisodes = Builder.CreateListOfSize(2) .WhereAll() .Have(e => e.SeriesId = fakeSeries.SeriesId) + .Have(e => e.Ignored = false) .WhereTheFirst(1) .Have(e => e.AirDate = DateTime.Today) .AndTheRemaining() @@ -519,6 +520,7 @@ namespace NzbDrone.Core.Test var fakeEpisodes = Builder.CreateListOfSize(2) .WhereAll() .Have(e => e.SeriesId = fakeSeries.SeriesId) + .Have(e => e.Ignored = false) .WhereTheFirst(1) .Have(e => e.AirDate = DateTime.Today.AddDays(-1)) .AndTheRemaining() @@ -551,6 +553,7 @@ namespace NzbDrone.Core.Test .WhereAll() .Have(e => e.SeriesId = fakeSeries.SeriesId) .Have(e => e.AirDate = null) + .Have(e => e.Ignored = false) .Build(); db.Insert(fakeSeries); @@ -578,6 +581,7 @@ namespace NzbDrone.Core.Test var fakeEpisodes = Builder.CreateListOfSize(2) .WhereAll() .Have(e => e.SeriesId = fakeSeries.SeriesId) + .Have(e => e.Ignored = false) .WhereTheFirst(1) .Have(e => e.AirDate = DateTime.Today.AddDays(-1)) .AndTheRemaining() @@ -596,5 +600,38 @@ namespace NzbDrone.Core.Test series.Should().HaveCount(1); series[0].NextAiring.Should().Be(DateTime.Today.AddMonths(1)); } + + [Test] + public void Get_Series_NextAiring_skip_ignored() + { + var mocker = new AutoMoqer(MockBehavior.Strict); + var db = MockLib.GetEmptyDatabase(); + mocker.SetConstant(db); + + var fakeQuality = Builder.CreateNew().Build(); + var fakeSeries = Builder.CreateNew().With(e => e.QualityProfileId = fakeQuality.QualityProfileId).Build(); + var fakeEpisodes = Builder.CreateListOfSize(2) + .WhereAll() + .Have(e => e.SeriesId = fakeSeries.SeriesId) + .WhereTheFirst(1) + .Have(e => e.AirDate = DateTime.Today.AddDays(1)) + .Have(e => e.Ignored = true) + .AndTheRemaining() + .Have(e => e.AirDate = DateTime.Today.AddMonths(1)) + .Have(e => e.Ignored = false) + .Build(); + + db.Insert(fakeSeries); + db.Insert(fakeQuality); + db.InsertMany(fakeEpisodes); + + //Act + mocker.Resolve(); + var series = mocker.Resolve().GetAllSeriesWithEpisodeCount(); + + //Assert + series.Should().HaveCount(1); + series[0].NextAiring.Should().Be(DateTime.Today.AddMonths(1)); + } } } \ No newline at end of file diff --git a/NzbDrone.Core/Providers/SeriesProvider.cs b/NzbDrone.Core/Providers/SeriesProvider.cs index e6ecc90da..c87e4b91e 100644 --- a/NzbDrone.Core/Providers/SeriesProvider.cs +++ b/NzbDrone.Core/Providers/SeriesProvider.cs @@ -49,7 +49,7 @@ namespace NzbDrone.Core.Providers Series.Language, Series.Path, Series.Monitored, Series.QualityProfileId, Series.SeasonFolder, SUM(CASE WHEN Ignored = 0 AND Airdate <= @0 THEN 1 ELSE 0 END) AS EpisodeCount, SUM(CASE WHEN Episodes.Ignored = 0 AND Episodes.EpisodeFileId > 0 AND Episodes.AirDate <= @0 THEN 1 ELSE 0 END) as EpisodeFileCount, - MAX(Episodes.SeasonNumber) as SeasonCount, MIN(CASE WHEN AirDate < @0 THEN NULL ELSE AirDate END) as NextAiring, + MAX(Episodes.SeasonNumber) as SeasonCount, MIN(CASE WHEN AirDate < @0 OR Ignored = 1 THEN NULL ELSE AirDate END) as NextAiring, QualityProfiles.QualityProfileId, QualityProfiles.Name, QualityProfiles.Cutoff, QualityProfiles.SonicAllowed FROM Series INNER JOIN QualityProfiles ON Series.QualityProfileId = QualityProfiles.QualityProfileId