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.
recyclarr/src/Recyclarr.TrashLib.Tests/Sonarr/ReleaseProfile/Filters/ReleaseProfileDataValidatio...

80 lines
2.6 KiB

using FluentAssertions;
using NUnit.Framework;
using Recyclarr.TestLibrary.AutoFixture;
using Recyclarr.TrashLib.Services.ReleaseProfile;
using Recyclarr.TrashLib.Services.ReleaseProfile.Filters;
namespace Recyclarr.TrashLib.Tests.Sonarr.ReleaseProfile.Filters;
[TestFixture]
[Parallelizable(ParallelScope.All)]
public class ReleaseProfileDataValidationFiltererTest
{
[Test, AutoMockData]
public void Valid_data_is_not_filtered_out(ReleaseProfileDataValidationFilterer sut)
{
var data = new[]
{
new ReleaseProfileData
{
TrashId = "trash_id",
Name = "name",
Required = new[] {new TermData {Term = "term1"}},
Ignored = new[] {new TermData {Term = "term2"}},
Preferred = new[] {new PreferredTermData {Terms = new[] {new TermData {Term = "term3"}}}}
}
};
var result = sut.FilterProfiles(data);
result.Should().BeEquivalentTo(data);
}
[Test, AutoMockData]
public void Invalid_terms_are_filtered_out(ReleaseProfileDataValidationFilterer sut)
{
var data = new[]
{
new ReleaseProfileData
{
TrashId = "trash_id",
Name = "name",
Required = new[] {new TermData {Term = ""}},
Ignored = new[] {new TermData {Term = "term2"}},
Preferred = new[] {new PreferredTermData {Terms = new[] {new TermData {Term = "term3"}}}}
}
};
var result = sut.FilterProfiles(data);
result.Should().ContainSingle().Which.Should().BeEquivalentTo(new ReleaseProfileData
{
TrashId = "trash_id",
Name = "name",
Required = Array.Empty<TermData>(),
Ignored = new[] {new TermData {Term = "term2"}},
Preferred = new[] {new PreferredTermData {Terms = new[] {new TermData {Term = "term3"}}}}
});
}
[Test, AutoMockData]
public void Whole_release_profile_filtered_out_if_all_terms_invalid(ReleaseProfileDataValidationFilterer sut)
{
var data = new[]
{
new ReleaseProfileData
{
TrashId = "trash_id",
Name = "name",
Required = new[] {new TermData {Term = ""}},
Ignored = new[] {new TermData {Term = ""}},
Preferred = new[] {new PreferredTermData {Terms = new[] {new TermData {Term = ""}}}}
}
};
var result = sut.FilterProfiles(data);
result.Should().BeEmpty();
}
}