public async Task ReturnBadRequest_WhenInvalidFilterIsProvided() { var rawFilter = new RawFilter { MinRating = 2, MaxRating = 1 }; var expectedError = new Error { Type = ErrorType.MinRatingGreaterThanMax.ToString(), Message = ErrorMessage.Create(ErrorType.MinRatingGreaterThanMax) }; _mockQueryHandler .Setup(handler => handler.GetLatestFeedBack(It.IsAny <RawFilter>())) .ReturnsAsync(Result.Fail <IReadOnlyCollection <PlayerFeedbackDto> >(expectedError)); var controller = new PlayerFeedbackController(_mockQueryHandler.Object, _mockFeedbackSender.Object, _mockClock.Object); var responseResult = await controller.Get(rawFilter); var response = Assert.IsType <BadRequestObjectResult>(responseResult.Result); var receivedError = Assert.IsAssignableFrom <Error>(response.Value); Assert.Equal(StatusCodes.Status400BadRequest, response.StatusCode); Assert.Equal(expectedError, receivedError); }
public async Task ReturnOkWithFeedbacks_WhenValidFilterIsProvided() { var rawFilter = new RawFilter { MinRating = 2, MaxRating = 3 }; var feedbacks = Array.AsReadOnly(new[] { _defaultPlayerFeedbackDto }); _mockQueryHandler .Setup(handler => handler.GetLatestFeedBack(It.IsAny <RawFilter>())) .ReturnsAsync(Result.Ok <IReadOnlyCollection <PlayerFeedbackDto> >(new[] { _defaultPlayerFeedbackDto })); var controller = new PlayerFeedbackController(_mockQueryHandler.Object, _mockFeedbackSender.Object, _mockClock.Object); var responseResult = await controller.Get(rawFilter); var expectedPlayerFeedback = new PlayerFeedbackResponse { SessionId = _defaultPlayerFeedbackDto.SessionId, PlayerId = _defaultPlayerFeedbackDto.PlayerId, Rating = _defaultPlayerFeedbackDto.Rating, Comment = _defaultPlayerFeedbackDto.Comment, Timestamp = _defaultPlayerFeedbackDto.Timestamp }; var response = Assert.IsType <OkObjectResult>(responseResult.Result); var receivedFeedbacks = Assert.IsAssignableFrom <IEnumerable <PlayerFeedbackResponse> >(response.Value); Assert.Equal(StatusCodes.Status200OK, response.StatusCode); Assert.Equal(expectedPlayerFeedback, receivedFeedbacks.First()); }