Improved: Upcoming episodes page no longer shows series that aren't monitored.

pull/4/head
kay.one 13 years ago
parent 6df184b7cb
commit 659b3dee55

@ -1,21 +1,18 @@
// ReSharper disable RedundantUsingDirective // ReSharper disable InconsistentNaming
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using FizzWare.NBuilder; using FizzWare.NBuilder;
using FluentAssertions; using FluentAssertions;
using NUnit.Framework; using NUnit.Framework;
using NzbDrone.Core.Providers; using NzbDrone.Core.Providers;
using NzbDrone.Core.Repository; using NzbDrone.Core.Repository;
using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common.AutoMoq;
namespace NzbDrone.Core.Test.ProviderTests namespace NzbDrone.Core.Test.ProviderTests
{ {
[TestFixture] [TestFixture]
// ReSharper disable InconsistentNaming
public class UpcomingEpisodesProviderTest : CoreTest public class UpcomingEpisodesProviderTest : CoreTest
{ {
private IList<Episode> episodes; private IList<Episode> episodes;
@ -24,6 +21,8 @@ namespace NzbDrone.Core.Test.ProviderTests
[SetUp] [SetUp]
public void Setup() public void Setup()
{ {
WithRealDb();
episodes = Builder<Episode>.CreateListOfSize(6) episodes = Builder<Episode>.CreateListOfSize(6)
.All() .All()
.With(e => e.SeriesId = 1) .With(e => e.SeriesId = 1)
@ -42,174 +41,120 @@ namespace NzbDrone.Core.Test.ProviderTests
.With(e => e.AirDate = DateTime.Today.AddDays(9)) .With(e => e.AirDate = DateTime.Today.AddDays(9))
.Build(); .Build();
series = Builder<Series>.CreateNew().With(s => s.SeriesId = 1).Build(); series = Builder<Series>.CreateNew()
.With(s => s.SeriesId = 1)
.And(c => c.Monitored = true)
.Build();
Db.InsertMany(episodes);
Db.Insert(series);
} }
[Test] private void WithIgnoredEpisodes()
public void Get_Yesterday()
{ {
//Setup episodes.ToList().ForEach(c => c.Ignored = true);
var database = TestDbHelper.GetEmptyDatabase(); Db.UpdateMany(episodes);
}
Mocker.SetConstant(database);
database.InsertMany(episodes); private void WithIgnoredSeries()
database.Insert(series); {
series.Monitored = false;
Db.Update(series);
}
//Act [Test]
public void Get_Yesterday()
{
var result = Mocker.Resolve<UpcomingEpisodesProvider>().Yesterday(); var result = Mocker.Resolve<UpcomingEpisodesProvider>().Yesterday();
//Assert //Assert
result.Should().HaveCount(1); result.Should().NotBeEmpty();
result.First().Title.Should().Be(episodes.Where(e => e.AirDate == DateTime.Today.AddDays(-1)).First().Title); result.Should().OnlyContain(c => c.AirDate.Value.Date == DateTime.Today.AddDays(-1).Date);
result.First().Series.Should().NotBeNull(); result.First().Series.Should().NotBeNull();
result.First().Series.SeriesId.Should().NotBe(0); result.First().Series.SeriesId.Should().Be(series.SeriesId);
} }
[Test] [Test]
public void Get_Today() public void Get_Today()
{ {
//Setup
var database = TestDbHelper.GetEmptyDatabase();
Mocker.SetConstant(database);
database.InsertMany(episodes);
database.Insert(series);
//Act //Act
var result = Mocker.Resolve<UpcomingEpisodesProvider>().Today(); var result = Mocker.Resolve<UpcomingEpisodesProvider>().Today();
//Assert result.Should().NotBeEmpty();
result.Should().HaveCount(1); result.Should().OnlyContain(c => c.AirDate.Value.Date == DateTime.Today.Date);
result.First().Title.Should().Be(episodes.Where(e => e.AirDate == DateTime.Today).First().Title);
result.First().Series.Should().NotBeNull(); result.First().Series.Should().NotBeNull();
result.First().Series.SeriesId.Should().NotBe(0); result.First().Series.SeriesId.Should().Be(series.SeriesId);
} }
[Test] [Test]
public void Get_Tomorrow() public void Get_Tomorrow()
{ {
//Setup
var database = TestDbHelper.GetEmptyDatabase();
Mocker.SetConstant(database);
database.InsertMany(episodes);
database.Insert(series);
//Act
var result = Mocker.Resolve<UpcomingEpisodesProvider>().Tomorrow(); var result = Mocker.Resolve<UpcomingEpisodesProvider>().Tomorrow();
//Assert result.Should().NotBeEmpty();
result.Should().HaveCount(1); result.Should().OnlyContain(c => c.AirDate.Value.Date == DateTime.Today.AddDays(1).Date);
result.First().Title.Should().Be(episodes.Where(e => e.AirDate == DateTime.Today.AddDays(1)).First().Title);
result.First().Series.Should().NotBeNull(); result.First().Series.Should().NotBeNull();
result.First().Series.SeriesId.Should().NotBe(0); result.First().Series.SeriesId.Should().Be(series.SeriesId);
} }
[Test] [Test]
public void Get_Week() public void Get_Week()
{ {
//Setup
var database = TestDbHelper.GetEmptyDatabase();
Mocker.SetConstant(database);
database.InsertMany(episodes);
database.Insert(series);
//Act
var result = Mocker.Resolve<UpcomingEpisodesProvider>().Week(); var result = Mocker.Resolve<UpcomingEpisodesProvider>().Week();
//Assert //Assert
result.Should().HaveCount(2); result.Should().HaveCount(2);
result.First().Series.Should().NotBeNull(); result.Should().OnlyContain(c => c.Series != null && c.SeriesId == series.SeriesId);
result.First().Series.SeriesId.Should().NotBe(0);
result.Last().Series.Should().NotBeNull();
result.Last().Series.SeriesId.Should().NotBe(0);
} }
[Test] [Test]
public void Get_Yesterday_skip_ingored() public void Get_Yesterday_should_skip_ingored()
{ {
//Setup WithIgnoredEpisodes();
var database = TestDbHelper.GetEmptyDatabase(); Mocker.Resolve<UpcomingEpisodesProvider>().Yesterday().Should().BeEmpty();
Mocker.SetConstant(database);
episodes.Where(e => e.AirDate == DateTime.Today.AddDays(-1)).Single().Ignored = true;
database.InsertMany(episodes);
database.Insert(series);
//Act
var result = Mocker.Resolve<UpcomingEpisodesProvider>().Yesterday();
//Assert
result.Should().BeEmpty();
} }
[Test] [Test]
public void Get_Today_skip_ingored() public void Get_Today_should_skip_ingored()
{ {
//Setup WithIgnoredEpisodes();
var database = TestDbHelper.GetEmptyDatabase(); Mocker.Resolve<UpcomingEpisodesProvider>().Today().Should().BeEmpty();
Mocker.SetConstant(database);
episodes.Where(e => e.AirDate == DateTime.Today).Single().Ignored = true;
database.InsertMany(episodes);
database.Insert(series);
//Act
var result = Mocker.Resolve<UpcomingEpisodesProvider>().Today();
//Assert
result.Should().BeEmpty();
} }
[Test] [Test]
public void Get_Tomorrow_skip_ingored() public void Get_Tomorrow_should_skip_ingored()
{ {
//Setup WithIgnoredEpisodes();
var database = TestDbHelper.GetEmptyDatabase(); Mocker.Resolve<UpcomingEpisodesProvider>().Tomorrow().Should().BeEmpty();
Mocker.SetConstant(database);
episodes.Where(e => e.AirDate == DateTime.Today.AddDays(1)).Single().Ignored = true;
database.InsertMany(episodes);
database.Insert(series);
//Act
var result = Mocker.Resolve<UpcomingEpisodesProvider>().Tomorrow();
//Assert
result.Should().BeEmpty();
} }
[Test] [Test]
public void Get_Week_skip_ingored() public void Get_Week_should_skip_ingored()
{ {
//Setup WithIgnoredEpisodes();
var database = TestDbHelper.GetEmptyDatabase(); Mocker.Resolve<UpcomingEpisodesProvider>().Week().Should().BeEmpty();
}
Mocker.SetConstant(database);
episodes.Where(e => e.AirDate == DateTime.Today.AddDays(2)).Single().Ignored = true;
database.InsertMany(episodes); [Test]
database.Insert(series); public void Get_Today_should_skip_unmonitored_series()
{
WithIgnoredSeries();
Mocker.Resolve<UpcomingEpisodesProvider>().Today().Should().BeEmpty();
}
//Act [Test]
var result = Mocker.Resolve<UpcomingEpisodesProvider>().Week(); public void Get_Tomoroww_should_skip_unmonitored_series()
{
WithIgnoredSeries();
Mocker.Resolve<UpcomingEpisodesProvider>().Tomorrow().Should().BeEmpty();
}
//Assert [Test]
result.Should().HaveCount(1); public void Get_Week_should_skip_unmonitored_series()
result.First().Series.Should().NotBeNull(); {
result.First().Series.SeriesId.Should().NotBe(0); WithIgnoredSeries();
Mocker.Resolve<UpcomingEpisodesProvider>().Week().Should().BeEmpty();
} }
} }
} }

