Adding
This commit is contained in:
+25
@@ -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());
|
||||
}
|
||||
}
|
||||
+131
@@ -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();
|
||||
}
|
||||
Reference in New Issue
Block a user