From bc1b0c2ed88f0fbd149a2c3e9c0edf3c56c76f83 Mon Sep 17 00:00:00 2001 From: kTrzcinskii Date: Sun, 4 May 2025 22:13:26 +0200 Subject: [PATCH 1/3] Create `ToObjectResult` for `Result` and `Result` --- .../Common/Results/Generic/ResultTests.cs | 87 ++++++++++++++++++- .../Common/Results/ResultTests.cs | 63 +++++++++++++- .../TickAPI/Common/Results/Generic/Result.cs | 20 ++++- TickAPI/TickAPI/Common/Results/Result.cs | 19 +++- 4 files changed, 185 insertions(+), 4 deletions(-) diff --git a/TickAPI/TickAPI.Tests/Common/Results/Generic/ResultTests.cs b/TickAPI/TickAPI.Tests/Common/Results/Generic/ResultTests.cs index ffb1390..e343a6a 100644 --- a/TickAPI/TickAPI.Tests/Common/Results/Generic/ResultTests.cs +++ b/TickAPI/TickAPI.Tests/Common/Results/Generic/ResultTests.cs @@ -1,4 +1,6 @@ -using TickAPI.Common.Results; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using TickAPI.Common.Results; using TickAPI.Common.Results.Generic; namespace TickAPI.Tests.Common.Results.Generic; @@ -8,10 +10,13 @@ public class ResultTests [Fact] public void Success_ShouldReturnResultWithValue() { + // Arrange const int value = 123; + // Act var result = Result.Success(value); + // Assert Assert.Equal(value, result.Value); Assert.True(result.IsSuccess); Assert.False(result.IsError); @@ -22,11 +27,14 @@ public void Success_ShouldReturnResultWithValue() [Fact] public void Failure_ShouldReturnResultWithError() { + // Arrange const int statusCode = 500; const string errorMsg = "example error msg"; + // Act var result = Result.Failure(500, errorMsg); + // Assert Assert.True(result.IsError); Assert.False(result.IsSuccess); Assert.Equal(errorMsg, result.ErrorMsg); @@ -36,12 +44,15 @@ public void Failure_ShouldReturnResultWithError() [Fact] public void PropagateError_WhenResultWithErrorPassed_ShouldReturnResultWithError() { + // Arrange const int statusCode = 500; const string errorMsg = "error message"; var resultWithError = Result.Failure(statusCode, errorMsg); + // Act var result = Result.PropagateError(resultWithError); + // Assert Assert.True(result.IsError); Assert.False(result.IsSuccess); Assert.Equal(errorMsg, result.ErrorMsg); @@ -51,12 +62,15 @@ public void PropagateError_WhenResultWithErrorPassed_ShouldReturnResultWithError [Fact] public void PropagateError_WhenNonGenericResultWithErrorPassed_ShouldReturnResultWithError() { + // Arrange const int statusCode = 500; const string errorMsg = "error message"; var resultWithError = Result.Failure(statusCode, errorMsg); + // Act var result = Result.PropagateError(resultWithError); + // Assert Assert.True(result.IsError); Assert.False(result.IsSuccess); Assert.Equal(errorMsg, result.ErrorMsg); @@ -66,20 +80,91 @@ public void PropagateError_WhenNonGenericResultWithErrorPassed_ShouldReturnResul [Fact] public void PropagateError_WhenResultWithSuccessPassed_ShouldThrowArgumentException() { + // Arrange var resultWithSuccess = Result.Success("abc"); + // Act var act = () => Result.PropagateError(resultWithSuccess); + // Assert Assert.Throws(act); } [Fact] public void PropagateError_WhenNonGenericResultWithSuccessPassed_ShouldThrowArgumentException() { + // Arrange var resultWithSuccess = Result.Success(); + // Act var act = () => Result.PropagateError(resultWithSuccess); + // Assert Assert.Throws(act); } + + [Fact] + public void ToObjectResult_WhenGenericResultIsError_ShouldReturnObjectResultWithErrorDetails() + { + // Arrange + const int statusCode = 404; + const string errorMsg = "Not found"; + var result = Result.Failure(statusCode, errorMsg); + + // Act + var objectResult = result.ToObjectResult(); + + // Assert + Assert.IsType(objectResult); + Assert.Equal(statusCode, objectResult.StatusCode); + Assert.Equal(errorMsg, objectResult.Value); + } + + [Fact] + public void ToObjectResult_WhenGenericResultIsSuccess_ShouldReturnObjectResultWithDefaultSuccessCode() + { + // Arrange + const int value = 42; + var result = Result.Success(value); + + // Act + var objectResult = result.ToObjectResult(); + + // Assert + Assert.IsType(objectResult); + Assert.Equal(StatusCodes.Status200OK, objectResult.StatusCode); + Assert.Equal(value, objectResult.Value); + } + + [Fact] + public void ToObjectResult_WhenGenericResultIsSuccessWithCustomStatusCode_ShouldReturnObjectResultWithSpecifiedCode() + { + // Arrange + const string value = "Success data"; + var result = Result.Success(value); + const int customSuccessCode = StatusCodes.Status201Created; + + // Act + var objectResult = result.ToObjectResult(customSuccessCode); + + // Assert + Assert.IsType(objectResult); + Assert.Equal(customSuccessCode, objectResult.StatusCode); + Assert.Equal(value, objectResult.Value); + } + + [Fact] + public void ToObjectResult_WhenGenericResultWithNullValueIsSuccess_ShouldReturnObjectResultWithNullValue() + { + // Arrange + var result = Result.Success(null); + + // Act + var objectResult = result.ToObjectResult(); + + // Assert + Assert.IsType(objectResult); + Assert.Equal(StatusCodes.Status200OK, objectResult.StatusCode); + Assert.Null(objectResult.Value); + } } \ No newline at end of file diff --git a/TickAPI/TickAPI.Tests/Common/Results/ResultTests.cs b/TickAPI/TickAPI.Tests/Common/Results/ResultTests.cs index f09668d..36799c1 100644 --- a/TickAPI/TickAPI.Tests/Common/Results/ResultTests.cs +++ b/TickAPI/TickAPI.Tests/Common/Results/ResultTests.cs @@ -1,4 +1,6 @@ -using TickAPI.Common.Results; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using TickAPI.Common.Results; using TickAPI.Common.Results.Generic; namespace TickAPI.Tests.Common.Results; @@ -8,8 +10,10 @@ public class ResultTests [Fact] public void Success_ShouldReturnResultWithSuccess() { + // Act var result = Result.Success(); + // Assert Assert.True(result.IsSuccess); Assert.False(result.IsError); Assert.Equal("", result.ErrorMsg); @@ -19,11 +23,14 @@ public void Success_ShouldReturnResultWithSuccess() [Fact] public void Failure_ShouldReturnResultWithError() { + // Arrange const int statusCode = 500; const string errorMsg = "example error msg"; + // Act var result = Result.Failure(500, errorMsg); + // Assert Assert.True(result.IsError); Assert.False(result.IsSuccess); Assert.Equal(errorMsg, result.ErrorMsg); @@ -33,12 +40,15 @@ public void Failure_ShouldReturnResultWithError() [Fact] public void PropagateError_WhenGenericResultWithErrorPassed_ShouldReturnResultWithError() { + // Arrange const int statusCode = 500; const string errorMsg = "error message"; var resultWithError = Result.Failure(statusCode, errorMsg); + // Act var result = Result.PropagateError(resultWithError); + // Assert Assert.True(result.IsError); Assert.False(result.IsSuccess); Assert.Equal(errorMsg, result.ErrorMsg); @@ -48,10 +58,61 @@ public void PropagateError_WhenGenericResultWithErrorPassed_ShouldReturnResultWi [Fact] public void PropagateError_WhenGenericResultWithSuccessPassed_ShouldThrowArgumentException() { + // Arrange var resultWithSuccess = Result.Success(123); + // Act var act = () => Result.PropagateError(resultWithSuccess); + // Assert Assert.Throws(act); } + + [Fact] + public void ToObjectResult_WhenResultIsError_ShouldReturnObjectResultWithErrorDetails() + { + // Arrange + const int statusCode = 400; + const string errorMsg = "Bad request"; + var result = Result.Failure(statusCode, errorMsg); + + // Act + var objectResult = result.ToObjectResult(); + + // Assert + Assert.IsType(objectResult); + Assert.Equal(statusCode, objectResult.StatusCode); + Assert.Equal(errorMsg, objectResult.Value); + } + + [Fact] + public void ToObjectResult_WhenResultIsSuccess_ShouldReturnObjectResultWithDefaultSuccessCode() + { + // Arrange + var result = Result.Success(); + + // Act + var objectResult = result.ToObjectResult(); + + // Assert + Assert.IsType(objectResult); + Assert.Equal(StatusCodes.Status200OK, objectResult.StatusCode); + Assert.Null(objectResult.Value); + } + + [Fact] + public void ToObjectResult_WhenResultIsSuccessWithCustomStatusCode_ShouldReturnObjectResultWithSpecifiedCode() + { + // Arrange + var result = Result.Success(); + const int customSuccessCode = StatusCodes.Status201Created; + + // Act + var objectResult = result.ToObjectResult(customSuccessCode); + + // Assert + Assert.IsType(objectResult); + Assert.Equal(customSuccessCode, objectResult.StatusCode); + Assert.Null(objectResult.Value); + } } \ No newline at end of file diff --git a/TickAPI/TickAPI/Common/Results/Generic/Result.cs b/TickAPI/TickAPI/Common/Results/Generic/Result.cs index 10ccf62..b7e419e 100644 --- a/TickAPI/TickAPI/Common/Results/Generic/Result.cs +++ b/TickAPI/TickAPI/Common/Results/Generic/Result.cs @@ -1,4 +1,6 @@ -namespace TickAPI.Common.Results.Generic; +using Microsoft.AspNetCore.Mvc; + +namespace TickAPI.Common.Results.Generic; public record Result { @@ -45,4 +47,20 @@ public static Result PropagateError(Result other) return Failure(other.StatusCode, other.ErrorMsg); } + + public ObjectResult ToObjectResult(int successCode = StatusCodes.Status200OK) + { + if (IsError) + { + return new ObjectResult(ErrorMsg) + { + StatusCode = StatusCode + }; + } + + return new ObjectResult(Value) + { + StatusCode = successCode + }; + } } \ No newline at end of file diff --git a/TickAPI/TickAPI/Common/Results/Result.cs b/TickAPI/TickAPI/Common/Results/Result.cs index d339858..08bc55e 100644 --- a/TickAPI/TickAPI/Common/Results/Result.cs +++ b/TickAPI/TickAPI/Common/Results/Result.cs @@ -1,4 +1,5 @@ -using TickAPI.Common.Results.Generic; +using Microsoft.AspNetCore.Mvc; +using TickAPI.Common.Results.Generic; namespace TickAPI.Common.Results; @@ -35,4 +36,20 @@ public static Result PropagateError(Result other) return Failure(other.StatusCode, other.ErrorMsg); } + + public ObjectResult ToObjectResult(int successCode = StatusCodes.Status200OK) + { + if (IsError) + { + return new ObjectResult(ErrorMsg) + { + StatusCode = StatusCode + }; + } + + return new ObjectResult(null) + { + StatusCode = successCode + }; + } } \ No newline at end of file From c0acb7d0880161acc45901be0a817583f4fa0532 Mon Sep 17 00:00:00 2001 From: kTrzcinskii Date: Sun, 4 May 2025 22:29:06 +0200 Subject: [PATCH 2/3] Simplify code using `ToObjectResult` --- .../Admins/Controllers/AdminsController.cs | 13 +++--- .../Controllers/CategoriesController.cs | 10 ++-- .../Controllers/CustomersController.cs | 10 ++-- .../Events/Controllers/EventsController.cs | 46 +++++-------------- .../Controllers/OrganizersController.cs | 34 ++++++-------- .../Tickets/Controllers/TicketsController.cs | 22 ++------- 6 files changed, 46 insertions(+), 89 deletions(-) diff --git a/TickAPI/TickAPI/Admins/Controllers/AdminsController.cs b/TickAPI/TickAPI/Admins/Controllers/AdminsController.cs index e6d70c2..803991e 100644 --- a/TickAPI/TickAPI/Admins/Controllers/AdminsController.cs +++ b/TickAPI/TickAPI/Admins/Controllers/AdminsController.cs @@ -31,20 +31,20 @@ public AdminsController(IGoogleAuthService googleAuthService, IJwtService jwtSer public async Task> GoogleLogin([FromBody] GoogleAdminLoginDto request) { var userDataResult = await _googleAuthService.GetUserDataFromAccessToken(request.AccessToken); - if(userDataResult.IsError) - return StatusCode(userDataResult.StatusCode, userDataResult.ErrorMsg); + if (userDataResult.IsError) + return userDataResult.ToObjectResult(); var userData = userDataResult.Value!; var adminResult = await _adminService.GetAdminByEmailAsync(userData.Email); if (adminResult.IsError) { - return StatusCode(adminResult.StatusCode, adminResult.ErrorMsg); + return adminResult.ToObjectResult(); } var jwtTokenResult = _jwtService.GenerateJwtToken(userData.Email, UserRole.Admin); if (jwtTokenResult.IsError) - return StatusCode(jwtTokenResult.StatusCode, jwtTokenResult.ErrorMsg); + return jwtTokenResult.ToObjectResult(); return new ActionResult(new GoogleAdminLoginResponseDto(jwtTokenResult.Value!)); } @@ -56,7 +56,7 @@ public async Task> AboutMe() var emailResult = _claimsService.GetEmailFromClaims(User.Claims); if (emailResult.IsError) { - return StatusCode(emailResult.StatusCode, emailResult.ErrorMsg); + return emailResult.ToObjectResult(); } var email = emailResult.Value!; @@ -66,8 +66,7 @@ public async Task> AboutMe() "cannot find user with admin privilages in database for authorized admin request"); var admin = adminResult.Value!; - var aboutMeResponse = - new AboutMeAdminResponseDto(admin.Email, admin.Login); + var aboutMeResponse = new AboutMeAdminResponseDto(admin.Email, admin.Login); return new ActionResult(aboutMeResponse); } } diff --git a/TickAPI/TickAPI/Categories/Controllers/CategoriesController.cs b/TickAPI/TickAPI/Categories/Controllers/CategoriesController.cs index 8ac66a2..22ad3a4 100644 --- a/TickAPI/TickAPI/Categories/Controllers/CategoriesController.cs +++ b/TickAPI/TickAPI/Categories/Controllers/CategoriesController.cs @@ -24,11 +24,7 @@ public CategoriesController(ICategoryService categoryService) public async Task>> GetCategories([FromQuery] int pageSize, [FromQuery] int page) { var res = await _categoryService.GetCategoriesResponsesAsync(pageSize, page); - if (res.IsError) - { - return StatusCode(StatusCodes.Status500InternalServerError, res.ErrorMsg); - } - return Ok(res.Value); + return res.ToObjectResult(); } [AuthorizeWithPolicy(AuthPolicies.AdminPolicy)] @@ -37,8 +33,8 @@ public async Task CreateCategory([FromBody] CreateCategoryDto requ { var newCategoryResult = await _categoryService.CreateNewCategoryAsync(request.Name); - if(newCategoryResult.IsError) - return StatusCode(newCategoryResult.StatusCode, newCategoryResult.ErrorMsg); + if (newCategoryResult.IsError) + return newCategoryResult.ToObjectResult(); return Ok("category created successfully"); } diff --git a/TickAPI/TickAPI/Customers/Controllers/CustomersController.cs b/TickAPI/TickAPI/Customers/Controllers/CustomersController.cs index 4ec0730..0a77fea 100644 --- a/TickAPI/TickAPI/Customers/Controllers/CustomersController.cs +++ b/TickAPI/TickAPI/Customers/Controllers/CustomersController.cs @@ -30,8 +30,8 @@ public CustomersController(IGoogleAuthService googleAuthService, IJwtService jwt public async Task> GoogleLogin([FromBody] GoogleCustomerLoginDto request) { var userDataResult = await _googleAuthService.GetUserDataFromAccessToken(request.AccessToken); - if(userDataResult.IsError) - return StatusCode(userDataResult.StatusCode, userDataResult.ErrorMsg); + if (userDataResult.IsError) + return userDataResult.ToObjectResult(); var userData = userDataResult.Value!; @@ -40,12 +40,12 @@ public async Task> GoogleLogin([Fro { var newCustomerResult = await _customerService.CreateNewCustomerAsync(userData.Email, userData.GivenName, userData.FamilyName); if (newCustomerResult.IsError) - return StatusCode(newCustomerResult.StatusCode, newCustomerResult.ErrorMsg); + return newCustomerResult.ToObjectResult(); } var jwtTokenResult = _jwtService.GenerateJwtToken(userData.Email, UserRole.Customer); if (jwtTokenResult.IsError) - return StatusCode(jwtTokenResult.StatusCode, jwtTokenResult.ErrorMsg); + return jwtTokenResult.ToObjectResult(); return new ActionResult(new GoogleCustomerLoginResponseDto(jwtTokenResult.Value!)); } @@ -57,7 +57,7 @@ public async Task> AboutMe() var emailResult = _claimsService.GetEmailFromClaims(User.Claims); if (emailResult.IsError) { - return StatusCode(emailResult.StatusCode, emailResult.ErrorMsg); + return emailResult.ToObjectResult(); } var email = emailResult.Value!; diff --git a/TickAPI/TickAPI/Events/Controllers/EventsController.cs b/TickAPI/TickAPI/Events/Controllers/EventsController.cs index c5b3d09..c1ff0e1 100644 --- a/TickAPI/TickAPI/Events/Controllers/EventsController.cs +++ b/TickAPI/TickAPI/Events/Controllers/EventsController.cs @@ -33,16 +33,16 @@ public async Task> CreateEvent([FromBody] C var emailResult = _claimsService.GetEmailFromClaims(User.Claims); if (emailResult.IsError) { - return StatusCode(emailResult.StatusCode, emailResult.ErrorMsg); + return emailResult.ToObjectResult(); } var email = emailResult.Value!; var newEventResult = await _eventService.CreateNewEventAsync(request.Name, request.Description, request.StartDate, request.EndDate, request.MinimumAge, request.CreateAddress, request.Categories , request.TicketTypes ,request.EventStatus, email); - + if (newEventResult.IsError) - return StatusCode(newEventResult.StatusCode, newEventResult.ErrorMsg); + return newEventResult.ToObjectResult(); return Ok("Event created succesfully"); } @@ -54,24 +54,19 @@ public async Task>> GetOrganizer var emailResult = _claimsService.GetEmailFromClaims(User.Claims); if (emailResult.IsError) { - return StatusCode(emailResult.StatusCode, emailResult.ErrorMsg); + return emailResult.ToObjectResult(); } var email = emailResult.Value!; var organizerResult = await _organizerService.GetOrganizerByEmailAsync(email); if (organizerResult.IsError) { - return StatusCode(organizerResult.StatusCode, organizerResult.ErrorMsg); + return organizerResult.ToObjectResult(); } var organizer = organizerResult.Value!; var paginatedDataResult = await _eventService.GetOrganizerEventsAsync(organizer, page, pageSize, eventFilters); - if (paginatedDataResult.IsError) - { - return StatusCode(paginatedDataResult.StatusCode, paginatedDataResult.ErrorMsg); - } - - return Ok(paginatedDataResult.Value!); + return paginatedDataResult.ToObjectResult(); } [AuthorizeWithPolicy(AuthPolicies.VerifiedOrganizerPolicy)] @@ -81,24 +76,19 @@ public async Task> GetOrganizerEventsPaginationD var emailResult = _claimsService.GetEmailFromClaims(User.Claims); if (emailResult.IsError) { - return StatusCode(emailResult.StatusCode, emailResult.ErrorMsg); + return emailResult.ToObjectResult(); } var email = emailResult.Value!; var organizerResult = await _organizerService.GetOrganizerByEmailAsync(email); if (organizerResult.IsError) { - return StatusCode(organizerResult.StatusCode, organizerResult.ErrorMsg); + return organizerResult.ToObjectResult(); } var organizer = organizerResult.Value!; var paginationDetailsResult = await _eventService.GetOrganizerEventsPaginationDetailsAsync(organizer, pageSize); - if (paginationDetailsResult.IsError) - { - return StatusCode(paginationDetailsResult.StatusCode, paginationDetailsResult.ErrorMsg); - } - - return Ok(paginationDetailsResult.Value!); + return paginationDetailsResult.ToObjectResult(); } [AuthorizeWithPolicy(AuthPolicies.CustomerPolicy)] @@ -106,11 +96,7 @@ public async Task> GetOrganizerEventsPaginationD public async Task>> GetEvents([FromQuery] int pageSize, [FromQuery] int page, [FromQuery] EventFiltersDto eventFilters) { var paginatedDataResult = await _eventService.GetEventsAsync(page, pageSize, eventFilters); - if (paginatedDataResult.IsError) - { - return StatusCode(paginatedDataResult.StatusCode, paginatedDataResult.ErrorMsg); - } - return Ok(paginatedDataResult.Value!); + return paginatedDataResult.ToObjectResult(); } [AuthorizeWithPolicy(AuthPolicies.CustomerPolicy)] @@ -118,11 +104,7 @@ public async Task>> GetEvents([F public async Task> GetEventsPaginationDetails([FromQuery] int pageSize) { var paginationDetailsResult = await _eventService.GetEventsPaginationDetailsAsync(pageSize); - if (paginationDetailsResult.IsError) - { - return StatusCode(paginationDetailsResult.StatusCode, paginationDetailsResult.ErrorMsg); - } - return Ok(paginationDetailsResult.Value!); + return paginationDetailsResult.ToObjectResult(); } [AuthorizeWithPolicy(AuthPolicies.VerifiedUserPolicy)] @@ -130,10 +112,6 @@ public async Task> GetEventsPaginationDetails([F public async Task> GetEventDetails([FromRoute] Guid id) { var eventDetailsResult = await _eventService.GetEventDetailsAsync(id); - if (eventDetailsResult.IsError) - { - return StatusCode(eventDetailsResult.StatusCode, eventDetailsResult.ErrorMsg); - } - return Ok(eventDetailsResult.Value!); + return eventDetailsResult.ToObjectResult(); } } \ No newline at end of file diff --git a/TickAPI/TickAPI/Organizers/Controllers/OrganizersController.cs b/TickAPI/TickAPI/Organizers/Controllers/OrganizersController.cs index f7f9a64..efecb40 100644 --- a/TickAPI/TickAPI/Organizers/Controllers/OrganizersController.cs +++ b/TickAPI/TickAPI/Organizers/Controllers/OrganizersController.cs @@ -32,8 +32,8 @@ public OrganizersController(IGoogleAuthService googleAuthService, IJwtService jw public async Task> GoogleLogin([FromBody] GoogleOrganizerLoginDto request) { var userDataResult = await _googleAuthService.GetUserDataFromAccessToken(request.AccessToken); - if(userDataResult.IsError) - return StatusCode(userDataResult.StatusCode, userDataResult.ErrorMsg); + if (userDataResult.IsError) + return userDataResult.ToObjectResult(); var userData = userDataResult.Value!; @@ -42,9 +42,9 @@ public async Task> GoogleLogin([Fr if (existingOrganizerResult.IsError) { jwtTokenResult = _jwtService.GenerateJwtToken(userData.Email, UserRole.NewOrganizer); - - if(jwtTokenResult.IsError) - return StatusCode(jwtTokenResult.StatusCode, jwtTokenResult.ErrorMsg); + + if (jwtTokenResult.IsError) + return jwtTokenResult.ToObjectResult(); return new ActionResult(new GoogleOrganizerLoginResponseDto(jwtTokenResult.Value!, true, false)); } @@ -54,9 +54,9 @@ public async Task> GoogleLogin([Fr var role = isVerified ? UserRole.Organizer : UserRole.UnverifiedOrganizer; jwtTokenResult = _jwtService.GenerateJwtToken(userData.Email, role); - - if(jwtTokenResult.IsError) - return StatusCode(jwtTokenResult.StatusCode, jwtTokenResult.ErrorMsg); + + if (jwtTokenResult.IsError) + return jwtTokenResult.ToObjectResult(); return new ActionResult(new GoogleOrganizerLoginResponseDto(jwtTokenResult.Value!, false, isVerified)); } @@ -68,17 +68,17 @@ public async Task> CreateOrganizer([Fro var emailResult = _claimsService.GetEmailFromClaims(User.Claims); if (emailResult.IsError) { - return StatusCode(StatusCodes.Status400BadRequest, emailResult.ErrorMsg); + return emailResult.ToObjectResult(); } var email = emailResult.Value!; var newOrganizerResult = await _organizerService.CreateNewOrganizerAsync(email, request.FirstName, request.LastName, request.DisplayName); - if(newOrganizerResult.IsError) - return StatusCode(newOrganizerResult.StatusCode, newOrganizerResult.ErrorMsg); + if (newOrganizerResult.IsError) + return newOrganizerResult.ToObjectResult(); var jwtTokenResult = _jwtService.GenerateJwtToken(newOrganizerResult.Value!.Email, newOrganizerResult.Value!.IsVerified ? UserRole.Organizer : UserRole.UnverifiedOrganizer); - if(jwtTokenResult.IsError) - return StatusCode(jwtTokenResult.StatusCode, jwtTokenResult.ErrorMsg); + if (jwtTokenResult.IsError) + return jwtTokenResult.ToObjectResult(); return new ActionResult(new CreateOrganizerResponseDto(jwtTokenResult.Value!)); } @@ -88,11 +88,7 @@ public async Task> CreateOrganizer([Fro public async Task VerifyOrganizer([FromBody] VerifyOrganizerDto request) { var verifyOrganizerResult = await _organizerService.VerifyOrganizerByEmailAsync(request.Email); - - if(verifyOrganizerResult.IsError) - return StatusCode(verifyOrganizerResult.StatusCode, verifyOrganizerResult.ErrorMsg); - - return Ok(); + return verifyOrganizerResult.ToObjectResult(); } [AuthorizeWithPolicy(AuthPolicies.CreatedOrganizerPolicy)] @@ -102,7 +98,7 @@ public async Task> AboutMe() var emailResult = _claimsService.GetEmailFromClaims(User.Claims); if (emailResult.IsError) { - return StatusCode(StatusCodes.Status400BadRequest, emailResult.ErrorMsg); + return emailResult.ToObjectResult(); } var email = emailResult.Value!; diff --git a/TickAPI/TickAPI/Tickets/Controllers/TicketsController.cs b/TickAPI/TickAPI/Tickets/Controllers/TicketsController.cs index 78979fb..f5148c9 100644 --- a/TickAPI/TickAPI/Tickets/Controllers/TicketsController.cs +++ b/TickAPI/TickAPI/Tickets/Controllers/TicketsController.cs @@ -27,26 +27,18 @@ public async Task> GetTicketDetails(Gu var emailResult = _claimsService.GetEmailFromClaims(User.Claims); if (emailResult.IsError) { - return StatusCode(emailResult.StatusCode, emailResult.ErrorMsg); + return emailResult.ToObjectResult(); } var email = emailResult.Value!; var ticket = await _ticketService.GetTicketDetailsAsync(id, email); - if (ticket.IsError) - { - return StatusCode(ticket.StatusCode, ticket.ErrorMsg); - } - return Ok(ticket.Value); + return ticket.ToObjectResult(); } [HttpGet("/for-resell")] public async Task>> GetTicketsForResell([FromQuery] Guid eventId, [FromQuery] int pageSize, [FromQuery] int page) { var result = await _ticketService.GetTicketsForResellAsync(eventId, page, pageSize); - if (result.IsError) - { - return StatusCode(result.StatusCode, result.ErrorMsg); - } - return result.Value!; + return result.ToObjectResult(); } [AuthorizeWithPolicy(AuthPolicies.CustomerPolicy)] @@ -56,13 +48,9 @@ public async Task>> GetTicke var emailResult = _claimsService.GetEmailFromClaims(User.Claims); if (emailResult.IsError) { - return StatusCode(emailResult.StatusCode, emailResult.ErrorMsg); + return emailResult.ToObjectResult(); } var tickets = await _ticketService.GetTicketsForCustomerAsync(emailResult.Value!, page, pageSize); - if (tickets.IsError) - { - return StatusCode(tickets.StatusCode, tickets.ErrorMsg); - } - return Ok(tickets.Value); + return tickets.ToObjectResult(); } } \ No newline at end of file From 19e1cd4e53c2d90eaac3f61f8c5bdf4f0a9c34e5 Mon Sep 17 00:00:00 2001 From: kTrzcinskii Date: Thu, 8 May 2025 22:52:03 +0200 Subject: [PATCH 3/3] Use more generic `ObjectResult` instead of `OkObjectResult` in tests --- .../Controllers/CategoriesControllerTests.cs | 2 +- .../Events/Controllers/EventsControllerTests.cs | 10 +++++----- .../Controllers/OrganizersControllerTests.cs | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/TickAPI/TickAPI.Tests/Categories/Controllers/CategoriesControllerTests.cs b/TickAPI/TickAPI.Tests/Categories/Controllers/CategoriesControllerTests.cs index 271fd24..79283fd 100644 --- a/TickAPI/TickAPI.Tests/Categories/Controllers/CategoriesControllerTests.cs +++ b/TickAPI/TickAPI.Tests/Categories/Controllers/CategoriesControllerTests.cs @@ -32,7 +32,7 @@ public async Task GetCategories_WhenDataIsValid_ShouldReturnOk() // Assert var result = Assert.IsType>>(res); - var objectResult = Assert.IsType(result.Result); + var objectResult = Assert.IsType(result.Result); Assert.Equal(200, objectResult.StatusCode); Assert.NotNull(objectResult.Value); } diff --git a/TickAPI/TickAPI.Tests/Events/Controllers/EventsControllerTests.cs b/TickAPI/TickAPI.Tests/Events/Controllers/EventsControllerTests.cs index 60e6cc7..36edd57 100644 --- a/TickAPI/TickAPI.Tests/Events/Controllers/EventsControllerTests.cs +++ b/TickAPI/TickAPI.Tests/Events/Controllers/EventsControllerTests.cs @@ -191,7 +191,7 @@ public async Task GetOrganizerEvents_WhenAllOperationsSucceed_ShouldReturnOkWith // Assert var result = Assert.IsType>>(response); - var okResult = Assert.IsType(result.Result); + var okResult = Assert.IsType(result.Result); Assert.Equal(StatusCodes.Status200OK, okResult.StatusCode); var returnedPaginatedData = Assert.IsType>(okResult.Value); @@ -385,7 +385,7 @@ public async Task GetOrganizerEventsPaginationDetails_WhenAllOperationsSucceed_S // Assert var result = Assert.IsType>(response); - var okResult = Assert.IsType(result.Result); + var okResult = Assert.IsType(result.Result); Assert.Equal(StatusCodes.Status200OK, okResult.StatusCode); var returnedPaginationDetails = Assert.IsType(okResult.Value); @@ -479,7 +479,7 @@ public async Task GetEvents_WhenAllOperationsSucceed_ShouldReturnOkWithPaginated // Assert var result = Assert.IsType>>(response); - var okResult = Assert.IsType(result.Result); + var okResult = Assert.IsType(result.Result); Assert.Equal(StatusCodes.Status200OK, okResult.StatusCode); var returnedPaginatedData = Assert.IsType>(okResult.Value); @@ -544,7 +544,7 @@ public async Task GetEventsPaginationDetails_WhenAllOperationsSucceed_ShouldRetu // Assert var result = Assert.IsType>(response); - var okResult = Assert.IsType(result.Result); + var okResult = Assert.IsType(result.Result); Assert.Equal(StatusCodes.Status200OK, okResult.StatusCode); var returnedPaginationDetails = Assert.IsType(okResult.Value); @@ -602,7 +602,7 @@ public async Task GetEventDetails_WhenAllOperationsSucceed_ShouldReturnOkWithEve // Assert var result = Assert.IsType>(response); - var okResult = Assert.IsType(result.Result); + var okResult = Assert.IsType(result.Result); Assert.Equal(StatusCodes.Status200OK, okResult.StatusCode); var returnedEventDetails = Assert.IsType(okResult.Value); diff --git a/TickAPI/TickAPI.Tests/Organizers/Controllers/OrganizersControllerTests.cs b/TickAPI/TickAPI.Tests/Organizers/Controllers/OrganizersControllerTests.cs index 164b26c..21f8348 100644 --- a/TickAPI/TickAPI.Tests/Organizers/Controllers/OrganizersControllerTests.cs +++ b/TickAPI/TickAPI.Tests/Organizers/Controllers/OrganizersControllerTests.cs @@ -268,7 +268,7 @@ public async Task VerifyOrganizer_WhenVerificationSuccessful_ShouldReturnOk() var actionResult = await sut.VerifyOrganizer(new VerifyOrganizerDto(email)); // Assert - var result = Assert.IsType(actionResult); + var result = Assert.IsType(actionResult); Assert.Equal(StatusCodes.Status200OK, result.StatusCode); }