2024-10-03 22:13:43 +02:00
|
|
|
|
#nullable enable
|
|
|
|
|
|
using Bit.Core.Context;
|
|
|
|
|
|
using Bit.Core.Enums;
|
|
|
|
|
|
using Bit.Core.Exceptions;
|
2024-12-18 15:59:50 +01:00
|
|
|
|
using Bit.Core.Models.Data;
|
2024-10-03 22:13:43 +02:00
|
|
|
|
using Bit.Core.NotificationCenter.Models.Data;
|
|
|
|
|
|
using Bit.Core.NotificationCenter.Models.Filter;
|
|
|
|
|
|
using Bit.Core.NotificationCenter.Queries;
|
|
|
|
|
|
using Bit.Core.NotificationCenter.Repositories;
|
|
|
|
|
|
using Bit.Core.Test.NotificationCenter.AutoFixture;
|
|
|
|
|
|
using Bit.Test.Common.AutoFixture;
|
|
|
|
|
|
using Bit.Test.Common.AutoFixture.Attributes;
|
|
|
|
|
|
using NSubstitute;
|
|
|
|
|
|
using Xunit;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Bit.Core.Test.NotificationCenter.Queries;
|
|
|
|
|
|
|
|
|
|
|
|
[SutProviderCustomize]
|
|
|
|
|
|
[NotificationStatusDetailsCustomize]
|
|
|
|
|
|
public class GetNotificationStatusDetailsForUserQueryTest
|
|
|
|
|
|
{
|
|
|
|
|
|
private static void Setup(SutProvider<GetNotificationStatusDetailsForUserQuery> sutProvider,
|
2024-12-18 15:59:50 +01:00
|
|
|
|
List<NotificationStatusDetails> notificationsStatusDetails, NotificationStatusFilter statusFilter, Guid? userId,
|
|
|
|
|
|
PageOptions pageOptions, string? continuationToken)
|
2024-10-03 22:13:43 +02:00
|
|
|
|
{
|
|
|
|
|
|
sutProvider.GetDependency<ICurrentContext>().UserId.Returns(userId);
|
2024-12-18 15:59:50 +01:00
|
|
|
|
sutProvider.GetDependency<INotificationRepository>()
|
|
|
|
|
|
.GetByUserIdAndStatusAsync(userId.GetValueOrDefault(Guid.NewGuid()), Arg.Any<ClientType>(), statusFilter,
|
|
|
|
|
|
pageOptions)
|
|
|
|
|
|
.Returns(new PagedResult<NotificationStatusDetails>
|
|
|
|
|
|
{
|
|
|
|
|
|
Data = notificationsStatusDetails,
|
|
|
|
|
|
ContinuationToken = continuationToken
|
|
|
|
|
|
});
|
2024-10-03 22:13:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Theory]
|
|
|
|
|
|
[BitAutoData]
|
|
|
|
|
|
public async Task GetByUserIdStatusFilterAsync_NotLoggedIn_NotFoundException(
|
|
|
|
|
|
SutProvider<GetNotificationStatusDetailsForUserQuery> sutProvider,
|
2024-12-18 15:59:50 +01:00
|
|
|
|
List<NotificationStatusDetails> notificationsStatusDetails, NotificationStatusFilter notificationStatusFilter,
|
|
|
|
|
|
PageOptions pageOptions, string? continuationToken)
|
2024-10-03 22:13:43 +02:00
|
|
|
|
{
|
2024-12-18 15:59:50 +01:00
|
|
|
|
Setup(sutProvider, notificationsStatusDetails, notificationStatusFilter, userId: null, pageOptions,
|
|
|
|
|
|
continuationToken);
|
2024-10-03 22:13:43 +02:00
|
|
|
|
|
|
|
|
|
|
await Assert.ThrowsAsync<NotFoundException>(() =>
|
2024-12-18 15:59:50 +01:00
|
|
|
|
sutProvider.Sut.GetByUserIdStatusFilterAsync(notificationStatusFilter, pageOptions));
|
2024-10-03 22:13:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Theory]
|
|
|
|
|
|
[BitAutoData]
|
|
|
|
|
|
public async Task GetByUserIdStatusFilterAsync_NotificationsFound_Returned(
|
|
|
|
|
|
SutProvider<GetNotificationStatusDetailsForUserQuery> sutProvider,
|
2024-12-18 15:59:50 +01:00
|
|
|
|
List<NotificationStatusDetails> notificationsStatusDetails, NotificationStatusFilter notificationStatusFilter,
|
|
|
|
|
|
PageOptions pageOptions, string? continuationToken)
|
2024-10-03 22:13:43 +02:00
|
|
|
|
{
|
2024-12-18 15:59:50 +01:00
|
|
|
|
Setup(sutProvider, notificationsStatusDetails, notificationStatusFilter, Guid.NewGuid(), pageOptions,
|
|
|
|
|
|
continuationToken);
|
2024-10-03 22:13:43 +02:00
|
|
|
|
|
2024-12-18 15:59:50 +01:00
|
|
|
|
var actualNotificationsStatusDetailsPagedResult =
|
|
|
|
|
|
await sutProvider.Sut.GetByUserIdStatusFilterAsync(notificationStatusFilter, pageOptions);
|
2024-10-03 22:13:43 +02:00
|
|
|
|
|
2024-12-18 15:59:50 +01:00
|
|
|
|
Assert.NotNull(actualNotificationsStatusDetailsPagedResult);
|
|
|
|
|
|
Assert.Equal(notificationsStatusDetails, actualNotificationsStatusDetailsPagedResult.Data);
|
|
|
|
|
|
Assert.Equal(continuationToken, actualNotificationsStatusDetailsPagedResult.ContinuationToken);
|
2024-10-03 22:13:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|