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,25 @@
using LCU.API.Internal.DocumentIngestorLib.Extensions;
namespace LCU.API.Internal.DocumentIngestorLibTests.Extensions;
public class FilterNullsAndZerosOrDefaultTest
{
[Test]
public void FilterNullsAndZerosOrDefault()
{
var notNullList = new[] { "123", "345" };
var partialList = new[] { string.Empty, "123" };
var emptyList = Array.Empty<string>();
var listEmptyStrings = new[] { string.Empty, string.Empty };
var listZero = new[] { string.Empty, "0" };
List<string>? nullValue = null;
Assert.That(new[] { "123", "345" }, Is.EqualTo(notNullList.FilterNullsAndZerosOrDefault()));
Assert.That(new[] { "123" }, Is.EqualTo(partialList.FilterNullsAndZerosOrDefault()));
Assert.IsNull(emptyList.FilterNullsAndZerosOrDefault());
Assert.IsNull(listEmptyStrings.FilterNullsAndZerosOrDefault());
Assert.IsNull(nullValue.FilterNullsAndZerosOrDefault());
Assert.IsNull(listZero.FilterNullsAndZerosOrDefault());
}
}
@@ -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();
}