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/tests/Recyclarr.Tests/TrashGuide/ReleaseProfile/ReleaseProfileDataValidatio...

75 lines
2.4 KiB

using Recyclarr.TrashGuide.ReleaseProfile;
namespace Recyclarr.Tests.TrashGuide.ReleaseProfile;
[TestFixture]
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();
}
}