This commit is contained in:
Zeeshaun
2026-03-25 14:50:13 -05:00
parent 883009770f
commit b690921fd7
592 changed files with 46618 additions and 0 deletions
@@ -0,0 +1,131 @@
using FluentAssertions;
using LCU.Api.Internal.DocumentIngestorLib.Extensions.Queryables;
using LCU.Library.Internal.DocumentIngestorModels.Entities;
using LCU.Library.Internal.DocumentIngestorModels.Enums;
using LCU.Library.Internal.DocumentIngestorModels.Models.Pagination;
namespace LCU.API.Internal.DocumentIngestorLibTests.Extensions.Queryables;
public class DocumentProcessingInfoNotificationStatusQueryableTest
{
[Test]
public void FilterByNotificationStatusType_NotificationStatusFiltersIsNull_ReturnsUnmodifiedQueryable()
{
var processingInfo = InfoFactory();
var filter = new Filter
{
NotificationStatusFilters = null
};
var originalProcessingInfo = processingInfo.ToArray();
var filtered = processingInfo.FilterByNotificationStatusType(filter);
filtered.Should().BeEquivalentTo(originalProcessingInfo);
}
[Test]
public void FilterByNotificationStatusType_NotificationStatusFiltersIsEmpty_ReturnsUnmodifiedQueryable()
{
var processingInfo = InfoFactory();
var filter = new Filter
{
NotificationStatusFilters = new List<NotificationStatusTypes>()
};
var originalProcessingInfo = processingInfo.ToArray();
var filtered = processingInfo.FilterByNotificationStatusType(filter);
filtered.Should().BeEquivalentTo(originalProcessingInfo);
}
[Test]
public void FilterByNotificationStatusType_ProcessingInfoMemberNotificationInfoIsNull_IsFilteredOut()
{
var processingInfo = InfoFactory();
var filter = new Filter
{
NotificationStatusFilters = processingInfo
.Where(i => i.MemberNotificationInfos != null)
.SelectMany(i => i.MemberNotificationInfos.ToList())
.Select(i => i.NotificationStatusType)
.Distinct()
.ToList()
};
var filtered = processingInfo.FilterByNotificationStatusType(filter);
filtered.Should().NotContain(i => i.MemberNotificationInfos == null);
}
[Test]
public void FilterByNotificationStatusType_ProcessingInfoMemberNotificationInfoStatusNotInFilter_IsFilteredOut()
{
var processingInfo = InfoFactory();
var notIncludedStatuses = Enum.GetValues<NotificationStatusTypes>()[..(Enum.GetValues<NotificationStatusTypes>().Length / 2)];
var filter = new Filter
{
NotificationStatusFilters = processingInfo
.Where(i => i.MemberNotificationInfos != null)
.SelectMany(i => i.MemberNotificationInfos.ToList())
.Select(i => i.NotificationStatusType)
.Distinct()
.Except(notIncludedStatuses)
.ToList()
};
var filtered = processingInfo.FilterByNotificationStatusType(filter);
filtered.Should().NotContain(i => notIncludedStatuses.Contains(i.MemberNotificationInfos.FirstOrDefault().NotificationStatusType));
}
[Test]
public void FilterByNotificationStatusType_ProcessingInfoMemberNotificationInfoStatusInFilter_IsRetained()
{
var processingInfo = InfoFactory();
var includedStatuses = Enum.GetValues<NotificationStatusTypes>()[..(Enum.GetValues<NotificationStatusTypes>().Length / 2)];
var filter = new Filter
{
NotificationStatusFilters = includedStatuses.Distinct().ToList()
};
var filtered = processingInfo.FilterByNotificationStatusType(filter);
filtered.Should().OnlyContain(i => includedStatuses.Contains(i.MemberNotificationInfos.FirstOrDefault().NotificationStatusType));
}
private static IQueryable<DocumentProcessingInfo> InfoFactory()
=> Enum.GetValues<NotificationStatusTypes>()
.Distinct()
.SelectMany(status => new[]
{
new DocumentProcessingInfo
{
MemberNotificationInfos = new List<MemberNotificationInfo>
{
new()
{
NotificationStatusType = status
}
}
},
new DocumentProcessingInfo//double each status
{
MemberNotificationInfos = new List<MemberNotificationInfo>
{
new()
{
NotificationStatusType = status
}
}
}
})
.Concat(new[]
{
new DocumentProcessingInfo
{
MemberNotificationInfos = null
}
})
.AsQueryable();
}