From 64ca52667b72cc102ef87f623d5a7797cfb5e3eb Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Fri, 17 Feb 2012 01:52:29 -0800 Subject: [PATCH] Added unit tests. --- NzbDrone.Core.Test/NzbDrone.Core.Test.csproj | 1 + .../AllowedDownloadSpecificationFixture.cs | 19 ++++ .../RetentionSpecificationFixture.cs | 93 +++++++++++++++++++ 3 files changed, 113 insertions(+) create mode 100644 NzbDrone.Core.Test/ProviderTests/DecisionEngineTests/RetentionSpecificationFixture.cs diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index acf30b189..2126da70d 100644 --- a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -115,6 +115,7 @@ + diff --git a/NzbDrone.Core.Test/ProviderTests/DecisionEngineTests/AllowedDownloadSpecificationFixture.cs b/NzbDrone.Core.Test/ProviderTests/DecisionEngineTests/AllowedDownloadSpecificationFixture.cs index 4b95725d9..c33f6c89c 100644 --- a/NzbDrone.Core.Test/ProviderTests/DecisionEngineTests/AllowedDownloadSpecificationFixture.cs +++ b/NzbDrone.Core.Test/ProviderTests/DecisionEngineTests/AllowedDownloadSpecificationFixture.cs @@ -44,6 +44,10 @@ namespace NzbDrone.Core.Test.ProviderTests.DecisionEngineTests Mocker.GetMock() .Setup(c => c.IsSatisfiedBy(It.IsAny())) .Returns(false); + + Mocker.GetMock() + .Setup(c => c.IsSatisfiedBy(It.IsAny())) + .Returns(true); } private void WithProfileNotAllowed() @@ -74,6 +78,13 @@ namespace NzbDrone.Core.Test.ProviderTests.DecisionEngineTests .Returns(true); } + private void WithOverRetention() + { + Mocker.GetMock() + .Setup(c => c.IsSatisfiedBy(It.IsAny())) + .Returns(false); + } + [Test] public void should_be_allowed_if_all_conditions_are_met() { @@ -108,12 +119,20 @@ namespace NzbDrone.Core.Test.ProviderTests.DecisionEngineTests spec.IsSatisfiedBy(parseResult).Should().BeFalse(); } + [Test] + public void should_not_be_allowed_if_report_is_over_retention() + { + WithOverRetention(); + spec.IsSatisfiedBy(parseResult).Should().BeFalse(); + } + [Test] public void should_not_be_allowed_if_none_of_conditions_are_met() { WithNoDiskUpgrade(); WithNotAcceptableSize(); WithProfileNotAllowed(); + WithOverRetention(); spec.IsSatisfiedBy(parseResult).Should().BeFalse(); } diff --git a/NzbDrone.Core.Test/ProviderTests/DecisionEngineTests/RetentionSpecificationFixture.cs b/NzbDrone.Core.Test/ProviderTests/DecisionEngineTests/RetentionSpecificationFixture.cs new file mode 100644 index 000000000..520f5a084 --- /dev/null +++ b/NzbDrone.Core.Test/ProviderTests/DecisionEngineTests/RetentionSpecificationFixture.cs @@ -0,0 +1,93 @@ +// ReSharper disable RedundantUsingDirective + +using System.Linq; +using System; +using System.Collections.Generic; +using FizzWare.NBuilder; +using FluentAssertions; +using Moq; +using NUnit.Framework; +using NzbDrone.Core.Model; +using NzbDrone.Core.Providers; +using NzbDrone.Core.Providers.Core; +using NzbDrone.Core.Providers.DecisionEngine; +using NzbDrone.Core.Repository; +using NzbDrone.Core.Test.Framework; + +namespace NzbDrone.Core.Test.ProviderTests.DecisionEngineTests +{ + [TestFixture] + // ReSharper disable InconsistentNaming + public class RetentionSpecificationFixture : CoreTest + { + private RetentionSpecification retentionSpecification; + + private EpisodeParseResult parseResult; + + [SetUp] + public void Setup() + { + retentionSpecification = Mocker.Resolve(); + + parseResult = new EpisodeParseResult + { + Age = 100 + }; + } + + private void WithUnlimitedRetention() + { + Mocker.GetMock().SetupGet(c => c.Retention).Returns(0); + } + + private void WithLongRetention() + { + Mocker.GetMock().SetupGet(c => c.Retention).Returns(1000); + } + + private void WithShortRetention() + { + Mocker.GetMock().SetupGet(c => c.Retention).Returns(10); + } + + private void WithEqualRetention() + { + Mocker.GetMock().SetupGet(c => c.Retention).Returns(100); + } + + [Test] + public void unlimited_retention_should_return_true() + { + WithUnlimitedRetention(); + retentionSpecification.IsSatisfiedBy(parseResult).Should().BeTrue(); + } + + [Test] + public void longer_retention_should_return_true() + { + WithLongRetention(); + retentionSpecification.IsSatisfiedBy(parseResult).Should().BeTrue(); + } + + [Test] + public void equal_retention_should_return_true() + { + WithEqualRetention(); + retentionSpecification.IsSatisfiedBy(parseResult).Should().BeTrue(); + } + + [Test] + public void shorter_retention_should_return_false() + { + WithShortRetention(); + retentionSpecification.IsSatisfiedBy(parseResult).Should().BeFalse(); + } + + [Test] + public void zeroDay_report_should_return_true() + { + WithUnlimitedRetention(); + retentionSpecification.IsSatisfiedBy(parseResult).Should().BeTrue(); + } + } +} \ No newline at end of file