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()); }
public async Task ReturnBadRequest_WhenUbiUserIdHeaderIsMissing() { var requestBody = new PlayerFeedBackRequest { SessionId = new Guid("906733a4-f2c9-44c1-9e03-b8a8c5393e18"), Rating = 5, Comment = "" }; var controller = new PlayerFeedbackController(_mockQueryHandler.Object, _mockFeedbackSender.Object, _mockClock.Object); controller.ControllerContext.HttpContext = new DefaultHttpContext(); var responseResult = await controller.Post(requestBody); var response = Assert.IsType <BadRequestObjectResult>(responseResult); var receivedError = Assert.IsAssignableFrom <Error>(response.Value); var expectedError = new Error { Type = UbiUserIdHeader.UbiUserIdMissingError, Message = UbiUserIdHeader.UbiUserIdMissingErrorMessage }; Assert.Equal(StatusCodes.Status400BadRequest, response.StatusCode); Assert.Equal(expectedError, receivedError); }
public async Task ReturnOk_WhenValidFeedbackIsGivenWithUbiUserIdHeader_And_FeedbackIsSuccessfullySent() { var ubiUserId = "player-id-1"; var requestBody = new PlayerFeedBackRequest { SessionId = new Guid("906733a4-f2c9-44c1-9e03-b8a8c5393e18"), Rating = 5, Comment = "" }; _mockFeedbackSender .Setup(sender => sender.Send(It.IsAny <PlayerFeedbackDto>())) .ReturnsAsync(Result.Ok()); var controller = new PlayerFeedbackController(_mockQueryHandler.Object, _mockFeedbackSender.Object, _mockClock.Object); controller.ControllerContext.HttpContext = new DefaultHttpContext(); UbiUserIdHeaderHelper.AddUbiUserIdsToRequestHeader( controller.ControllerContext.HttpContext.Request, ubiUserId ); var responseResult = await controller.Post(requestBody); var response = Assert.IsType <OkResult>(responseResult); Assert.Equal(StatusCodes.Status200OK, response.StatusCode); }
public async Task ReturnBadRequest_WhenUbiUserIdIsGiven_But_InvalidFeedbackIsGiven() { var ubiUserId = "player-id-1"; var requestBody = new PlayerFeedBackRequest { SessionId = new Guid("906733a4-f2c9-44c1-9e03-b8a8c5393e18"), Rating = -1, Comment = "" }; var expectedError = new Error { Type = ErrorType.RatingOutOfRange.ToString(), Message = ErrorMessage.RatingOutOfRangeMessage }; _mockFeedbackSender .Setup(sender => sender.Send(It.IsAny <PlayerFeedbackDto>())) .ReturnsAsync(Result.Fail(expectedError)); var controller = new PlayerFeedbackController(_mockQueryHandler.Object, _mockFeedbackSender.Object, _mockClock.Object); controller.ControllerContext.HttpContext = new DefaultHttpContext(); UbiUserIdHeaderHelper.AddUbiUserIdsToRequestHeader( controller.ControllerContext.HttpContext.Request, ubiUserId ); var responseResult = await controller.Post(requestBody); var response = Assert.IsType <BadRequestObjectResult>(responseResult); var receivedError = Assert.IsAssignableFrom <Error>(response.Value); Assert.Equal(StatusCodes.Status400BadRequest, response.StatusCode); Assert.Equal(expectedError, receivedError); }