Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public async Task GetCategories_WhenDataIsValid_ShouldReturnOk()

// Assert
var result = Assert.IsType<ActionResult<PaginatedData<GetCategoryResponseDto>>>(res);
var objectResult = Assert.IsType<OkObjectResult>(result.Result);
var objectResult = Assert.IsType<ObjectResult>(result.Result);
Assert.Equal(200, objectResult.StatusCode);
Assert.NotNull(objectResult.Value);
}
Expand Down
87 changes: 86 additions & 1 deletion TickAPI/TickAPI.Tests/Common/Results/Generic/ResultTests.cs
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -8,10 +10,13 @@ public class ResultTests
[Fact]
public void Success_ShouldReturnResultWithValue()
{
// Arrange
const int value = 123;

// Act
var result = Result<int>.Success(value);

// Assert
Assert.Equal(value, result.Value);
Assert.True(result.IsSuccess);
Assert.False(result.IsError);
Expand All @@ -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<int>.Failure(500, errorMsg);

// Assert
Assert.True(result.IsError);
Assert.False(result.IsSuccess);
Assert.Equal(errorMsg, result.ErrorMsg);
Expand All @@ -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<string>.Failure(statusCode, errorMsg);

// Act
var result = Result<int>.PropagateError(resultWithError);

// Assert
Assert.True(result.IsError);
Assert.False(result.IsSuccess);
Assert.Equal(errorMsg, result.ErrorMsg);
Expand All @@ -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<int>.PropagateError(resultWithError);

// Assert
Assert.True(result.IsError);
Assert.False(result.IsSuccess);
Assert.Equal(errorMsg, result.ErrorMsg);
Expand All @@ -66,20 +80,91 @@ public void PropagateError_WhenNonGenericResultWithErrorPassed_ShouldReturnResul
[Fact]
public void PropagateError_WhenResultWithSuccessPassed_ShouldThrowArgumentException()
{
// Arrange
var resultWithSuccess = Result<string>.Success("abc");

// Act
var act = () => Result<int>.PropagateError(resultWithSuccess);

// Assert
Assert.Throws<ArgumentException>(act);
}

[Fact]
public void PropagateError_WhenNonGenericResultWithSuccessPassed_ShouldThrowArgumentException()
{
// Arrange
var resultWithSuccess = Result.Success();

// Act
var act = () => Result<int>.PropagateError(resultWithSuccess);

// Assert
Assert.Throws<ArgumentException>(act);
}

[Fact]
public void ToObjectResult_WhenGenericResultIsError_ShouldReturnObjectResultWithErrorDetails()
{
// Arrange
const int statusCode = 404;
const string errorMsg = "Not found";
var result = Result<int>.Failure(statusCode, errorMsg);

// Act
var objectResult = result.ToObjectResult();

// Assert
Assert.IsType<ObjectResult>(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<int>.Success(value);

// Act
var objectResult = result.ToObjectResult();

// Assert
Assert.IsType<ObjectResult>(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<string>.Success(value);
const int customSuccessCode = StatusCodes.Status201Created;

// Act
var objectResult = result.ToObjectResult(customSuccessCode);

// Assert
Assert.IsType<ObjectResult>(objectResult);
Assert.Equal(customSuccessCode, objectResult.StatusCode);
Assert.Equal(value, objectResult.Value);
}

[Fact]
public void ToObjectResult_WhenGenericResultWithNullValueIsSuccess_ShouldReturnObjectResultWithNullValue()
{
// Arrange
var result = Result<string>.Success(null);

// Act
var objectResult = result.ToObjectResult();

// Assert
Assert.IsType<ObjectResult>(objectResult);
Assert.Equal(StatusCodes.Status200OK, objectResult.StatusCode);
Assert.Null(objectResult.Value);
}
}
63 changes: 62 additions & 1 deletion TickAPI/TickAPI.Tests/Common/Results/ResultTests.cs
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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<int>.Failure(statusCode, errorMsg);

// Act
var result = Result.PropagateError(resultWithError);

// Assert
Assert.True(result.IsError);
Assert.False(result.IsSuccess);
Assert.Equal(errorMsg, result.ErrorMsg);
Expand All @@ -48,10 +58,61 @@ public void PropagateError_WhenGenericResultWithErrorPassed_ShouldReturnResultWi
[Fact]
public void PropagateError_WhenGenericResultWithSuccessPassed_ShouldThrowArgumentException()
{
// Arrange
var resultWithSuccess = Result<int>.Success(123);

// Act
var act = () => Result<int>.PropagateError(resultWithSuccess);

// Assert
Assert.Throws<ArgumentException>(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>(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>(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>(objectResult);
Assert.Equal(customSuccessCode, objectResult.StatusCode);
Assert.Null(objectResult.Value);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ public async Task GetOrganizerEvents_WhenAllOperationsSucceed_ShouldReturnOkWith

// Assert
var result = Assert.IsType<ActionResult<PaginatedData<GetEventResponseDto>>>(response);
var okResult = Assert.IsType<OkObjectResult>(result.Result);
var okResult = Assert.IsType<ObjectResult>(result.Result);
Assert.Equal(StatusCodes.Status200OK, okResult.StatusCode);

var returnedPaginatedData = Assert.IsType<PaginatedData<GetEventResponseDto>>(okResult.Value);
Expand Down Expand Up @@ -385,7 +385,7 @@ public async Task GetOrganizerEventsPaginationDetails_WhenAllOperationsSucceed_S

// Assert
var result = Assert.IsType<ActionResult<PaginationDetails>>(response);
var okResult = Assert.IsType<OkObjectResult>(result.Result);
var okResult = Assert.IsType<ObjectResult>(result.Result);
Assert.Equal(StatusCodes.Status200OK, okResult.StatusCode);

var returnedPaginationDetails = Assert.IsType<PaginationDetails>(okResult.Value);
Expand Down Expand Up @@ -479,7 +479,7 @@ public async Task GetEvents_WhenAllOperationsSucceed_ShouldReturnOkWithPaginated

// Assert
var result = Assert.IsType<ActionResult<PaginatedData<GetEventResponseDto>>>(response);
var okResult = Assert.IsType<OkObjectResult>(result.Result);
var okResult = Assert.IsType<ObjectResult>(result.Result);
Assert.Equal(StatusCodes.Status200OK, okResult.StatusCode);

var returnedPaginatedData = Assert.IsType<PaginatedData<GetEventResponseDto>>(okResult.Value);
Expand Down Expand Up @@ -544,7 +544,7 @@ public async Task GetEventsPaginationDetails_WhenAllOperationsSucceed_ShouldRetu

// Assert
var result = Assert.IsType<ActionResult<PaginationDetails>>(response);
var okResult = Assert.IsType<OkObjectResult>(result.Result);
var okResult = Assert.IsType<ObjectResult>(result.Result);
Assert.Equal(StatusCodes.Status200OK, okResult.StatusCode);

var returnedPaginationDetails = Assert.IsType<PaginationDetails>(okResult.Value);
Expand Down Expand Up @@ -602,7 +602,7 @@ public async Task GetEventDetails_WhenAllOperationsSucceed_ShouldReturnOkWithEve

// Assert
var result = Assert.IsType<ActionResult<GetEventDetailsResponseDto>>(response);
var okResult = Assert.IsType<OkObjectResult>(result.Result);
var okResult = Assert.IsType<ObjectResult>(result.Result);
Assert.Equal(StatusCodes.Status200OK, okResult.StatusCode);

var returnedEventDetails = Assert.IsType<GetEventDetailsResponseDto>(okResult.Value);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ public async Task VerifyOrganizer_WhenVerificationSuccessful_ShouldReturnOk()
var actionResult = await sut.VerifyOrganizer(new VerifyOrganizerDto(email));

// Assert
var result = Assert.IsType<OkResult>(actionResult);
var result = Assert.IsType<ObjectResult>(actionResult);
Assert.Equal(StatusCodes.Status200OK, result.StatusCode);
}

Expand Down
13 changes: 6 additions & 7 deletions TickAPI/TickAPI/Admins/Controllers/AdminsController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,20 +31,20 @@ public AdminsController(IGoogleAuthService googleAuthService, IJwtService jwtSer
public async Task<ActionResult<GoogleAdminLoginResponseDto>> 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<GoogleAdminLoginResponseDto>(new GoogleAdminLoginResponseDto(jwtTokenResult.Value!));
}
Expand All @@ -56,7 +56,7 @@ public async Task<ActionResult<AboutMeAdminResponseDto>> AboutMe()
var emailResult = _claimsService.GetEmailFromClaims(User.Claims);
if (emailResult.IsError)
{
return StatusCode(emailResult.StatusCode, emailResult.ErrorMsg);
return emailResult.ToObjectResult();
}
var email = emailResult.Value!;

Expand All @@ -66,8 +66,7 @@ public async Task<ActionResult<AboutMeAdminResponseDto>> 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<AboutMeAdminResponseDto>(aboutMeResponse);
}
}
Loading
Loading