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"
                })));
            }
        }
Exemple #2
0
        public CalculateResponse Calculate(CalculateRequest request)
        {
            ForecastRequestDto  requestDto  = _requestMapper.MapCalculation(request);
            ForecastResponseDto responseDto = _orchestrator.CalculateAnnualGrowth(requestDto);

            return(_responseMapper.MapCalculationResponse(responseDto));
        }
Exemple #3
0
        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));
        }
Exemple #5
0
        public void WhenResponseHasValidationMessages_ThenReturnsSuccessFalse()
        {
            //Arrange
            var validationMessages = new List <string> {
                "Dummy Error"
            };

            //Act
            var actual = new ForecastResponseDto(validationMessages);

            //Assert
            Assert.IsFalse(actual.Success);
        }
Exemple #6
0
        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));
        }
Exemple #7
0
        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);
        }