using System; using System.Collections.Generic; using System.Linq; using System.Text; using FizzWare.NBuilder; using FluentAssertions; using Marr.Data; using Moq; using NUnit.Framework; using NzbDrone.Common; using NzbDrone.Core.MediaFiles; using NzbDrone.Core.MediaFiles.EpisodeImport.Specifications; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Providers; using NzbDrone.Core.Qualities; using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Tv; namespace NzbDrone.Core.Test.MediaFileTests.EpisodeImportTests { [TestFixture] public class UpgradeSpecificationFixture : CoreTest { private Series _series; private LocalEpisode _localEpisode; [SetUp] public void Setup() { _series = Builder.CreateNew() .With(s => s.SeriesType = SeriesTypes.Standard) .Build(); _localEpisode = new LocalEpisode { Path = @"C:\Test\30 Rock\30.rock.s01e01.avi", Quality = new QualityModel(Quality.HDTV720p, false) }; } [Test] public void should_return_true_if_no_existing_episodeFile() { _localEpisode.Episodes = Builder.CreateListOfSize(1) .All() .With(e => e.EpisodeFileId = 0) .With(e => e.EpisodeFile = null) .Build() .ToList(); Subject.IsSatisfiedBy(_localEpisode).Should().BeTrue(); } [Test] public void should_return_true_if_no_existing_episodeFile_for_multi_episodes() { _localEpisode.Episodes = Builder.CreateListOfSize(2) .All() .With(e => e.EpisodeFileId = 0) .With(e => e.EpisodeFile = null) .Build() .ToList(); Subject.IsSatisfiedBy(_localEpisode).Should().BeTrue(); } [Test] public void should_return_true_if_upgrade_for_existing_episodeFile() { _localEpisode.Episodes = Builder.CreateListOfSize(1) .All() .With(e => e.EpisodeFileId = 1) .With(e => e.EpisodeFile = new LazyLoaded( new EpisodeFile { Quality = new QualityModel(Quality.SDTV, false) })) .Build() .ToList(); Subject.IsSatisfiedBy(_localEpisode).Should().BeTrue(); } [Test] public void should_return_true_if_upgrade_for_existing_episodeFile_for_multi_episodes() { _localEpisode.Episodes = Builder.CreateListOfSize(2) .All() .With(e => e.EpisodeFileId = 1) .With(e => e.EpisodeFile = new LazyLoaded( new EpisodeFile { Quality = new QualityModel(Quality.SDTV, false) })) .Build() .ToList(); Subject.IsSatisfiedBy(_localEpisode).Should().BeTrue(); } [Test] public void should_return_false_if_not_an_upgrade_for_existing_episodeFile() { _localEpisode.Episodes = Builder.CreateListOfSize(1) .All() .With(e => e.EpisodeFileId = 1) .With(e => e.EpisodeFile = new LazyLoaded( new EpisodeFile { Quality = new QualityModel(Quality.Bluray720p, false) })) .Build() .ToList(); Subject.IsSatisfiedBy(_localEpisode).Should().BeFalse(); } [Test] public void should_return_false_if_not_an_upgrade_for_existing_episodeFile_for_multi_episodes() { _localEpisode.Episodes = Builder.CreateListOfSize(2) .All() .With(e => e.EpisodeFileId = 1) .With(e => e.EpisodeFile = new LazyLoaded( new EpisodeFile { Quality = new QualityModel(Quality.Bluray720p, false) })) .Build() .ToList(); Subject.IsSatisfiedBy(_localEpisode).Should().BeFalse(); } [Test] public void should_return_false_if_not_an_upgrade_for_one_existing_episodeFile_for_multi_episode() { _localEpisode.Episodes = Builder.CreateListOfSize(2) .TheFirst(1) .With(e => e.EpisodeFileId = 1) .With(e => e.EpisodeFile = new LazyLoaded( new EpisodeFile { Quality = new QualityModel(Quality.SDTV, false) })) .TheNext(1) .With(e => e.EpisodeFileId = 2) .With(e => e.EpisodeFile = new LazyLoaded( new EpisodeFile { Quality = new QualityModel(Quality.Bluray720p, false) })) .Build() .ToList(); Subject.IsSatisfiedBy(_localEpisode).Should().BeFalse(); } } }