// ReSharper disable RedundantUsingDirective using System; using System.Collections.Generic; using AutoMoq; using FizzWare.NBuilder; using FluentAssertions; using NUnit.Framework; using NzbDrone.Core.Providers; using NzbDrone.Core.Repository; using NzbDrone.Core.Repository.Quality; using NzbDrone.Core.Test.Framework; namespace NzbDrone.Core.Test { [TestFixture] // ReSharper disable InconsistentNaming public class QualityProfileTest : TestBase { /// /// Test_s the storage. /// [Test] public void Test_Storage() { //Arrange var database = MockLib.GetEmptyDatabase(); var testProfile = new QualityProfile { Name = Guid.NewGuid().ToString(), Cutoff = QualityTypes.SDTV, Allowed = new List { QualityTypes.HDTV, QualityTypes.DVD }, }; //Act var id = Convert.ToInt32(database.Insert(testProfile)); var fetch = database.SingleOrDefault(id); //Assert Assert.AreEqual(id, fetch.QualityProfileId); Assert.AreEqual(testProfile.Name, fetch.Name); Assert.AreEqual(testProfile.Cutoff, fetch.Cutoff); Assert.AreEqual(testProfile.Allowed, fetch.Allowed); } [Test] public void Test_Storage_no_allowed() { //Arrange var database = MockLib.GetEmptyDatabase(); var testProfile = new QualityProfile { Name = Guid.NewGuid().ToString(), Cutoff = QualityTypes.SDTV }; //Act var id = Convert.ToInt32(database.Insert(testProfile)); var fetch = database.SingleOrDefault(id); //Assert Assert.AreEqual(id, fetch.QualityProfileId); Assert.AreEqual(testProfile.Name, fetch.Name); Assert.AreEqual(testProfile.Cutoff, fetch.Cutoff); fetch.Allowed.Should().HaveCount(0); } [Test] public void Update_Success() { //Arrange var mocker = new AutoMoqer(); var db = MockLib.GetEmptyDatabase(); mocker.SetConstant(db); var testProfile = new QualityProfile { Name = Guid.NewGuid().ToString(), Cutoff = QualityTypes.SDTV }; //Act var id = Convert.ToInt32(db.Insert(testProfile)); var currentProfile = db.SingleOrDefault(id); //Update currentProfile.Cutoff = QualityTypes.Bluray720p; mocker.Resolve().Update(currentProfile); var updated = mocker.Resolve().Get(currentProfile.QualityProfileId); //Assert updated.Name.Should().Be(currentProfile.Name); updated.Cutoff.Should().Be(QualityTypes.Bluray720p); updated.AllowedString.Should().Be(currentProfile.AllowedString); } [Test] public void Test_Series_Quality() { //Arrange var database = MockLib.GetEmptyDatabase(); var testProfile = new QualityProfile { Name = Guid.NewGuid().ToString(), Cutoff = QualityTypes.SDTV, Allowed = new List { QualityTypes.HDTV, QualityTypes.DVD }, }; var profileId = Convert.ToInt32(database.Insert(testProfile)); var series = Builder.CreateNew().Build(); series.QualityProfileId = profileId; database.Insert(testProfile); database.Insert(series); var result = database.Fetch(); result.Should().HaveCount(1); var profile = database.SingleOrDefault(result[0].QualityProfileId); Assert.AreEqual(profileId, result[0].QualityProfileId); Assert.AreEqual(testProfile.Name, profile.Name); } } }