Пример #1
0
        public CalculaJurosDTO CalculaJuros(CalculaJurosParametro param)
        {
            CalculaJurosDTO calculo;

            try
            {
                TaxaJuros();

                if (param.ValorInicial > 0 && param.Meses > 0)
                {
                    decimal valorCalculado = Pow(param.ValorInicial * (1 + Convert.ToDecimal(taxaJuros.TaxaJuros)), (uint)param.Meses);
                    calculo = new CalculaJurosDTO()
                    {
                        ValorFinal = Math.Truncate(100 * valorCalculado) / 100
                    };
                }
                else
                {
                    throw new Exception("Os parâmetros ValorInicial e Meses são obrigatórios!");
                }

                return(calculo);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Пример #2
0
        public async Task <decimal> CalculaJurosAsync(CalculaJurosDTO dto)
        {
            var taxa = await _aplicTaxaJuros.TaxaJurosAsync();

            var juros = (double)dto.ValorInicial * Math.Pow(1 + (double)taxa, dto.Tempo);

            return(decimal.Truncate((decimal)juros * 100) / 100);
        }
Пример #3
0
        public async void CalculaValorTotalComJurosDeveRetornar105_1()
        {
            var calculaJurosDTO = new CalculaJurosDTO()
            {
                ValorInicial = 100,
                Tempo        = 5
            };

            var mockAplicCalculaJuros = new Mock <IAplicCalculaJuros>();

            mockAplicCalculaJuros.Setup(p => p.CalculaJurosAsync(calculaJurosDTO)).ReturnsAsync(105.1m);
            var controller = new CalculaJurosController(mockAplicCalculaJuros.Object);
            var valorTotal = await controller.CalculaJurosAsync(calculaJurosDTO);

            Assert.Equal(105.1m, valorTotal);
        }
Пример #4
0
        public void CalculaJuros()
        {
            CalculaJurosParametro taxaJuros = new CalculaJurosParametro()
            {
                ValorInicial = 100,
                Meses        = 5
            };

            CalculaJurosDTO retorno = new CalculaJurosDTO()
            {
                ValorFinal = 10510100501
            };

            CalculaJurosServices objCalculaJuros = new CalculaJurosServices();

            Assert.Equal(retorno.ValorFinal, objCalculaJuros.CalculaJuros(taxaJuros).ValorFinal);
        }
Пример #5
0
        public async Task <IActionResult> CalculaJuros([FromQuery] CalculaJurosDTO calculaJurosDTO)
        {
            try
            {
                var valor = await _calculaJurosService.CalculaJuros(calculaJurosDTO);

                return(Ok(valor));
            }
            catch (ValidationException ex)
            {
                _logger.LogError(ex, "ValidationException");
                return(BadRequest(_validationErrorService.FormatError(ex)));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Exception");
                return(Problem(ex.Message));
            }
        }
Пример #6
0
        public async void CalculaJuros__ShouldReturnCorrectValue()
        {
            //Arrange
            var parms = new CalculaJurosDTO
            {
                Meses        = 5,
                ValorInicial = 100
            };

            _clientConnectionService.GetTaxaJuros().Returns(new TaxaJurosViewModel()
            {
                TaxaJuros = 0.01M
            });
            //Act
            var result = await _sut.CalculaJuros(parms);

            //Assert
            Assert.Equal("105,10", result.Valor);
        }
Пример #7
0
        public void GetTaxaJurosComMoq()
        {
            var calculo = new Mock <IServiceCalculaJuros>(MockBehavior.Strict);

            CalculaJurosParametro taxaJuros = new CalculaJurosParametro()
            {
                ValorInicial = 100,
                Meses        = 5
            };

            CalculaJurosDTO retorno = new CalculaJurosDTO()
            {
                ValorFinal = 10510100501
            };

            calculo.Setup(w => w.CalculaJuros(taxaJuros)).Returns(() => retorno);

            Assert.Equal <CalculaJurosDTO>(retorno, calculo.Object.CalculaJuros(taxaJuros));
        }
Пример #8
0
        public async void CalculaJuros__ShouldReturnValidationException_WhenInitialValueIsNull()
        {
            //Arrange
            var parms = new CalculaJurosDTO {
                Meses = 5, ValorInicial = null
            };
            //Act and Assert
            var result = await Assert.ThrowsAsync <ValidationException>(async() => await _sut.CalculaJuros(parms));

            var details = result.Errors
                          .Select(s => new Detail()
            {
                Code    = s.ErrorCode,
                Message = $"{s.PropertyName} {s.ErrorMessage}",
            });
            var total = details.Count();

            Assert.Equal(1, total);
            Assert.Equal("NULL_INITIAL_VALUE", details.First().Code);
        }
Пример #9
0
        public async Task <CalculaJurosViewModel> CalculaJuros(CalculaJurosDTO calculaJurosDTO)
        {
            try
            {
                new CalculaJurosValidator().ValidateAndThrow(calculaJurosDTO);

                var fee = await _clientConnectionService.GetTaxaJuros();

                var rate  = 1D + (double)fee.TaxaJuros;
                var value = (double)calculaJurosDTO.ValorInicial.Value * Math.Pow((rate), calculaJurosDTO.Meses.Value);

                return(new CalculaJurosViewModel
                {
                    Valor = string.Format("{0:0.00}", (Math.Truncate(100 * value) / 100))
                });
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #10
0
 public async Task <IActionResult> CalculaJuros([FromQuery] CalculaJurosDTO calculaJurosDTO)
 {
     return(Ok(await _calculoService.CalculaJuros(calculaJurosDTO.ValorInicial.Value, calculaJurosDTO.Meses.Value)));
 }
Пример #11
0
 public async Task <decimal> CalculaJurosAsync(CalculaJurosDTO dto)
 {
     return(await _aplicCalculaJuros.CalculaJurosAsync(dto));
 }