public IActionResult ComputeNormalModes([FromBody] KrakenInputModel model) { if (model == null) { return(BadRequest("Input data is not valid")); } var errors = _krakenInputModelValidator.Validate(model); if (errors.Any()) { return(BadRequest(new { validationErrors = errors })); } var acousticProblem = _krakenInputModelMapper.Map(model); try { var computingResult = _krakenService.ComputeModes(acousticProblem); var viewModel = _krakenResultModelMapper.Map(computingResult); return(Json(viewModel)); } catch (KrakenComputingException ex) { return(StatusCode(500, new { expectedError = true, error = ex.Message })); } }
public void ComputeNormalModesReturns500StatusCodeWhenKrakenComputingExceptionOccurs() { const string message = "error"; const int statusCode500 = 500; var krakenServiceMock = _krakenServiceMocks.ComputeModesThrowsKrakenComputingException(message); var krakenInputModelMapperMock = _mappersMocks.KrakenInputModelMapper(); var krakenResultModelMapperMock = _mappersMocks.KrakenResultModelMapper(); var krakenInputModelValidator = _modelValidatorMocks.ValidateReturnsEmptyList(); var krakenController = new KrakenController(krakenServiceMock.Object, krakenInputModelMapperMock.Object, krakenResultModelMapperMock.Object, krakenInputModelValidator.Object); var model = new KrakenInputModel(); var objectResult = krakenController.ComputeNormalModes(model) as ObjectResult; Assert.NotNull(objectResult); Assert.Equal(statusCode500, objectResult.StatusCode); dynamic obj = new DynamicObjectResultValue(objectResult.Value); Assert.True(obj.expectedError); Assert.Equal(message, obj.error); }
public void ComputeNormalModesReturnsBadRequestWithValidationErrorsWhenModelIsNotValid() { var validationErrors = new List <string> { "error 1", "error 2" }; var krakenServiceMock = _krakenServiceMocks.ComputeModesReturnsKrakenComputingResult(); var krakenInputModelMapperMock = _mappersMocks.KrakenInputModelMapper(); var krakenResultModelMapperMock = _mappersMocks.KrakenResultModelMapper(); var krakenInputModelValidator = _modelValidatorMocks.ValidateReturnsNotEmptyList(validationErrors); var krakenController = new KrakenController(krakenServiceMock.Object, krakenInputModelMapperMock.Object, krakenResultModelMapperMock.Object, krakenInputModelValidator.Object); var model = new KrakenInputModel(); var badRequest = krakenController.ComputeNormalModes(model) as BadRequestObjectResult; dynamic obj = new DynamicObjectResultValue(badRequest.Value); var returnedValidationErrors = obj.validationErrors as List <string>; Assert.NotNull(badRequest); Assert.NotNull(returnedValidationErrors); Assert.Equal(returnedValidationErrors.Count, validationErrors.Count); Assert.Contains(validationErrors[0], returnedValidationErrors); Assert.Contains(validationErrors[1], returnedValidationErrors); }
public void ComputeNormalModesReturnsJsonResultWithKrakenResultModel() { var krakenServiceMock = _krakenServiceMocks.ComputeModesReturnsKrakenComputingResult(); var krakenInputModelMapperMock = _mappersMocks.KrakenInputModelMapper(); var krakenResultModelMapperMock = _mappersMocks.KrakenResultModelMapper(); var krakenInputModelValidator = _modelValidatorMocks.ValidateReturnsEmptyList(); var krakenController = new KrakenController(krakenServiceMock.Object, krakenInputModelMapperMock.Object, krakenResultModelMapperMock.Object, krakenInputModelValidator.Object); var model = new KrakenInputModel(); var jsonResult = krakenController.ComputeNormalModes(model) as JsonResult; Assert.NotNull(jsonResult); Assert.IsAssignableFrom <KrakenResultModel>(jsonResult.Value); }