diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index 5d42673b5..5da8f2dc0 100644 --- a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -91,6 +91,7 @@ + diff --git a/NzbDrone.Core.Test/UpcomingEpisodesProviderTest.cs b/NzbDrone.Core.Test/UpcomingEpisodesProviderTest.cs new file mode 100644 index 000000000..3d674b252 --- /dev/null +++ b/NzbDrone.Core.Test/UpcomingEpisodesProviderTest.cs @@ -0,0 +1,151 @@ +// ReSharper disable RedundantUsingDirective +using System; +using System.Collections.Generic; +using System.Linq; +using AutoMoq; +using FizzWare.NBuilder; +using FluentAssertions; +using NUnit.Framework; +using NzbDrone.Core.Model; +using NzbDrone.Core.Providers; +using NzbDrone.Core.Repository; +using NzbDrone.Core.Repository.Quality; +using NzbDrone.Core.Test.Framework; + +namespace NzbDrone.Core.Test +{ + [TestFixture] + // ReSharper disable InconsistentNaming + public class UpcomingEpisodesProviderTest : TestBase + { + private Episode yesterday; + private Episode today; + private Episode tomorrow; + private Episode twoDays; + private Episode sevenDays; + private Episode eightDays; + + [SetUp] + public new void Setup() + { + yesterday = Builder.CreateNew() + .With(c => c.AirDate = DateTime.Today.AddDays(-1)) + .With(c => c.Title = "Yesterday") + .Build(); + + today = Builder.CreateNew() + .With(c => c.AirDate = DateTime.Today) + .With(c => c.Title = "Today") + .Build(); + + tomorrow = Builder.CreateNew() + .With(c => c.AirDate = DateTime.Today.AddDays(1)) + .With(c => c.Title = "Tomorrow") + .Build(); + + twoDays = Builder.CreateNew() + .With(c => c.AirDate = DateTime.Today.AddDays(2)) + .With(c => c.Title = "Two Days") + .Build(); + + sevenDays = Builder.CreateNew() + .With(c => c.AirDate = DateTime.Today.AddDays(7)) + .With(c => c.Title = "Seven Days") + .Build(); + + sevenDays = Builder.CreateNew() + .With(c => c.AirDate = DateTime.Today.AddDays(8)) + .With(c => c.Title = "Eight Days") + .Build(); + + base.Setup(); + } + + [Test] + public void Get_Yesterday() + { + //Setup + var database = MockLib.GetEmptyDatabase(); + var mocker = new AutoMoqer(); + mocker.SetConstant(database); + + database.Insert(yesterday); + database.Insert(today); + database.Insert(tomorrow); + database.Insert(twoDays); + database.Insert(sevenDays); + + //Act + var result = mocker.Resolve().Yesterday(); + + //Assert + Assert.AreEqual(1, result.Count); + Assert.AreEqual(yesterday.Title, result[0].Title); + } + + [Test] + public void Get_Today() + { + //Setup + var database = MockLib.GetEmptyDatabase(); + var mocker = new AutoMoqer(); + mocker.SetConstant(database); + + database.Insert(yesterday); + database.Insert(today); + database.Insert(tomorrow); + database.Insert(twoDays); + database.Insert(sevenDays); + + //Act + var result = mocker.Resolve().Today(); + + //Assert + Assert.AreEqual(1, result.Count); + Assert.AreEqual(today.Title, result[0].Title); + } + + [Test] + public void Get_Tomorrow() + { + //Setup + var database = MockLib.GetEmptyDatabase(); + var mocker = new AutoMoqer(); + mocker.SetConstant(database); + + database.Insert(yesterday); + database.Insert(today); + database.Insert(tomorrow); + database.Insert(twoDays); + database.Insert(sevenDays); + + //Act + var result = mocker.Resolve().Tomorrow(); + + //Assert + Assert.AreEqual(1, result.Count); + Assert.AreEqual(tomorrow.Title, result[0].Title); + } + + [Test] + public void Get_Week() + { + //Setup + var database = MockLib.GetEmptyDatabase(); + var mocker = new AutoMoqer(); + mocker.SetConstant(database); + + database.Insert(yesterday); + database.Insert(today); + database.Insert(tomorrow); + database.Insert(twoDays); + database.Insert(sevenDays); + + //Act + var result = mocker.Resolve().Week(); + + //Assert + Assert.AreEqual(2, result.Count); + } + } +} diff --git a/NzbDrone.Core/Datastore/MigrationsHelper.cs b/NzbDrone.Core/Datastore/MigrationsHelper.cs index 7ff902504..a4f8ced30 100644 --- a/NzbDrone.Core/Datastore/MigrationsHelper.cs +++ b/NzbDrone.Core/Datastore/MigrationsHelper.cs @@ -40,7 +40,7 @@ namespace NzbDrone.Core.Datastore migrator.MigrateToLastVersion(); - ForceSubSonicMigration(Connection.CreateSimpleRepository(connetionString)); + //ForceSubSonicMigration(Connection.CreateSimpleRepository(connetionString)); Logger.Info("Database migration completed"); diff --git a/NzbDrone.Core/Providers/UpcomingEpisodesProvider.cs b/NzbDrone.Core/Providers/UpcomingEpisodesProvider.cs index 14bcb61f2..d52c0249a 100644 --- a/NzbDrone.Core/Providers/UpcomingEpisodesProvider.cs +++ b/NzbDrone.Core/Providers/UpcomingEpisodesProvider.cs @@ -4,25 +4,25 @@ using System.Linq; using Ninject; using NzbDrone.Core.Model; using NzbDrone.Core.Repository; +using PetaPoco; using SubSonic.Repository; namespace NzbDrone.Core.Providers { public class UpcomingEpisodesProvider { - private readonly IRepository _repository; + private readonly IDatabase _database; [Inject] - public UpcomingEpisodesProvider(IRepository repository) + public UpcomingEpisodesProvider(IDatabase database) { - _repository = repository; + _database = database; } public virtual UpcomingEpisodesModel Upcoming() { - var allEps = - _repository.All().Where( - e => e.AirDate >= DateTime.Today.AddDays(-1) && e.AirDate < DateTime.Today.AddDays(8)); + var allEps = _database.Fetch("WHERE AirDate BETWEEN @0 AND @1", DateTime.Today.AddDays(-1), + DateTime.Today.AddDays(8)); var yesterday = allEps.Where(e => e.AirDate == DateTime.Today.AddDays(-1)).ToList(); var today = allEps.Where(e => e.AirDate == DateTime.Today).ToList(); @@ -33,24 +33,22 @@ namespace NzbDrone.Core.Providers public virtual List Yesterday() { - return _repository.All().Where(e => e.AirDate == DateTime.Today.AddDays(-1)).ToList(); + return _database.Fetch("WHERE AirDate = @0", DateTime.Today.AddDays(-1)); } public virtual List Today() { - return _repository.All().Where(e => e.AirDate == DateTime.Today).ToList(); + return _database.Fetch("WHERE AirDate = @0", DateTime.Today); } public virtual List Tomorrow() { - return _repository.All().Where(e => e.AirDate == DateTime.Today.AddDays(1)).ToList(); + return _database.Fetch("WHERE AirDate = @0", DateTime.Today.AddDays(1)); } public virtual List Week() { - return - _repository.All().Where(e => e.AirDate > DateTime.Today.AddDays(1) && e.AirDate < DateTime.Today.AddDays(8)) - .ToList(); + return _database.Fetch("WHERE AirDate BETWEEN @0 AND @1", DateTime.Today.AddDays(2), DateTime.Today.AddDays(8)); } } } \ No newline at end of file