public async Task CalculaJurosAsync_Deve_CalcularCorretamente()
        {
            //Arrange
            var taxaJuros = 0.01M;
            var juros     = new Juros {
                Taxa = taxaJuros
            };
            var response = new Response <Juros>
            {
                Status = new Status
                {
                    Mensagem   = "Taxa de Juros recuperada com sucesso.",
                    StatusCode = HttpStatusCode.OK,
                    Erros      = new List <Error>()
                },
                Conteudo = juros
            };

            _configurationMock.Setup(_ => _.GetSection(It.IsAny <string>())).Returns(new Mock <IConfigurationSection>().Object);
            _webClientServiceMock.Setup(_ => _.GetRequest <Response <Juros> >(It.IsAny <string>())).ReturnsAsync(response);


            //Act
            var valorFinal = await _jurosService.CalculaJurosAsync(50, 3);

            //Assert
            valorFinal.Should().Be(51.51M);
            _webClientServiceMock.Verify(_ => _.GetRequest <Response <Juros> >(It.IsAny <string>()), Times.Once);
        }
示例#2
0
        public async Task <ActionResult <Response <Juros> > > CalculaJuros([FromQuery] decimal valorInicial, [FromQuery] int meses)
        {
            try
            {
                if (valorInicial == default && meses == default)
                {
                    var erros = new List <Error>
                    {
                        new Error {
                            Mensagem = $"Valor inicial não pode ser zero. { new { valorInicial } }"
                        },
                        new Error {
                            Mensagem = $"Quantidade de meses não pode ser zero. { new { meses } }"
                        }
                    };

                    _loggingService.LogInfo($"Parâmetros inválidos { new { valorInicial, meses } }.");
                    return(BadRequest(ResponseHelper.CreateResponse("Parâmetros inválidos.", HttpStatusCode.BadRequest, erros)));
                }

                _loggingService.LogInfo($"Calculando juros para { new { valorInicial, meses } }");

                var conteudo = new Investimento
                {
                    ValorInicial = valorInicial,
                    ValorFinal   = await _jurosService.CalculaJurosAsync(valorInicial, meses)
                };

                var response = ResponseHelper.CreateResponse("Cálculo de Juros realizado com sucesso.", HttpStatusCode.OK, new List <Error>(), conteudo);

                return(Ok(response));
            }
            catch (Exception ex)
            {
                _loggingService.LogError($"Exceção ocorreu. {ex.Message}", ex);

                var response = ResponseHelper.CreateResponse("Algo inesperado ocorreu. Por favor cheque a lista de erros.", HttpStatusCode.InternalServerError, new List <Error> {
                    new Error {
                        Mensagem = ex.Message
                    }
                });

                return(StatusCode(500, response));
            }
        }
示例#3
0
 public async Task <ActionResult <decimal> > CalculaJuros(decimal valorInicial, decimal tempo)
 => Ok(await _service.CalculaJurosAsync(valorInicial, tempo));