You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Radarr/src/NzbDrone.Core.Test/DecisionEngineTests/ReleaseRestrictionsSpecific...

115 lines
3.7 KiB

using System;
using System.Collections.Generic;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Restrictions;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Core.Tv;
namespace NzbDrone.Core.Test.DecisionEngineTests
{
[TestFixture]
public class ReleaseRestrictionsSpecificationFixture : CoreTest<ReleaseRestrictionsSpecification>
{
private RemoteEpisode _parseResult;
[SetUp]
public void Setup()
{
_parseResult = new RemoteEpisode
{
Series = new Series
{
Tags = new HashSet<Int32>()
},
Release = new ReleaseInfo
{
Title = "Dexter.S08E01.EDITED.WEBRip.x264-KYR"
}
};
}
private void GivenRestictions(String required, String ignored)
{
Mocker.GetMock<IRestrictionService>()
.Setup(s => s.AllForTags(It.IsAny<HashSet<Int32>>()))
.Returns(new List<Restriction>
{
new Restriction
{
Required = required,
Ignored = ignored
}
});
}
[Test]
public void should_be_true_when_restrictions_are_empty()
{
Mocker.GetMock<IRestrictionService>()
.Setup(s => s.AllForTags(It.IsAny<HashSet<Int32>>()))
.Returns(new List<Restriction>());
Subject.IsSatisfiedBy(_parseResult, null).Accepted.Should().BeTrue();
}
[Test]
public void should_be_true_when_title_contains_one_required_term()
{
GivenRestictions("WEBRip", null);
Subject.IsSatisfiedBy(_parseResult, null).Accepted.Should().BeTrue();
}
[Test]
public void should_be_false_when_title_does_not_contain_any_required_terms()
{
GivenRestictions("doesnt,exist", null);
Subject.IsSatisfiedBy(_parseResult, null).Accepted.Should().BeFalse();
}
[Test]
public void should_be_true_when_title_does_not_contain_any_ignored_terms()
{
GivenRestictions(null, "ignored");
Subject.IsSatisfiedBy(_parseResult, null).Accepted.Should().BeTrue();
}
[Test]
public void should_be_false_when_title_contains_one_anded_ignored_terms()
{
GivenRestictions(null, "edited");
Subject.IsSatisfiedBy(_parseResult, null).Accepted.Should().BeFalse();
}
[TestCase("EdiTED")]
[TestCase("webrip")]
[TestCase("X264")]
[TestCase("X264,NOTTHERE")]
public void should_ignore_case_when_matching_required(String required)
{
GivenRestictions(required, null);
Subject.IsSatisfiedBy(_parseResult, null).Accepted.Should().BeTrue();
}
[TestCase("EdiTED")]
[TestCase("webrip")]
[TestCase("X264")]
[TestCase("X264,NOTTHERE")]
public void should_ignore_case_when_matching_ignored(String ignored)
{
GivenRestictions(null, ignored);
Subject.IsSatisfiedBy(_parseResult, null).Accepted.Should().BeFalse();
}
}
}