diff --git a/Govor.API/Hubs/FriendsHub.cs b/Govor.API/Hubs/FriendsHub.cs index 7aa9564..50b8e2a 100644 --- a/Govor.API/Hubs/FriendsHub.cs +++ b/Govor.API/Hubs/FriendsHub.cs @@ -1,9 +1,7 @@ -using System.ComponentModel.DataAnnotations; using AutoMapper; using Govor.API.Common.SignalR.Helpers; using Govor.Application.Exceptions.FriendsService; using Govor.Application.Interfaces.Friends; -using Govor.Application.Interfaces.Infrastructure.Extensions; using Govor.Contracts.DTOs; using Govor.Contracts.Responses.SignalR; using Microsoft.AspNetCore.SignalR; diff --git a/Govor.Application.Tests/Services/UserOnlineStatus/UserNotificationScopeServiceTests.cs b/Govor.Application.Tests/Services/UserOnlineStatus/UserNotificationScopeServiceTests.cs index b4cf4ef..1eb0eb7 100644 --- a/Govor.Application.Tests/Services/UserOnlineStatus/UserNotificationScopeServiceTests.cs +++ b/Govor.Application.Tests/Services/UserOnlineStatus/UserNotificationScopeServiceTests.cs @@ -1,4 +1,12 @@ +using AutoFixture; +using Govor.Application.Interfaces.Friends; +using Govor.Application.Interfaces.UserOnlineStatus; using Govor.Application.Services.UserOnlineStatus; +using Govor.Core.Models; +using Govor.Core.Models.Users; +using Govor.Data.Repositories.Exceptions; +using Microsoft.Extensions.Logging; +using Moq; namespace Govor.Application.Tests.Services.UserOnlineStatus; @@ -6,10 +14,55 @@ namespace Govor.Application.Tests.Services.UserOnlineStatus; [TestOf(typeof(UserNotificationScopeService))] public class UserNotificationScopeServiceTests { + private Mock> _mockLogger; + private Mock _mockFriendshipService; + private IUserNotificationScopeService _service; + private Fixture _fixture; + private Guid _userId; + + + [SetUp] + public void SetUp() + { + _fixture = new Fixture(); + _fixture.Behaviors.OfType().ToList().ForEach(b => _fixture.Behaviors.Remove(b)); + _fixture.Behaviors.Add(new OmitOnRecursionBehavior()); + + _userId = Guid.NewGuid(); + + _mockLogger = new Mock>(); + _mockFriendshipService = new Mock(); + + _service = new UserNotificationScopeService(_mockLogger.Object, _mockFriendshipService.Object); + } + + [Test] + public async Task GetNotifiedUsers_ReturnsNotifiedUsers() + { + // Arrange + var random = new Random(); + var users = _fixture.CreateMany(random.Next(3, 10)).ToList(); + + _mockFriendshipService.Setup(f => f.GetFriendsAsync(_userId)) + .ReturnsAsync(users); + + // Act + var result = await _service.GetNotifiedUsers(_userId); + // Assert + Assert.That(result, Is.Not.Null); + Assert.That(result.Count, Is.EqualTo(users.Count)); + Assert.That(result, Is.EquivalentTo(users.Select(u => u.Id))); + } [Test] - public void METHOD() + public async Task GetNotifiedUsers_ThrowsInvalidOperationException_WhenUserDoesNotExist() { - + // Arrange + _mockFriendshipService.Setup(f => f.GetFriendsAsync(_userId)) + .ThrowsAsync(new NotFoundByKeyException(_userId, "Database is empty.")); + + // Act & Assert + var ex = Assert.ThrowsAsync(async () => await _service.GetNotifiedUsers(_userId)); + Assert.That(ex.Message, Is.EqualTo("User not found")); } -} \ No newline at end of file +}