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(), 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(); } }