Added sabtitle method

Added custom parse option to Indexrbase
This commit is contained in:
kay.one 2011-04-20 18:26:13 -07:00
parent 9028e498ca
commit 10ad7d1ed5
13 changed files with 289 additions and 84 deletions

View file

@ -1,10 +1,13 @@
using System;
using System.Linq;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq.Expressions;
using AutoMoq;
using FizzWare.NBuilder;
using MbUnit.Framework;
using Moq;
using NzbDrone.Core.Model;
using NzbDrone.Core.Providers;
using NzbDrone.Core.Repository;
using NzbDrone.Core.Repository.Quality;
@ -54,42 +57,142 @@ namespace NzbDrone.Core.Test
}
[Test]
public void IsNeededTrue()
//Should Download
[Row(QualityTypes.TV, true, QualityTypes.TV, false, true)]
[Row(QualityTypes.DVD, true, QualityTypes.TV, true, true)]
[Row(QualityTypes.DVD, true, QualityTypes.TV, true, true)]
//Should Skip
[Row(QualityTypes.Bluray720, true, QualityTypes.Bluray1080, false, false)]
[Row(QualityTypes.TV, true, QualityTypes.HDTV, true, false)]
public void Is_Needed_Tv_Dvd_BluRay_BluRay720_Is_Cutoff(QualityTypes reportQuality, Boolean isReportProper, QualityTypes fileQuality, Boolean isFileProper, bool excpected)
{
//Setup
var season = new Mock<SeasonProvider>();
var series = new Mock<SeriesProvider>();
//var history = new Mock<IHistoryProvider>();
//var quality = new Mock<IQualityProvider>();
var repo = new Mock<IRepository>();
var parseResult = new EpisodeParseResult
{
SeriesId = 12,
SeasonNumber = 2,
Episodes = new List<int> { 3 },
Quality = reportQuality,
Proper = isReportProper
};
var epInDb = new Episode
{
AirDate = DateTime.Today,
EpisodeId = 55555,
EpisodeNumber = 5,
Language = "en",
SeasonId = 4444,
SeasonNumber = 1
};
var epFile = new EpisodeFile()
{
Proper = isFileProper,
Quality = fileQuality
};
season.Setup(s => s.IsIgnored(12345, 1)).Returns(false);
series.Setup(s => s.QualityWanted(12345, QualityTypes.TV)).Returns(true);
repo.Setup(s => s.Single<Episode>(c => c.SeriesId == 12345 && c.SeasonNumber == 1 && c.EpisodeNumber == 5)).
Returns(epInDb);
var episodeInfo = new Episode
{
SeriesId = 12,
SeasonNumber = 2,
EpisodeNumber = 3,
Series = new Series() { QualityProfileId = 1 },
EpisodeFile = epFile
//repo.Setup(s => s.All<EpisodeFile>()).Returns();
//repo.All<EpisodeFile>().Where(c => c.EpisodeId == episode.EpisodeId);
};
var seriesQualityProfile = new QualityProfile()
{
Allowed = new List<QualityTypes> { QualityTypes.TV, QualityTypes.DVD, QualityTypes.Bluray720, QualityTypes.Bluray1080 },
Cutoff = QualityTypes.Bluray720,
Name = "TV/DVD",
};
var mocker = new AutoMoqer();
mocker.GetMock<IRepository>()
.Setup(r => r.Single(It.IsAny<Expression<Func<Episode, Boolean>>>()))
.Returns(episodeInfo);
mocker.GetMock<QualityProvider>()
.Setup(q => q.Find(1))
.Returns(seriesQualityProfile);
var result = mocker.Resolve<EpisodeProvider>().IsNeeded(parseResult);
Assert.AreEqual(excpected, result);
}
[Test]
public void Missing_episode_should_be_added()
{
//Setup
var parseResult1 = new EpisodeParseResult
{
SeriesId = 12,
SeasonNumber = 2,
Episodes = new List<int> { 3 },
Quality = QualityTypes.DVD
};
var parseResult2 = new EpisodeParseResult
{
SeriesId = 12,
SeasonNumber = 3,
Episodes = new List<int> { 3 },
Quality = QualityTypes.DVD
};
var mocker = new AutoMoqer();
mocker.SetConstant(MockLib.GetEmptyRepository());
var episodeProvider = mocker.Resolve<EpisodeProvider>();
var result1 = episodeProvider.IsNeeded(parseResult1);
var result2 = episodeProvider.IsNeeded(parseResult2);
var episodes = episodeProvider.GetEpisodeBySeries(12);
Assert.IsTrue(result1);
Assert.IsTrue(result2);
Assert.IsNotEmpty(episodes);
Assert.Count(2, episodes);
}
[Test]
[Row(1, new[] { 2 }, "My Episode Title", QualityTypes.DVD, false, "My Series Name - 1x2 - My Episode Title DVD")]
[Row(1, new[] { 2 }, "My Episode Title", QualityTypes.DVD, true, "My Series Name - 1x2 - My Episode Title DVD [Proper]")]
[Row(1, new[] { 2 }, "", QualityTypes.DVD, true, "My Series Name - 1x2 - DVD [Proper]")]
[Row(1, new[] { 2, 4 }, "My Episode Title", QualityTypes.HDTV, false, "My Series Name - 1x2-1x4 - My Episode Title HDTV")]
[Row(1, new[] { 2, 4 }, "My Episode Title", QualityTypes.HDTV, true, "My Series Name - 1x2-1x4 - My Episode Title HDTV [Proper]")]
[Row(1, new[] { 2, 4 }, "", QualityTypes.HDTV, true, "My Series Name - 1x2-1x4 - HDTV [Proper]")]
public void sab_title(int seasons, int[] episodes, string title, QualityTypes quality, bool proper, string excpected)
{
//Arrange
var fakeSeries = new Series()
{
SeriesId = 12,
Path = "C:\\TV Shows\\My Series Name"
};
var mocker = new AutoMoqer();
mocker.GetMock<SeriesProvider>(MockBehavior.Strict)
.Setup(c => c.GetSeries(12))
.Returns(fakeSeries);
var parsResult = new EpisodeParseResult()
{
SeriesId = 12,
AirDate = DateTime.Now,
Episodes = episodes.ToList(),
Proper = proper,
Quality = quality,
SeasonNumber = seasons,
EpisodeTitle = title
};
//Act
var actual = mocker.Resolve<EpisodeProvider>().GetSabTitle(parsResult);
//Assert
Assert.AreEqual(excpected, actual);
}
[Test]
[Explicit]
public void Add_daily_show_episodes()
{
var mocker = new AutoMoqer();