Skip to content

Commit

Permalink
add result value checks on tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jicking committed Apr 18, 2024
1 parent 61632da commit f58ff43
Showing 1 changed file with 27 additions and 20 deletions.
47 changes: 27 additions & 20 deletions JixMinApiTests/Features/Todo/TodoEndpointsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,23 @@ public async Task GetTodoByIdAsync_Returns_BadRequest_When_Id_Is_Empty()
// Arrange
var mediatorMock = new Mock<IMediator>();
var emptyId = Guid.Empty;
var expectedBadRequest = TypedResults.BadRequest<ValidationErrorDto>(
new ValidationErrorDto(
[new ValidationErrorItem("id", "id must not be an empty guid.")]
));
var expectedBadRequest = new ValidationErrorDto(
[new ValidationErrorItem("id", "id must not be an empty guid.")]
);

// Act
var result = await TodoEndpoints.GetTodoByIdAsync(emptyId, mediatorMock.Object);
var response = await TodoEndpoints.GetTodoByIdAsync(emptyId, mediatorMock.Object);

// Assert
Assert.IsType<Results<BadRequest<ValidationErrorDto>, NotFound, Ok<TodoDto>>>(result);
var badrequest = (BadRequest<ValidationErrorDto>)result.Result;
Assert.NotNull(badrequest);
Assert.IsType<Results<BadRequest<ValidationErrorDto>, NotFound, Ok<TodoDto>>>(response);

var result = (BadRequest<ValidationErrorDto>)response.Result;
Assert.NotNull(result);
Assert.Equal(StatusCodes.Status400BadRequest, result.StatusCode);

var value = Assert.IsType<ValidationErrorDto>(result.Value);
Assert.True(value.ValidationErrors.Any());
Assert.Equal(expectedBadRequest.ValidationErrors.FirstOrDefault(), value.ValidationErrors.FirstOrDefault());
}

[Fact]
Expand All @@ -40,13 +45,14 @@ public async Task GetTodoByIdAsync_Returns_NotFound_When_Todo_Not_Found()
.ReturnsAsync(new List<TodoDto>());

// Act
var result = await TodoEndpoints.GetTodoByIdAsync(nonExistentId, mediatorMock.Object);
var response = await TodoEndpoints.GetTodoByIdAsync(nonExistentId, mediatorMock.Object);

// Assert
Assert.IsType<Results<BadRequest<ValidationErrorDto>, NotFound, Ok<TodoDto>>>(result);
var notFoundResult = (NotFound)result.Result;

Assert.NotNull(notFoundResult);
Assert.IsType<Results<BadRequest<ValidationErrorDto>, NotFound, Ok<TodoDto>>>(response);

var result = (NotFound)response.Result;
Assert.NotNull(result);
Assert.Equal(StatusCodes.Status404NotFound, result.StatusCode);
}

[Fact]
Expand All @@ -55,21 +61,22 @@ public async Task GetTodoByIdAsync_Returns_Ok_When_Todo_Found()
// Arrange
var mediatorMock = new Mock<IMediator>();
var existingId = Guid.NewGuid(); // Assuming this id exists
var todoDto = new TodoDto(existingId, "", false); // Assuming todo with this id exists
var todoDto = new TodoDto(existingId, "Test name", false); // Assuming todo with this id exists

mediatorMock.Setup(m => m.Send(It.IsAny<GetAllTodosQuery>(), CancellationToken.None))
.ReturnsAsync(new List<TodoDto>() {
todoDto
});

// Act
var result = await TodoEndpoints.GetTodoByIdAsync(existingId, mediatorMock.Object);
var response = await TodoEndpoints.GetTodoByIdAsync(existingId, mediatorMock.Object);

// Assert
Assert.IsType<Results<BadRequest<ValidationErrorDto>, NotFound, Ok<TodoDto>>>(result);
var okResult = (Ok<TodoDto>)result.Result;

Assert.NotNull(okResult);
Assert.Equal(todoDto, okResult.Value);
Assert.IsType<Results<BadRequest<ValidationErrorDto>, NotFound, Ok<TodoDto>>>(response);

var result = (Ok<TodoDto>)response.Result;
Assert.NotNull(result);
Assert.Equal(StatusCodes.Status200OK, result.StatusCode);
Assert.Equal(todoDto, result.Value);
}
}

0 comments on commit f58ff43

Please sign in to comment.