public async Task <IActionResult> Calcular( [FromServices] CalculadoraJurosHandler handler, [SwaggerParameter(Required = true)][FromQuery] CalculoCommand command) { var result = await handler.Calcular(command); return(Ok(result)); }
public void Calcular_QuandoValorForZeroOuNegativo_DeveLancarException(double valorInicial, int meses) { //Arrange var command = new CalculoCommand { ValorInicial = valorInicial, Meses = meses }; //Act // Assert handler .Invoking(x => x.Calcular(command)) .Should() .ThrowExactly <ArgumentOutOfRangeException>() .WithMessage($"{ValidationErrors.MaiorOuIgualZero}*"); }
public async void Calcular_QuandoValoresEstiveremValidos_DeveRetornarValorCalculado(int valorInicial, int meses, double taxaJuros, double valorEsperado) { //Arrange jurosClient.Setup(x => x.GetJuros()).Returns(Task.FromResult(taxaJuros)); var command = new CalculoCommand { ValorInicial = valorInicial, Meses = meses }; //Act var result = await handler.Calcular(command); //Assert result.Should().Be(valorEsperado); }
public async Task <double> Calcular(CalculoCommand command) { if (command == null) { throw new ArgumentNullException(nameof(command)); } if (command.ValorInicial <= 0) { throw new ArgumentOutOfRangeException("valorInicial", ValidationErrors.MaiorOuIgualZero); } if (command.Meses <= 0) { throw new ArgumentOutOfRangeException("meses", ValidationErrors.MaiorOuIgualZero); } logger.LogInformation("Obtendo júros da API 1"); var juros = await jurosClient.GetJuros(); logger.LogInformation("Júros carregado com uma taxa de {0}", juros); var valor = command.ValorInicial * Math.Pow(1 + juros, command.Meses); return((double)decimal.Round((decimal)valor, 2)); }