Example #1
0
        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 }));
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }