Sonarr/NzbDrone.Core.Test/ProviderTests/HistoryProviderTest.cs

278 lines
9.4 KiB
C#
Raw Normal View History

using System;
using System.Linq;
2011-05-28 19:23:35 +00:00
using FizzWare.NBuilder;
2011-06-02 21:06:46 +00:00
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Tv;
using NzbDrone.Core.Providers;
using NzbDrone.Core.Repository;
2011-01-29 20:03:47 +00:00
using NzbDrone.Core.Repository.Quality;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.ProviderTests
{
[TestFixture]
// ReSharper disable InconsistentNaming
2013-02-02 20:54:03 +00:00
public class HistoryProviderTest : SqlCeTest
{
[Test]
public void AllItems()
{
WithRealDb();
//Setup
2012-10-14 00:36:16 +00:00
var historyItem = Builder<History>.CreateListOfSize(10)
.All()
.With(c => c.Quality = QualityTypes.SDTV)
.Build();
Db.InsertMany(historyItem);
//Act
2011-12-15 04:15:53 +00:00
var result = Mocker.Resolve<HistoryProvider>().AllItems();
//Assert
2011-06-17 06:59:13 +00:00
result.Should().HaveSameCount(historyItem);
}
[Test]
public void AllItemsWithRelationships()
{
WithRealDb();
var seriesOne = Builder<Series>.CreateNew().With(s => s.SeriesId = 12345).Build();
var seriesTwo = Builder<Series>.CreateNew().With(s => s.SeriesId = 54321).Build();
var episodes = Builder<Episode>.CreateListOfSize(10).Build();
2012-10-14 00:36:16 +00:00
var historyItems = Builder<History>
.CreateListOfSize(10)
.All()
.With(c => c.Quality = QualityTypes.SDTV)
.TheFirst(5)
.With(h => h.SeriesId = seriesOne.SeriesId)
.TheLast(5)
.With(h => h.SeriesId = seriesTwo.SeriesId)
.Build();
Db.InsertMany(historyItems);
Db.InsertMany(episodes);
Db.Insert(seriesOne);
Db.Insert(seriesTwo);
//Act
2011-12-15 04:15:53 +00:00
var result = Mocker.Resolve<HistoryProvider>().AllItemsWithRelationships();
//Assert
result.Should().HaveSameCount(historyItems);
foreach (var history in result)
{
Assert.NotNull(history.Episode);
Assert.That(!String.IsNullOrEmpty(history.SeriesTitle));
}
}
2011-06-17 06:59:13 +00:00
[Test]
public void PurgeItem()
{
WithRealDb();
2011-06-17 06:59:13 +00:00
2012-10-14 00:36:16 +00:00
var historyItem = Builder<History>
.CreateListOfSize(10)
.All()
.With(c => c.Quality = QualityTypes.SDTV)
.Build();
Db.InsertMany(historyItem);
2011-06-17 06:59:13 +00:00
//Act
Db.Fetch<History>().Should().HaveCount(10);
2011-12-15 04:15:53 +00:00
Mocker.Resolve<HistoryProvider>().Purge();
2011-06-17 06:59:13 +00:00
//Assert
Db.Fetch<History>().Should().HaveCount(0);
2011-06-17 06:59:13 +00:00
}
[Test]
public void Trim_Items()
{
WithRealDb();
var historyItem = Builder<History>.CreateListOfSize(30)
2012-10-14 00:36:16 +00:00
.All()
.With(c => c.Quality = QualityTypes.SDTV)
2011-10-18 21:46:06 +00:00
.TheFirst(10).With(c => c.Date = DateTime.Now)
.TheNext(20).With(c => c.Date = DateTime.Now.AddDays(-31))
2011-06-17 06:59:13 +00:00
.Build();
Db.InsertMany(historyItem);
2011-06-17 06:59:13 +00:00
//Act
Db.Fetch<History>().Should().HaveCount(30);
2011-12-15 04:15:53 +00:00
Mocker.Resolve<HistoryProvider>().Trim();
2011-06-17 06:59:13 +00:00
//Assert
var result = Db.Fetch<History>();
result.Should().HaveCount(10);
result.Should().OnlyContain(s => s.Date > DateTime.Now.AddDays(-30));
}
2011-04-22 20:14:02 +00:00
2011-05-28 19:23:35 +00:00
[Test]
public void GetBestQualityInHistory_no_result()
{
WithRealDb();
Mocker.Resolve<HistoryProvider>().GetBestQualityInHistory(12, 12, 12).Should().Be(null);
}
[Test]
public void GetBestQualityInHistory_single_result()
{
WithRealDb();
2011-05-28 19:23:35 +00:00
var episodes = Builder<Episode>.CreateListOfSize(10).Build();
var historyEpisode = episodes[6];
var history = Builder<History>.CreateNew()
.With(h => h.Quality = QualityTypes.Bluray720p)
.With(h => h.IsProper = true)
.With(h => h.EpisodeId = historyEpisode.EpisodeId)
.Build();
Db.Insert(history);
Db.InsertMany(episodes);
2011-05-28 19:23:35 +00:00
//Act
var result = Mocker.Resolve<HistoryProvider>()
.GetBestQualityInHistory(historyEpisode.SeriesId, historyEpisode.SeasonNumber, historyEpisode.EpisodeNumber);
2011-05-28 19:23:35 +00:00
//Assert
result.Should().NotBeNull();
2012-10-14 00:36:16 +00:00
result.Quality.Should().Be(QualityTypes.Bluray720p);
result.Proper.Should().BeTrue();
2011-05-28 19:23:35 +00:00
}
[Test]
public void GetBestQualityInHistory_should_return_highest_result()
2011-05-28 19:23:35 +00:00
{
WithRealDb();
2011-05-28 19:23:35 +00:00
var episodes = Builder<Episode>.CreateListOfSize(10).Build();
var historyEpisode = episodes[6];
2011-06-17 06:59:13 +00:00
var history = Builder<History>
.CreateListOfSize(5)
.All()
.With(h => h.EpisodeId = historyEpisode.EpisodeId)
.With(h => h.SeriesId = historyEpisode.SeriesId)
.TheFirst(1)
.With(h => h.Quality = QualityTypes.DVD)
.With(h => h.IsProper = true)
.TheNext(1)
.With(h => h.Quality = QualityTypes.Bluray720p)
.With(h => h.IsProper = false)
.TheNext(1)
.With(h => h.Quality = QualityTypes.Bluray720p)
.With(h => h.IsProper = true)
.TheNext(1)
.With(h => h.Quality = QualityTypes.Bluray720p)
.With(h => h.IsProper = false)
.TheNext(1)
.With(h => h.Quality = QualityTypes.SDTV)
.With(h => h.IsProper = true)
.Build();
Db.InsertMany(history);
Db.InsertMany(episodes);
//Act
var result = Mocker.Resolve<HistoryProvider>()
.GetBestQualityInHistory(historyEpisode.SeriesId, historyEpisode.SeasonNumber, historyEpisode.EpisodeNumber);
//Assert
result.Should().NotBeNull();
result.Quality.Should().Be(QualityTypes.Bluray720p);
result.Proper.Should().BeTrue();
}
[Test]
public void GetBestQualityInHistory_should_return_highest_weighted_result()
{
WithRealDb();
var episodes = Builder<Episode>.CreateListOfSize(10).Build();
var historyEpisode = episodes[6];
var history = Builder<History>
.CreateListOfSize(5)
.All()
.With(h => h.EpisodeId = historyEpisode.EpisodeId)
.With(h => h.SeriesId = historyEpisode.SeriesId)
.TheFirst(1)
.With(h => h.Quality = QualityTypes.DVD)
.With(h => h.IsProper = true)
.TheNext(1)
.With(h => h.Quality = QualityTypes.WEBDL720p)
.With(h => h.IsProper = false)
.TheNext(1)
.With(h => h.Quality = QualityTypes.WEBDL720p)
.With(h => h.IsProper = true)
.TheNext(1)
.With(h => h.Quality = QualityTypes.WEBDL1080p)
.With(h => h.IsProper = false)
.TheNext(1)
.With(h => h.Quality = QualityTypes.SDTV)
.With(h => h.IsProper = true)
.Build();
Db.InsertMany(history);
Db.InsertMany(episodes);
2011-05-28 19:23:35 +00:00
//Act
var result = Mocker.Resolve<HistoryProvider>()
.GetBestQualityInHistory(historyEpisode.SeriesId, historyEpisode.SeasonNumber, historyEpisode.EpisodeNumber);
2011-05-28 19:23:35 +00:00
//Assert
2011-06-23 06:56:17 +00:00
result.Should().NotBeNull();
result.Quality.Should().Be(QualityTypes.WEBDL1080p);
result.Proper.Should().BeFalse();
2011-05-28 19:23:35 +00:00
}
2011-04-22 20:14:02 +00:00
[Test]
public void add_item()
{
WithRealDb();
2011-04-22 20:14:02 +00:00
2011-06-17 06:59:13 +00:00
var episode = Builder<Episode>.CreateNew().Build();
2011-04-22 20:14:02 +00:00
QualityTypes quality = QualityTypes.HDTV720p;
2011-06-17 06:59:13 +00:00
const bool proper = true;
2011-04-22 20:14:02 +00:00
var history = new History
{
Date = DateTime.Now,
EpisodeId = episode.EpisodeId,
2011-06-17 06:59:13 +00:00
SeriesId = episode.SeriesId,
NzbTitle = "my title",
2011-06-17 06:59:13 +00:00
Indexer = "Fake Indexer",
Quality = quality,
IsProper = proper
2011-04-22 20:14:02 +00:00
};
//Act
2011-12-15 04:15:53 +00:00
Mocker.Resolve<HistoryProvider>().Add(history);
//Assert
var storedHistory = Db.Fetch<History>();
2011-06-02 21:06:46 +00:00
storedHistory.Should().HaveCount(1);
2011-06-23 06:56:17 +00:00
history.Date.Should().BeWithin(TimeSpan.FromMinutes(1)).Before(storedHistory.First().Date);
2011-06-23 06:56:17 +00:00
history.EpisodeId.Should().Be(storedHistory.First().EpisodeId);
history.SeriesId.Should().Be(storedHistory.First().SeriesId);
history.NzbTitle.Should().Be(storedHistory.First().NzbTitle);
history.Indexer.Should().Be(storedHistory.First().Indexer);
history.Quality.Should().Be(storedHistory.First().Quality);
history.IsProper.Should().Be(storedHistory.First().IsProper);
2011-04-22 20:14:02 +00:00
}
}
}