예제 #1
0
        public void CalcularDivida_100EMesNegativo_Ok()
        {
            var interestParams = new DividaEntity {
                ValorInicial = 100, Meses = -1
            };

            var result = _mockDivida.Object.CalcularDivida(interestParams);
        }
예제 #2
0
    public void CalcularDivida_SemParametros_Zero()
    {
        var parameters = new DividaEntity();
        var resultado  = interestController.Get(parameters);
        var actual     = (resultado.Result as OkObjectResult).Value;
        var expected   = "0,00";

        Assert.Equal(expected, actual);
    }
예제 #3
0
        public void CalcularDivida_ValorInicialNegativoE5_Ok()
        {
            var interestParams = new DividaEntity {
                ValorInicial = -100, Meses = 5
            };
            var result   = _mockDivida.Object.CalcularDivida(interestParams);
            var expected = "-110,41";

            Assert.AreEqual(expected, result);
        }
예제 #4
0
        public void CalcularDivida_0E0_Ok()
        {
            var interestParams = new DividaEntity {
                ValorInicial = 0, Meses = 0
            };
            var result   = _mockDivida.Object.CalcularDivida(interestParams);
            var expected = "0,00";

            Assert.AreEqual(expected, result);
        }
예제 #5
0
    public void CalcularDivida_ValorInicialNegativoE5_BadRequest()
    {
        var parameters = new DividaEntity {
            Meses = 5, ValorInicial = -100
        };
        var resultado = interestController.Get(parameters);
        var actual    = (resultado.Result as OkObjectResult).Value;
        var expected  = "-110,41";

        Assert.Equal(expected, actual);
    }
예제 #6
0
    public void CalcularDivida_100EMesNegativo_BadRequest()
    {
        var parameters = new DividaEntity {
            Meses = -5, ValorInicial = 100
        };
        var resultado = interestController.Get(parameters);
        var actual    = (resultado.Result as BadRequestObjectResult).Value;
        var expected  = "Mês não pode ser negativo";

        Assert.Equal(expected, actual);
    }
예제 #7
0
        /// <summary>
        /// Method that calculates memory, compound interest, according to a formula: Valor Final = Valor Inicial * (1 + juros) ^ Tempo
        /// </summary>
        /// <param name="valorInicial">It's a decimal</param>
        /// <param name="meses">It's a integer</param>
        /// <returns>Calculation result, in decimal format with two places</returns>
        public string CalcularDivida(DividaEntity interestParams)
        {
            try
            {
                if (interestParams.Meses < 0)
                {
                    throw new ArgumentException("Mês não pode ser negativo");
                }

                var apiResult      = _juros.RetornarTaxaDeJuros();
                var valorDivida    = (double)(interestParams.ValorInicial * (decimal)Math.Pow(1 + apiResult, interestParams.Meses));
                var valorFormatado = valorDivida.ToString("F");

                return(valorFormatado);
            }
            catch (Exception e)
            {
                SimpleLog.Error("Message: " + e.Message + "; InnerException: " + e.InnerException);
                throw e;
            }
        }
        public ActionResult <string> Get([FromQuery] DividaEntity parameters)
        {
            if (parameters.Meses < 0)
            {
                var msg = "Mês não pode ser negativo";
                SimpleLog.Warning(msg);

                return(BadRequest(msg));
            }
            try
            {
                var result = _idivida.CalcularDivida(parameters);

                return(Ok(result));
            }
            catch (Exception e)
            {
                SimpleLog.Error("Message: " + e.Message + "; InnerException: " + e.InnerException);
                throw e;
            }
        }