You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
3.0 KiB
68 lines
3.0 KiB
#nullable enable |
|
using Bit.Core.Context; |
|
using Bit.Core.Enums; |
|
using Bit.Core.Exceptions; |
|
using Bit.Core.Models.Data; |
|
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, |
|
List<NotificationStatusDetails> notificationsStatusDetails, NotificationStatusFilter statusFilter, Guid? userId, |
|
PageOptions pageOptions, string? continuationToken) |
|
{ |
|
sutProvider.GetDependency<ICurrentContext>().UserId.Returns(userId); |
|
sutProvider.GetDependency<INotificationRepository>() |
|
.GetByUserIdAndStatusAsync(userId.GetValueOrDefault(Guid.NewGuid()), Arg.Any<ClientType>(), statusFilter, |
|
pageOptions) |
|
.Returns(new PagedResult<NotificationStatusDetails> |
|
{ |
|
Data = notificationsStatusDetails, |
|
ContinuationToken = continuationToken |
|
}); |
|
} |
|
|
|
[Theory] |
|
[BitAutoData] |
|
public async Task GetByUserIdStatusFilterAsync_NotLoggedIn_NotFoundException( |
|
SutProvider<GetNotificationStatusDetailsForUserQuery> sutProvider, |
|
List<NotificationStatusDetails> notificationsStatusDetails, NotificationStatusFilter notificationStatusFilter, |
|
PageOptions pageOptions, string? continuationToken) |
|
{ |
|
Setup(sutProvider, notificationsStatusDetails, notificationStatusFilter, userId: null, pageOptions, |
|
continuationToken); |
|
|
|
await Assert.ThrowsAsync<NotFoundException>(() => |
|
sutProvider.Sut.GetByUserIdStatusFilterAsync(notificationStatusFilter, pageOptions)); |
|
} |
|
|
|
[Theory] |
|
[BitAutoData] |
|
public async Task GetByUserIdStatusFilterAsync_NotificationsFound_Returned( |
|
SutProvider<GetNotificationStatusDetailsForUserQuery> sutProvider, |
|
List<NotificationStatusDetails> notificationsStatusDetails, NotificationStatusFilter notificationStatusFilter, |
|
PageOptions pageOptions, string? continuationToken) |
|
{ |
|
Setup(sutProvider, notificationsStatusDetails, notificationStatusFilter, Guid.NewGuid(), pageOptions, |
|
continuationToken); |
|
|
|
var actualNotificationsStatusDetailsPagedResult = |
|
await sutProvider.Sut.GetByUserIdStatusFilterAsync(notificationStatusFilter, pageOptions); |
|
|
|
Assert.NotNull(actualNotificationsStatusDetailsPagedResult); |
|
Assert.Equal(notificationsStatusDetails, actualNotificationsStatusDetailsPagedResult.Data); |
|
Assert.Equal(continuationToken, actualNotificationsStatusDetailsPagedResult.ContinuationToken); |
|
} |
|
}
|
|
|