@ -20,30 +20,31 @@ namespace NzbDrone.Core.Providers
public virtual List<Episode> Yesterday() public virtual List<Episode> Yesterday()
{ {
return _database.Fetch<Episode, Series>(@"SELECT * FROM Episodes return RecentEpisodes().Where(c => c.AirDate.Value.Date == DateTime.Now.Date.AddDays(-1)).ToList();
INNER JOIN Series ON Episodes.SeriesId = Series.SeriesId
WHERE Ignored = 0 AND AirDate = @0", DateTime.Today.AddDays(-1));
} }
public virtual List<Episode> Today() public virtual List<Episode> Today()
{ {
return _database.Fetch<Episode, Series>(@"SELECT * FROM Episodes return RecentEpisodes().Where(c => c.AirDate.Value.Date == DateTime.Now.Date).ToList();
INNER JOIN Series ON Episodes.SeriesId = Series.SeriesId
WHERE Ignored = 0 AND AirDate = @0", DateTime.Today);
} }
public virtual List<Episode> Tomorrow() public virtual List<Episode> Tomorrow()
{ {
return _database.Fetch<Episode, Series>(@"SELECT * FROM Episodes return RecentEpisodes().Where(c => c.AirDate.Value.Date == DateTime.Now.Date.AddDays(1)).ToList();
INNER JOIN Series ON Episodes.SeriesId = Series.SeriesId
WHERE Ignored = 0 AND AirDate = @0", DateTime.Today.AddDays(1));
} }
public virtual List<Episode> Week() public virtual List<Episode> Week()
{
return RecentEpisodes().Where(c => c.AirDate >= DateTime.Today.AddDays(2).Date).ToList();
}
private List<Episode> RecentEpisodes()
{ {
return _database.Fetch<Episode, Series>(@"SELECT * FROM Episodes return _database.Fetch<Episode, Series>(@"SELECT * FROM Episodes
INNER JOIN Series ON Episodes.SeriesId = Series.SeriesId INNER JOIN Series ON Episodes.SeriesId = Series.SeriesId
WHERE Ignored = 0 AND AirDate BETWEEN @0 AND @1", DateTime.Today.AddDays(2), DateTime.Today.AddDays(8)); WHERE Series.Monitored = 1 AND Ignored = 0 AND AirDate BETWEEN @0 AND @1"
,DateTime.Today.AddDays(-1).Date, DateTime.Today.AddDays(8).Date);
} }
} }
} }
Loading…
Cancel
Save