diff --git a/Govor.API.Tests/IntegrationTests/Controllers/FriendsControllerTests.cs b/Govor.API.Tests/IntegrationTests/Controllers/FriendsControllerTests.cs index 97ecc7b..a940339 100644 --- a/Govor.API.Tests/IntegrationTests/Controllers/FriendsControllerTests.cs +++ b/Govor.API.Tests/IntegrationTests/Controllers/FriendsControllerTests.cs @@ -105,6 +105,70 @@ public class FriendsControllerTests Assert.That(objectResult.StatusCode, Is.EqualTo(500)); } + // Test for SendRequest action + [Test] + public async Task SendRequest_ValidRequest_ReturnsOk() + { + var targetUserId = Guid.NewGuid(); + + var result = await _controller.SendRequest(targetUserId); + + Assert.That(result, Is.InstanceOf()); + var okResult = result as OkObjectResult; + Assert.That(okResult?.Value.ToString(), Does.Contain("Friend request sent")); + } + + [Test] + public async Task SendRequest_Throws_InvalidOperationException_ReturnsUnprocessableEntity() + { + var targetUserId = Guid.NewGuid(); + + _currentUserServiceMock.Setup(c => c.GetCurrentUserId()).Returns(targetUserId); + + _friendsServiceMock.Setup(f => f.SendFriendRequestAsync(targetUserId, targetUserId)) + .ThrowsAsync(new InvalidOperationException()); + + var result = await _controller.SendRequest(targetUserId); + + Assert.That(result, Is.InstanceOf()); + } + + [Test] + public async Task SendRequest_Throws_RequestAlreadySentException_ReturnsConflict() + { + var targetUserId = Guid.NewGuid(); + var currentUserId = Guid.NewGuid(); + + _currentUserServiceMock.Setup(c => c.GetCurrentUserId()).Returns(currentUserId); + + _friendsServiceMock.Setup(f => f.SendFriendRequestAsync(targetUserId, currentUserId)) + .ThrowsAsync(new RequestAlreadySentException(currentUserId, targetUserId)); + + var result = await _controller.SendRequest(targetUserId); + + Assert.That(result, Is.InstanceOf()); + } + + [Test] + public async Task SendRequest_StatusCode500_IfThrowsSomeException() + { + // Arrange + _friendsServiceMock.Setup(f => f.SendFriendRequestAsync(It.IsAny(), It.IsAny())) + .ThrowsAsync(new Exception(_fixture.Create())); + + // Act + var result = await _controller.Search(_fixture.Create()); + + // Assert + Assert.That(result, Is.InstanceOf()); + var objectResult = result as ObjectResult; + Assert.That(objectResult.StatusCode, Is.EqualTo(500)); + } + + // Tests for GetIncomingRequests action + + + [TearDown] public void TearDown() {