#nullable enable using Bit.Core.Context; using Bit.Core.Enums; using Bit.Core.Exceptions; 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 sutProvider, List notificationsStatusDetails, NotificationStatusFilter statusFilter, Guid? userId) { sutProvider.GetDependency().UserId.Returns(userId); sutProvider.GetDependency().GetByUserIdAndStatusAsync( userId.GetValueOrDefault(Guid.NewGuid()), Arg.Any(), statusFilter) .Returns(notificationsStatusDetails); } [Theory] [BitAutoData] public async Task GetByUserIdStatusFilterAsync_NotLoggedIn_NotFoundException( SutProvider sutProvider, List notificationsStatusDetails, NotificationStatusFilter notificationStatusFilter) { Setup(sutProvider, notificationsStatusDetails, notificationStatusFilter, userId: null); await Assert.ThrowsAsync(() => sutProvider.Sut.GetByUserIdStatusFilterAsync(notificationStatusFilter)); } [Theory] [BitAutoData] public async Task GetByUserIdStatusFilterAsync_NotificationsFound_Returned( SutProvider sutProvider, List notificationsStatusDetails, NotificationStatusFilter notificationStatusFilter) { Setup(sutProvider, notificationsStatusDetails, notificationStatusFilter, Guid.NewGuid()); var actualNotificationsStatusDetails = await sutProvider.Sut.GetByUserIdStatusFilterAsync(notificationStatusFilter); Assert.Equal(notificationsStatusDetails, actualNotificationsStatusDetails); } }