public async Task <IActionResult> Calculate([FromBody] CalculateRequest request) { try { if (ModelState.IsValid) { ForecastRequestDto requestDto = _requestMapper.MapCalculation(request); ForecastResponseDto responseDto = await _orchestrator.Orchestration(requestDto); CalculateResponse response = _responseMapper.MapCalculationResponse(responseDto); return(Ok(response)); } var errors = MapModelValidationErrors(ModelState); return(BadRequest(new CalculateResponse(errors))); } catch (Exception ex) { //logging return(BadRequest(new CalculateResponse(new List <string>() { "Exception" }))); } }
public CalculateResponse Calculate(CalculateRequest request) { ForecastRequestDto requestDto = _requestMapper.MapCalculation(request); ForecastResponseDto responseDto = _orchestrator.CalculateAnnualGrowth(requestDto); return(_responseMapper.MapCalculationResponse(responseDto)); }
public void WhenResponseHasNoValidationMessages_ThenReturnsSuccess() { //Arrange IEnumerable <AnnualForecast> annualForecasts = new List <AnnualForecast>(); //Act var actual = new ForecastResponseDto(annualForecasts); //Assert Assert.IsTrue(actual.Success); }
public CalculateResponse MapCalculationResponse(ForecastResponseDto response) { var annualForecasts = response.AnnualForecasts; var totalInvestmentAmount = annualForecasts.Select(x => x.TotalInvestmentAmount); var totalWideLower = annualForecasts.Select(x => x.TotalValueWideLower); var totalWideUpper = annualForecasts.Select(x => x.TotalValueWideUpper); var totalNarrowLower = annualForecasts.Select(x => x.TotalValueNarrowLower); var totalNarrowUpper = annualForecasts.Select(x => x.TotalValueNarrowUpper); return(new CalculateResponse(totalInvestmentAmount, totalWideLower, totalWideUpper, totalNarrowLower, totalNarrowUpper)); }
public void WhenResponseHasValidationMessages_ThenReturnsSuccessFalse() { //Arrange var validationMessages = new List <string> { "Dummy Error" }; //Act var actual = new ForecastResponseDto(validationMessages); //Assert Assert.IsFalse(actual.Success); }
public void AndThereAreValidationMessagesThenValidationMessagesAreReturned() { //Arrange var request = CreateRequest(); var validationMessages = new List <string>() { "dummyValMsg1", "dummyValMsg2" }; var expectedForecastResponseDto = new ForecastResponseDto(validationMessages); _validationService.Setup(x => x.Validate(request)).Returns(validationMessages); //Act var actual = _service.CalculateAnnualGrowth(request); //Assert Assert.AreEqual(expectedForecastResponseDto.ValidationMessages.ElementAt(0), actual.ValidationMessages.ElementAt(0)); Assert.AreEqual(expectedForecastResponseDto.ValidationMessages.ElementAt(1), actual.ValidationMessages.ElementAt(1)); }
public void ThenTheResultFromForecastCalculatorIsReturned() { //Arrange var request = CreateRequest(); var annualForecastResults = new List <AnnualForecast>() { new AnnualForecast(1000) }; var expectedForecastResponseDto = new ForecastResponseDto(annualForecastResults); _forecastCalculator.Setup(x => x.Calculate(It.IsAny <IBounds>(), request)).Returns(annualForecastResults); //Act var actual = _service.CalculateAnnualGrowth(request); //Assert Assert.AreEqual(expectedForecastResponseDto.AnnualForecasts.ElementAt(0).TotalInvestmentAmount, actual.AnnualForecasts.ElementAt(0).TotalInvestmentAmount); Assert.AreEqual(expectedForecastResponseDto.AnnualForecasts.ElementAt(0).TotalValueNarrowLower, actual.AnnualForecasts.ElementAt(0).TotalValueNarrowLower); Assert.AreEqual(expectedForecastResponseDto.AnnualForecasts.ElementAt(0).TotalValueNarrowUpper, actual.AnnualForecasts.ElementAt(0).TotalValueNarrowUpper); Assert.AreEqual(expectedForecastResponseDto.AnnualForecasts.ElementAt(0).TotalValueWideLower, actual.AnnualForecasts.ElementAt(0).TotalValueWideLower); Assert.AreEqual(expectedForecastResponseDto.AnnualForecasts.ElementAt(0).TotalValueWideUpper, actual.AnnualForecasts.ElementAt(0).TotalValueWideUpper); }