using System; using System.Collections.Generic; using FizzWare.NBuilder; using FluentAssertions; using NUnit.Framework; using NzbDrone.Core.DecisionEngine.Specifications; using NzbDrone.Core.MediaFiles; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Profiles; using NzbDrone.Core.Qualities; using NzbDrone.Core.Movies; using NzbDrone.Core.DecisionEngine; using NzbDrone.Core.Test.Framework; namespace NzbDrone.Core.Test.DecisionEngineTests { [TestFixture] public class UpgradeDiskSpecificationFixture : CoreTest { private UpgradeDiskSpecification _upgradeDisk; private RemoteMovie _parseResultSingle; private MovieFile _firstFile; [SetUp] public void Setup() { Mocker.Resolve(); _upgradeDisk = Mocker.Resolve(); _firstFile = new MovieFile { Quality = new QualityModel(Quality.Bluray1080p, new Revision(version: 2)), DateAdded = DateTime.Now }; var fakeSeries = Builder.CreateNew() .With(c => c.Profile = new Profile { Cutoff = Quality.Bluray1080p, Items = Qualities.QualityFixture.GetDefaultQualities() }) .With(e => e.MovieFile = _firstFile) .Build(); _parseResultSingle = new RemoteMovie { Movie = fakeSeries, ParsedMovieInfo = new ParsedMovieInfo() { Quality = new QualityModel(Quality.DVD, new Revision(version: 2)) }, }; } private void WithFirstFileUpgradable() { _firstFile.Quality = new QualityModel(Quality.SDTV); } [Test] public void should_return_true_if_episode_has_no_existing_file() { _parseResultSingle.Movie.MovieFile = null; _upgradeDisk.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue(); } [Test] public void should_be_upgradable_if_only_episode_is_upgradable() { WithFirstFileUpgradable(); _upgradeDisk.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue(); } [Test] public void should_not_be_upgradable_if_qualities_are_the_same() { _firstFile.Quality = new QualityModel(Quality.WEBDL1080p); _parseResultSingle.ParsedMovieInfo.Quality = new QualityModel(Quality.WEBDL1080p); _upgradeDisk.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse(); } } }