mirror of
https://github.com/Govor-team/Govor.git
synced 2026-07-21 11:44:56 +00:00
app.MapHub<FriendsHub>("/api/friends");
This commit is contained in:
@@ -14,52 +14,52 @@ namespace Govor.API.Tests.IntegrationTests.Controllers;
|
||||
[TestFixture]
|
||||
public class FriendsControllerTests
|
||||
{
|
||||
/*
|
||||
private Fixture _fixture;
|
||||
private Mock<ILogger<FriendsController>> _loggerMock;
|
||||
private Mock<IFriendsService> _friendsServiceMock;
|
||||
private Mock<ICurrentUserService> _currentUserServiceMock;
|
||||
private FriendsController _controller;
|
||||
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_fixture = new Fixture();
|
||||
_fixture.Behaviors.OfType<ThrowingRecursionBehavior>().ToList().ForEach(b => _fixture.Behaviors.Remove(b));
|
||||
_fixture.Behaviors.Add(new OmitOnRecursionBehavior());
|
||||
|
||||
|
||||
_loggerMock = new Mock<ILogger<FriendsController>>();
|
||||
_friendsServiceMock = new Mock<IFriendsService>();
|
||||
_currentUserServiceMock = new Mock<ICurrentUserService>();
|
||||
|
||||
|
||||
_controller = new FriendsController(
|
||||
_loggerMock.Object,
|
||||
_friendsServiceMock.Object,
|
||||
_currentUserServiceMock.Object
|
||||
);
|
||||
}
|
||||
|
||||
// Tests for Search action
|
||||
// Tests for Search action
|
||||
[Test]
|
||||
public async Task Search_ValidRequest_ReturnsOkResult()
|
||||
{
|
||||
var users = _fixture.CreateMany<User>().ToList();
|
||||
var userId = _fixture.Create<Guid>();
|
||||
var query = _fixture.Create<string>();
|
||||
|
||||
|
||||
_currentUserServiceMock.Setup(c => c.GetCurrentUserId()).Returns(userId);
|
||||
|
||||
|
||||
_friendsServiceMock.Setup(f => f.SearchUsersAsync(query, userId))
|
||||
.ReturnsAsync(users);
|
||||
|
||||
// Act
|
||||
|
||||
// Act
|
||||
var result = await _controller.Search(query);
|
||||
|
||||
|
||||
var okResult = result as OkObjectResult;
|
||||
dynamic value = okResult.Value;
|
||||
|
||||
|
||||
List<UserDto> userDtos = value as List<UserDto>;
|
||||
|
||||
// Assert
|
||||
|
||||
// Assert
|
||||
Assert.That(value, Is.Not.Null);
|
||||
Assert.That(value.Count, Is.EqualTo(users.Count));
|
||||
Assert.That(userDtos.Select(u => u.Id), Is.EqualTo(users.Select(u => u.Id)));
|
||||
@@ -68,43 +68,43 @@ public class FriendsControllerTests
|
||||
[Test]
|
||||
public async Task Search_InvalidQuery_BadRequest()
|
||||
{
|
||||
// Act
|
||||
// Act
|
||||
var result = await _controller.Search(string.Empty);
|
||||
// Assert
|
||||
Assert.That(result, Is.InstanceOf<BadRequestObjectResult>());
|
||||
var badRequestResult = result as BadRequestObjectResult;
|
||||
Assert.That(badRequestResult.Value, Is.EqualTo("Query cannot be empty"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
[Test]
|
||||
public async Task Search_NotFound_IfThrowsSearchUsersException()
|
||||
{
|
||||
// Arrange
|
||||
// Arrange
|
||||
_friendsServiceMock.Setup(f => f.SearchUsersAsync(It.IsAny<string>(), It.IsAny<Guid>()))
|
||||
.ThrowsAsync(new SearchUsersException(_fixture.Create<string>()));
|
||||
|
||||
// Act
|
||||
|
||||
// Act
|
||||
var result = await _controller.Search(_fixture.Create<string>());
|
||||
// Assert
|
||||
Assert.That(result, Is.InstanceOf<NotFoundObjectResult>());
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public async Task Search_StatusCode500_IfThrowsSomeException()
|
||||
{
|
||||
// Arrange
|
||||
// Arrange
|
||||
_friendsServiceMock.Setup(f => f.SearchUsersAsync(It.IsAny<string>(), It.IsAny<Guid>()))
|
||||
.ThrowsAsync(new Exception(_fixture.Create<string>()));
|
||||
|
||||
// Act
|
||||
|
||||
// Act
|
||||
var result = await _controller.Search(_fixture.Create<string>());
|
||||
// Assert
|
||||
Assert.That(result, Is.InstanceOf<ObjectResult>());
|
||||
var objectResult = result as ObjectResult;
|
||||
Assert.That(objectResult.StatusCode, Is.EqualTo(500));
|
||||
}
|
||||
|
||||
|
||||
// Test for SendRequest action
|
||||
[Test]
|
||||
public async Task SendRequest_ValidRequest_ReturnsOk()
|
||||
@@ -122,66 +122,66 @@ public class FriendsControllerTests
|
||||
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<UnprocessableEntityObjectResult>());
|
||||
}
|
||||
|
||||
|
||||
[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(currentUserId, targetUserId))
|
||||
.ThrowsAsync(new RequestAlreadySentException(currentUserId, targetUserId));
|
||||
|
||||
|
||||
var result = await _controller.SendRequest(targetUserId);
|
||||
|
||||
Assert.That(result, Is.InstanceOf<ConflictObjectResult>());
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public async Task SendRequest_StatusCode500_IfThrowsSomeException()
|
||||
{
|
||||
// Arrange
|
||||
// Arrange
|
||||
_friendsServiceMock.Setup(f => f.SendFriendRequestAsync(It.IsAny<Guid>(), It.IsAny<Guid>()))
|
||||
.ThrowsAsync(new Exception(_fixture.Create<string>()));
|
||||
|
||||
// Act
|
||||
|
||||
// Act
|
||||
var result = await _controller.Search(_fixture.Create<string>());
|
||||
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.InstanceOf<ObjectResult>());
|
||||
var objectResult = result as ObjectResult;
|
||||
Assert.That(objectResult.StatusCode, Is.EqualTo(500));
|
||||
}
|
||||
|
||||
// Tests for GetIncomingRequests action
|
||||
|
||||
// Tests for GetIncomingRequests action
|
||||
[Test]
|
||||
public async Task GetIncomingRequests_ValidRequest_ReturnsOkResult()
|
||||
{
|
||||
// Arrange
|
||||
var currentId = _fixture.Create<Guid>();
|
||||
var friendships = _fixture.CreateMany<Friendship>().ToList();
|
||||
|
||||
|
||||
_currentUserServiceMock.Setup(c => c.GetCurrentUserId())
|
||||
.Returns(currentId);
|
||||
|
||||
|
||||
_friendsServiceMock.Setup(f => f.GetIncomingRequestsAsync(currentId))
|
||||
.ReturnsAsync(friendships);
|
||||
// Act
|
||||
// Act
|
||||
var result = await _controller.GetIncomingRequests();
|
||||
|
||||
// Assert
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.InstanceOf<OkObjectResult>());
|
||||
var okResult = result as OkObjectResult;
|
||||
List<FriendshipDto> value = okResult.Value as List<FriendshipDto>;
|
||||
@@ -194,17 +194,17 @@ public class FriendsControllerTests
|
||||
{
|
||||
// Arrange
|
||||
var currentId = _fixture.Create<Guid>();
|
||||
|
||||
|
||||
_currentUserServiceMock.Setup(c => c.GetCurrentUserId())
|
||||
.Returns(currentId);
|
||||
|
||||
|
||||
_friendsServiceMock.Setup(f => f.GetIncomingRequestsAsync(currentId))
|
||||
.ThrowsAsync(new InvalidOperationException());
|
||||
|
||||
// Act
|
||||
|
||||
// Act
|
||||
var result = await _controller.GetIncomingRequests();
|
||||
|
||||
// Assert
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.InstanceOf<BadRequestObjectResult>());
|
||||
var badRequestResult = result as BadRequestObjectResult;
|
||||
dynamic value = badRequestResult.Value;
|
||||
@@ -216,169 +216,171 @@ public class FriendsControllerTests
|
||||
{
|
||||
// Arrange
|
||||
var currentId = _fixture.Create<Guid>();
|
||||
|
||||
|
||||
_currentUserServiceMock.Setup(c => c.GetCurrentUserId())
|
||||
.Returns(currentId);
|
||||
|
||||
|
||||
_friendsServiceMock.Setup(f => f.GetIncomingRequestsAsync(currentId))
|
||||
.ThrowsAsync(new Exception());
|
||||
|
||||
// Act
|
||||
|
||||
// Act
|
||||
var result = await _controller.GetIncomingRequests();
|
||||
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.InstanceOf<ObjectResult>());
|
||||
var objectResult = result as ObjectResult;
|
||||
Assert.That(objectResult.StatusCode, Is.EqualTo(500));
|
||||
}
|
||||
|
||||
// Tests for AcceptFriend action
|
||||
|
||||
// Tests for AcceptFriend action
|
||||
[Test]
|
||||
public async Task AcceptFriend_ValidRequest_ReturnsOkResult()
|
||||
{
|
||||
// Arrange
|
||||
// Arrange
|
||||
var currentId = Guid.NewGuid();
|
||||
var targetUserId = Guid.NewGuid();
|
||||
|
||||
|
||||
_currentUserServiceMock.Setup(c => c.GetCurrentUserId())
|
||||
.Returns(currentId);
|
||||
// Act
|
||||
// Act
|
||||
var result = await _controller.AcceptFriend(targetUserId);
|
||||
|
||||
// Assert
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.InstanceOf<OkObjectResult>());
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public async Task AcceptFriend_InvalidOperationException_ReturnsNotFound()
|
||||
{
|
||||
// Arrange
|
||||
// Arrange
|
||||
var currentId = Guid.NewGuid();
|
||||
var targetUserId = Guid.NewGuid();
|
||||
|
||||
|
||||
_currentUserServiceMock.Setup(c => c.GetCurrentUserId())
|
||||
.Returns(currentId);
|
||||
|
||||
|
||||
_friendsServiceMock.Setup(f => f.AcceptFriendRequestAsync(targetUserId, currentId))
|
||||
.ThrowsAsync(new InvalidOperationException());
|
||||
|
||||
// Act
|
||||
|
||||
// Act
|
||||
var result = await _controller.AcceptFriend(targetUserId);
|
||||
|
||||
// Assert
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.InstanceOf<NotFoundObjectResult>());
|
||||
}
|
||||
[Test]
|
||||
public async Task AcceptFriend_UnauthorizedAccessException_ReturnsForbid()
|
||||
{
|
||||
// Arrange
|
||||
// Arrange
|
||||
var currentId = Guid.NewGuid();
|
||||
var targetUserId = Guid.NewGuid();
|
||||
|
||||
|
||||
_currentUserServiceMock.Setup(c => c.GetCurrentUserId())
|
||||
.Returns(currentId);
|
||||
|
||||
|
||||
_friendsServiceMock.Setup(f => f.AcceptFriendRequestAsync(targetUserId, currentId))
|
||||
.ThrowsAsync(new UnauthorizedAccessException());
|
||||
|
||||
// Act
|
||||
|
||||
// Act
|
||||
var result = await _controller.AcceptFriend(targetUserId);
|
||||
|
||||
// Assert
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.InstanceOf<ForbidResult>());
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public async Task AcceptFriend_Exception_ReturnsStatusCode500()
|
||||
{
|
||||
// Arrange
|
||||
// Arrange
|
||||
var currentId = Guid.NewGuid();
|
||||
var targetUserId = Guid.NewGuid();
|
||||
|
||||
|
||||
_currentUserServiceMock.Setup(c => c.GetCurrentUserId())
|
||||
.Returns(currentId);
|
||||
|
||||
|
||||
_friendsServiceMock.Setup(f => f.AcceptFriendRequestAsync(targetUserId, currentId))
|
||||
.ThrowsAsync(new Exception());
|
||||
|
||||
// Act
|
||||
|
||||
// Act
|
||||
var result = await _controller.AcceptFriend(targetUserId);
|
||||
|
||||
// Assert
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.InstanceOf<ObjectResult>());
|
||||
var objectResult = result as ObjectResult;
|
||||
Assert.That(objectResult.StatusCode, Is.EqualTo(500));
|
||||
}
|
||||
|
||||
// Tests for GetFriends action
|
||||
|
||||
// Tests for GetFriends action
|
||||
[Test]
|
||||
public async Task GetFriends_ValidRequest_ReturnsOkResult()
|
||||
{
|
||||
// Arrange
|
||||
// Arrange
|
||||
var currentId = _fixture.Create<Guid>();
|
||||
var users = _fixture.CreateMany<User>().ToList();
|
||||
|
||||
|
||||
_currentUserServiceMock.Setup(c => c.GetCurrentUserId())
|
||||
.Returns(currentId);
|
||||
|
||||
_friendsServiceMock.Setup(f => f.GetFriendsAsync(currentId))
|
||||
.ReturnsAsync(users);
|
||||
// Act
|
||||
// Act
|
||||
var result = await _controller.GetFriends();
|
||||
|
||||
// Assert
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.InstanceOf<OkObjectResult>());
|
||||
var okResult = result as OkObjectResult;
|
||||
List<UserDto> value = okResult.Value as List<UserDto>;
|
||||
Assert.That(value, Is.Not.Null);
|
||||
Assert.That(value.Count, Is.EqualTo(users.Count));
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public async Task GetFriends_InvalidOperationException_ReturnsBadRequest()
|
||||
{
|
||||
// Arrange
|
||||
// Arrange
|
||||
var currentId = _fixture.Create<Guid>();
|
||||
var users = _fixture.CreateMany<User>().ToList();
|
||||
|
||||
|
||||
_currentUserServiceMock.Setup(c => c.GetCurrentUserId())
|
||||
.Returns(currentId);
|
||||
|
||||
_friendsServiceMock.Setup(f => f.GetFriendsAsync(currentId))
|
||||
.ThrowsAsync(new InvalidOperationException());
|
||||
|
||||
// Act
|
||||
|
||||
// Act
|
||||
var result = await _controller.GetFriends();
|
||||
|
||||
// Assert
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.InstanceOf<OkObjectResult>());
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public async Task GetFriends_Exception_ReturnsStatusCode500()
|
||||
{
|
||||
// Arrange
|
||||
// Arrange
|
||||
var currentId = _fixture.Create<Guid>();
|
||||
var users = _fixture.CreateMany<User>().ToList();
|
||||
|
||||
|
||||
_currentUserServiceMock.Setup(c => c.GetCurrentUserId())
|
||||
.Returns(currentId);
|
||||
|
||||
_friendsServiceMock.Setup(f => f.GetFriendsAsync(currentId))
|
||||
.ThrowsAsync(new Exception());
|
||||
|
||||
// Act
|
||||
|
||||
// Act
|
||||
var result = await _controller.GetFriends();
|
||||
|
||||
// Assert
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.InstanceOf<ObjectResult>());
|
||||
var objectResult = result as ObjectResult;
|
||||
Assert.That(objectResult.StatusCode, Is.EqualTo(500));
|
||||
}
|
||||
|
||||
|
||||
[TearDown]
|
||||
public void TearDown()
|
||||
{
|
||||
_controller.Dispose();
|
||||
}
|
||||
*/
|
||||
}
|
||||
Reference in New Issue
Block a user