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); }
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)); } }
public async Task <ActionResult <decimal> > CalculaJuros(decimal valorInicial, decimal tempo) => Ok(await _service.CalculaJurosAsync(valorInicial, tempo));