/* using System; using System.Collections.Generic; using System.Linq; using FizzWare.NBuilder; using FluentAssertions; using NUnit.Framework; using NzbDrone.Core.Tv; using NzbDrone.Core.Model; using NzbDrone.Core.Test.Framework; using NzbDrone.Test.Common; namespace NzbDrone.Core.Test.TvTests.EpisodeProviderTests { [TestFixture] public class EpisodeProviderTest_GetEpisodesByParseResult : ObjectDbTest { private IEpisodeService episodeService; private Series fakeSeries; private Series fakeDailySeries; private Episode fakeEpisode; private Episode fakeDailyEpisode; private Episode fakeEpisode2; [SetUp] public void Setup() { fakeSeries = Builder.CreateNew().Build(); fakeDailySeries = Builder.CreateNew() .With(c => c.SeriesType = SeriesType.Daily) .Build(); fakeEpisode = Builder.CreateNew() .With(e => e.SeriesId = fakeSeries.Id) .With(e => e.Title = "Episode (1)") .Build(); fakeEpisode2 = Builder.CreateNew() .With(e => e.SeriesId = fakeSeries.Id) .With(e => e.SeasonNumber = fakeEpisode.SeasonNumber) .With(e => e.EpisodeNumber = fakeEpisode.EpisodeNumber + 1) .With(e => e.Title = "Episode (2)") .Build(); fakeDailyEpisode = Builder.CreateNew() .With(e => e.SeriesId = fakeSeries.Id) .With(e => e.AirDate = DateTime.Now.Date) .With(e => e.Title = "Daily Episode 1") .Build(); episodeService = Mocker.Resolve(); } [Test] public void existing_single_episode_should_return_single_existing_episode() { Db.Insert(fakeEpisode); Db.Insert(fakeSeries); var parseResult = new EpisodeParseResult { Series = fakeSeries, SeasonNumber = fakeEpisode.SeasonNumber, EpisodeNumbers = new List { fakeEpisode.EpisodeNumber } }; var ep = episodeService.GetEpisodesByParseResult(parseResult); ep.Should().HaveCount(1); parseResult.EpisodeTitle.Should().Be(fakeEpisode.Title); VerifyEpisode(ep[0], fakeEpisode); Db().Should().HaveCount(1); } [Test] public void single_none_existing_episode_should_return_nothing_and_add_nothing() { var parseResult = new EpisodeParseResult { Series = fakeSeries, SeasonNumber = fakeEpisode.SeasonNumber, EpisodeNumbers = new List { 10 } }; var episode = episodeService.GetEpisodesByParseResult(parseResult); episode.Should().BeEmpty(); Db.Fetch().Should().HaveCount(0); } [Test] public void single_none_existing_series_should_return_nothing_and_add_nothing() { var parseResult = new EpisodeParseResult { Series = fakeSeries, SeasonNumber = 10, EpisodeNumbers = new List { 10 } }; var episode = episodeService.GetEpisodesByParseResult(parseResult); episode.Should().BeEmpty(); Db.Fetch().Should().HaveCount(0); } [Test] public void existing_multi_episode_should_return_all_episodes() { Db.Insert(fakeSeries); Db.Insert(fakeEpisode); Db.Insert(fakeEpisode2); var parseResult = new EpisodeParseResult { Series = fakeSeries, SeasonNumber = fakeEpisode.SeasonNumber, EpisodeNumbers = new List { fakeEpisode.EpisodeNumber, fakeEpisode2.EpisodeNumber } }; var ep = episodeService.GetEpisodesByParseResult(parseResult); ep.Should().HaveCount(2); Db.Fetch().Should().HaveCount(2); VerifyEpisode(ep[0], fakeEpisode); VerifyEpisode(ep[1], fakeEpisode2); parseResult.EpisodeTitle.Should().Be("Episode"); } [Test] public void none_existing_multi_episode_should_not_return_or_add_anything() { var parseResult = new EpisodeParseResult { Series = fakeSeries, SeasonNumber = fakeEpisode.SeasonNumber, EpisodeNumbers = new List { fakeEpisode.EpisodeNumber, fakeEpisode2.EpisodeNumber } }; var ep = episodeService.GetEpisodesByParseResult(parseResult); ep.Should().BeEmpty(); Db.Fetch().Should().BeEmpty(); } [Test] public void GetEpisodeParseResult_should_return_empty_list_if_episode_list_is_null() { var episodes = episodeService.GetEpisodesByParseResult(new EpisodeParseResult()); episodes.Should().NotBeNull(); episodes.Should().BeEmpty(); } [Test] public void GetEpisodeParseResult_should_return_empty_list_if_episode_list_is_empty() { var episodes = episodeService.GetEpisodesByParseResult(new EpisodeParseResult { EpisodeNumbers = new List() }); episodes.Should().NotBeNull(); episodes.Should().BeEmpty(); } [Test] public void should_return_single_episode_when_air_date_is_provided() { Db.Insert(fakeSeries); Db.Insert(fakeDailyEpisode); var episodes = episodeService.GetEpisodesByParseResult(new EpisodeParseResult { AirDate = DateTime.Today, Series = fakeDailySeries }); episodes.Should().HaveCount(1); VerifyEpisode(episodes[0], fakeDailyEpisode); Db.Fetch().Should().HaveCount(1); } [Test] public void should_not_add_episode_when_episode_doesnt_exist() { var episodes = episodeService.GetEpisodesByParseResult(new EpisodeParseResult { AirDate = DateTime.Today, Series = fakeDailySeries }); episodes.Should().HaveCount(0); Db.Fetch().Should().HaveCount(0); } [Test] public void GetEpisodeParseResult_should_return_single_title_for_multiple_episodes() { Db.Insert(fakeSeries); Db.Insert(fakeEpisode); Db.Insert(fakeEpisode2); var parseResult = new EpisodeParseResult { Series = fakeSeries, SeasonNumber = fakeEpisode.SeasonNumber, EpisodeNumbers = new List { fakeEpisode.EpisodeNumber, fakeEpisode2.EpisodeNumber } }; var ep = episodeService.GetEpisodesByParseResult(parseResult); ep.Should().HaveCount(2); Db.Fetch().Should().HaveCount(2); VerifyEpisode(ep[0], fakeEpisode); VerifyEpisode(ep[1], fakeEpisode2); parseResult.EpisodeTitle.Should().Be("Episode"); } [Test] public void GetEpisodeParseResult_should_return_single_title_for_single_episode() { Db.Insert(fakeEpisode); Db.Insert(fakeSeries); var parseResult = new EpisodeParseResult { Series = fakeSeries, SeasonNumber = fakeEpisode.SeasonNumber, EpisodeNumbers = new List { fakeEpisode.EpisodeNumber } }; var ep = episodeService.GetEpisodesByParseResult(parseResult); ep.Should().HaveCount(1); Db.Fetch().Should().HaveCount(1); ep.First().ShouldHave().AllPropertiesBut(e => e.Series); parseResult.EpisodeTitle.Should().Be(fakeEpisode.Title); } [Test] public void GetEpisodeParseResult_should_return_nothing_when_series_is_not_daily_but_parsed_daily() { Db.Insert(fakeSeries); var parseResult = new EpisodeParseResult { Series = fakeSeries, AirDate = DateTime.Today }; var ep = episodeService.GetEpisodesByParseResult(parseResult); ep.Should().BeEmpty(); ExceptionVerification.ExpectedWarns(1); } private void VerifyEpisode(Episode actual, Episode excpected) { actual.ShouldHave().AllProperties().But(e => e.Series).But(e => e.EpisodeFile).EqualTo(excpected); } } } */