From a6193c3c94e82ba4b2e0894ddf3910739a04aafc Mon Sep 17 00:00:00 2001 From: csimonapastore Date: Fri, 20 Jun 2025 20:37:40 +0200 Subject: [PATCH] Adding tests for CRUD operations on users --- .../Controllers/RoleController_Tests.cs | 5 +- .../Controllers/UserController_Tests.cs | 235 +++++++++++++++++- 2 files changed, 236 insertions(+), 4 deletions(-) diff --git a/MainProject.Tests/Controllers/RoleController_Tests.cs b/MainProject.Tests/Controllers/RoleController_Tests.cs index 2e7e9c6..417d7ac 100644 --- a/MainProject.Tests/Controllers/RoleController_Tests.cs +++ b/MainProject.Tests/Controllers/RoleController_Tests.cs @@ -435,8 +435,6 @@ public class RoleController_Tests #endregion - - #region "UPDATE" [TestMethod] @@ -643,7 +641,7 @@ public class RoleController_Tests It.IsAny(), It.IsAny() )).ThrowsAsync(new Exception("Unexpected error")); - ObjectResult response = (ObjectResult)(await _roleController.UpdateRoleAsync(request, role.Guid)); + ObjectResult response = (ObjectResult)await _roleController.UpdateRoleAsync(request, role.Guid); Assert.IsInstanceOfType(response, typeof(ObjectResult)); if (response != null && response.Value != null) @@ -668,4 +666,5 @@ public class RoleController_Tests } #endregion + } diff --git a/MainProject.Tests/Controllers/UserController_Tests.cs b/MainProject.Tests/Controllers/UserController_Tests.cs index 4a2540f..1cf72ef 100644 --- a/MainProject.Tests/Controllers/UserController_Tests.cs +++ b/MainProject.Tests/Controllers/UserController_Tests.cs @@ -66,6 +66,7 @@ public class UserController_Tests } +#region "GET" [TestMethod] public async Task GetUserByGuidAsync_Should_Return_200_When_Successful() { @@ -159,6 +160,10 @@ public class UserController_Tests } } +#endregion + + +#region "CREATE" [TestMethod] public async Task CreateUserAsync_Success() { @@ -364,7 +369,6 @@ public class UserController_Tests } } - [TestMethod] public async Task CreateUserAsync_Exception() { @@ -425,4 +429,233 @@ public class UserController_Tests Assert.Fail($"Response is null"); } } + +#endregion + +#region "DELETE" + + [TestMethod] + public async Task DeleteRoleByGuidAsync_Success() + { + if (_userController == null) + { + Assert.Fail($"_userController is null"); + } + var guid = Guid.NewGuid().ToString(); + DatabaseSqlServer.User user = ModelsInit.CreateUser(); + + _userServiceMock?.Setup(s => s.GetUserByGuidAsync(It.IsAny())).ReturnsAsync(user); + ObjectResult response = (ObjectResult)await _userController.DeleteUserByGuidAsync(guid); + if (response != null && response.Value != null) + { + Assert.AreEqual(StatusCodes.Status200OK, response.StatusCode); + } + else + { + Assert.Fail($"Response value is null"); + } + } + + [TestMethod] + public async Task DeleteRoleByGuidAsync_NotFound() + { + if (_userController == null) + { + Assert.Fail($"_userController is null"); + } + + var guid = Guid.NewGuid().ToString(); + DatabaseSqlServer.User? user = null; + _userServiceMock?.Setup(s => s.GetUserByGuidAsync(It.IsAny())).ReturnsAsync(user); + NotFoundResult response = (NotFoundResult)await _userController.DeleteUserByGuidAsync(guid); + + Assert.IsInstanceOfType(response, typeof(NotFoundResult)); + + if (response != null) + { + Assert.AreEqual(StatusCodes.Status404NotFound, response.StatusCode); + } + else + { + Assert.Fail($"Response is null"); + } + } + + [TestMethod] + public async Task DeleteRoleByGuidAsync_Exception() + { + if (_userController == null) + { + Assert.Fail($"_userController is null"); + } + + var guid = Guid.NewGuid().ToString(); + _userServiceMock?.Setup(s => s.GetUserByGuidAsync(It.IsAny())).ThrowsAsync(new Exception("Unexpected error")); + ObjectResult response = (ObjectResult)await _userController.DeleteUserByGuidAsync(guid); + + Assert.IsInstanceOfType(response, typeof(ObjectResult)); + + if (response != null && response.Value != null) + { + Assert.AreEqual(StatusCodes.Status500InternalServerError, response.StatusCode); + + var result = (BaseResponse)response.Value; + if (result != null) + { + Assert.AreEqual(StatusCodes.Status500InternalServerError, result.Status); + Assert.AreEqual("Something went wrong. Unexpected error", result.Message); + } + else + { + Assert.Fail($"Result value is null"); + } + } + else + { + Assert.Fail($"Response is null"); + } + } + + #endregion + + #region "UPDATE" + + [TestMethod] + public async Task UpdateUserAsync_Should_Return_200_When_Successful() + { + if (_userController == null) + { + Assert.Fail($"_userController is null"); + } + + DatabaseSqlServer.User user = ModelsInit.CreateUser(); + + UpdateUserRequest request = new UpdateUserRequest() + { + Data = new UpdateUserRequestData() + { + FirstName = "NewFirstName", + LastName = "NewLastName" + } + }; + + _userServiceMock?.Setup(s => s.GetUserByGuidAsync(It.IsAny())).ReturnsAsync(user); + _userServiceMock?.Setup(s => s.UpdateUserAsync(It.IsAny(), It.IsAny())).ReturnsAsync(user); + + ObjectResult response = (ObjectResult)await _userController.UpdateUserAsync(request, user.Guid); + if (response != null && response.Value != null) + { + Assert.AreEqual(StatusCodes.Status200OK, response.StatusCode); + + var result = (BaseResponse)response.Value; + if (result != null) + { + Assert.AreEqual(StatusCodes.Status200OK, result.Status); + Assert.IsInstanceOfType(result.Data, typeof(UserDto)); + } + else + { + Assert.Fail($"Result value is null"); + } + } + else + { + Assert.Fail($"Response value is null"); + } + } + + [TestMethod] + public async Task UpdateUserAsync_UserNotFound() + { + if (_userController == null) + { + Assert.Fail($"_userController is null"); + } + + DatabaseSqlServer.User user = null; + + UpdateUserRequest request = new UpdateUserRequest() + { + Data = new UpdateUserRequestData() + { + FirstName = "NewFirstName", + LastName = "NewLastName" + } + }; + + _userServiceMock?.Setup(s => s.GetUserByGuidAsync(It.IsAny())).ReturnsAsync(user); + + NotFoundResult response = (NotFoundResult)await _userController.UpdateUserAsync(request, Guid.NewGuid().ToString()); + + if (response != null) + { + Assert.AreEqual(StatusCodes.Status404NotFound, response.StatusCode); + } + else + { + Assert.Fail($"Response is null"); + } + } + + [TestMethod] + public async Task UpdateUserAsync_Exception() + { + if (_userController == null) + { + Assert.Fail($"_userController is null"); + } + + DatabaseSqlServer.User user = ModelsInit.CreateUser(); + + UpdateUserRequest request = new UpdateUserRequest() + { + Data = new UpdateUserRequestData() + { + FirstName = "NewFirstName", + LastName = "NewLastName" + } + }; + + _userServiceMock?.Setup(s => s.GetUserByGuidAsync(It.IsAny())).ReturnsAsync(user); + _userServiceMock?.Setup(s => s.UpdateUserAsync( + It.IsAny(), It.IsAny() + )).ThrowsAsync(new Exception("Unexpected error")); + + ObjectResult response = (ObjectResult)await _userController.UpdateUserAsync(request, user.Guid); + Assert.IsInstanceOfType(response, typeof(ObjectResult)); + + if (response != null && response.Value != null) + { + Assert.AreEqual(StatusCodes.Status500InternalServerError, response.StatusCode); + + var result = (BaseResponse)response.Value; + if (result != null) + { + Assert.AreEqual(StatusCodes.Status500InternalServerError, result.Status); + Assert.AreEqual("Something went wrong. Unexpected error", result.Message); + } + else + { + Assert.Fail($"Result value is null"); + } + } + else + { + Assert.Fail($"Response is null"); + } + } + + + + + + + + + + + + #endregion + + }