Fixed up a broken unit test. For People restriction, IncludeUnknowns doesn't really do much.

This commit is contained in:
Joseph Milazzo 2024-12-08 15:28:57 -06:00
parent e41eddb7a7
commit 3b5189c83f
2 changed files with 8 additions and 7 deletions

View file

@ -123,14 +123,14 @@ public class QueryableExtensionsTests
[Theory] [Theory]
[InlineData(true, 2)] [InlineData(true, 2)]
[InlineData(false, 1)] [InlineData(false, 2)]
public void RestrictAgainstAgeRestriction_Person_ShouldRestrictEverythingAboveTeen(bool includeUnknowns, int expectedCount) public void RestrictAgainstAgeRestriction_Person_ShouldRestrictEverythingAboveTeen(bool includeUnknowns, int expectedPeopleCount)
{ {
// Arrange // Arrange
var items = new List<Person> var items = new List<Person>
{ {
CreatePersonWithSeriesMetadata("Test1", AgeRating.Teen), CreatePersonWithSeriesMetadata("Test1", AgeRating.Teen),
CreatePersonWithSeriesMetadata("Test2", AgeRating.Unknown, AgeRating.Teen), CreatePersonWithSeriesMetadata("Test2", AgeRating.Unknown, AgeRating.Teen), // 2 series on this person, restrict will still allow access
CreatePersonWithSeriesMetadata("Test3", AgeRating.X18Plus) CreatePersonWithSeriesMetadata("Test3", AgeRating.X18Plus)
}; };
@ -144,7 +144,7 @@ public class QueryableExtensionsTests
var filtered = items.AsQueryable().RestrictAgainstAgeRestriction(ageRestriction); var filtered = items.AsQueryable().RestrictAgainstAgeRestriction(ageRestriction);
// Assert // Assert
Assert.Equal(expectedCount, filtered.Count()); Assert.Equal(expectedPeopleCount, filtered.Count());
} }
private static Person CreatePersonWithSeriesMetadata(string name, params AgeRating[] ageRatings) private static Person CreatePersonWithSeriesMetadata(string name, params AgeRating[] ageRatings)

View file

@ -101,12 +101,13 @@ public static class RestrictByAgeExtensions
if (restriction.IncludeUnknowns) if (restriction.IncludeUnknowns)
{ {
return queryable.Where(c => c.SeriesMetadataPeople.All(sm => return queryable.Where(c =>
sm.SeriesMetadata.AgeRating <= restriction.AgeRating)); c.SeriesMetadataPeople.Any(sm => sm.SeriesMetadata.AgeRating <= restriction.AgeRating) ||
c.ChapterPeople.Any(cp => cp.Chapter.AgeRating <= restriction.AgeRating));
} }
return queryable.Where(c => return queryable.Where(c =>
c.SeriesMetadataPeople.Any(sm => sm.SeriesMetadata.AgeRating <= restriction.AgeRating && sm.SeriesMetadata.AgeRating != AgeRating.Unknown) && c.SeriesMetadataPeople.Any(sm => sm.SeriesMetadata.AgeRating <= restriction.AgeRating && sm.SeriesMetadata.AgeRating != AgeRating.Unknown) ||
c.ChapterPeople.Any(cp => cp.Chapter.AgeRating <= restriction.AgeRating && cp.Chapter.AgeRating != AgeRating.Unknown) c.ChapterPeople.Any(cp => cp.Chapter.AgeRating <= restriction.AgeRating && cp.Chapter.AgeRating != AgeRating.Unknown)
); );
} }