using FizzWare.NBuilder; using FluentAssertions; using Marr.Data; using NUnit.Framework; using NzbDrone.Core.DecisionEngine.Specifications; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Profiles.Qualities; using NzbDrone.Core.Qualities; using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Tv; namespace NzbDrone.Core.Test.DecisionEngineTests { [TestFixture] public class QualityAllowedByProfileSpecificationFixture : CoreTest { private RemoteEpisode _remoteEpisode; public static object[] AllowedTestCases = { new object[] { Quality.DVD }, new object[] { Quality.HDTV720p }, new object[] { Quality.Bluray1080p } }; public static object[] DeniedTestCases = { new object[] { Quality.SDTV }, new object[] { Quality.WEBDL720p }, new object[] { Quality.Bluray720p } }; [SetUp] public void Setup() { var fakeSeries = Builder.CreateNew() .With(c => c.QualityProfile = (LazyLoaded)new QualityProfile { Cutoff = Quality.Bluray1080p.Id }) .Build(); _remoteEpisode = new RemoteEpisode { Series = fakeSeries, ParsedEpisodeInfo = new ParsedEpisodeInfo { Quality = new QualityModel(Quality.DVD, new Revision(version: 2)) }, }; } [Test] [TestCaseSource(nameof(AllowedTestCases))] public void should_allow_if_quality_is_defined_in_profile(Quality qualityType) { _remoteEpisode.ParsedEpisodeInfo.Quality.Quality = qualityType; _remoteEpisode.Series.QualityProfile.Value.Items = Qualities.QualityFixture.GetDefaultQualities(Quality.DVD, Quality.HDTV720p, Quality.Bluray1080p); Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeTrue(); } [Test] [TestCaseSource(nameof(DeniedTestCases))] public void should_not_allow_if_quality_is_not_defined_in_profile(Quality qualityType) { _remoteEpisode.ParsedEpisodeInfo.Quality.Quality = qualityType; _remoteEpisode.Series.QualityProfile.Value.Items = Qualities.QualityFixture.GetDefaultQualities(Quality.DVD, Quality.HDTV720p, Quality.Bluray1080p); Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeFalse(); } } }