public void RetornaResultResgate63Meses(decimal valorAplcado, Tipo tipo, decimal porcentagem, string dataCriacao) { ResultResgate resgateEsperado = new ResultResgate(); switch (tipo) { case Tipo.Mensal: resgateEsperado = new ResultResgate { IR = 1039.5m, LucroBruto = 6930.0m, LucroLiquido = 5890.5m, TotalReagate = 7890.5m }; break; case Tipo.Semestral: resgateEsperado = new ResultResgate { IR = 1039.5m, LucroBruto = 6930.0m, LucroLiquido = 5890.5m, TotalReagate = 7890.5m }; break; case Tipo.Anual: resgateEsperado = new ResultResgate { IR = 41.25m, LucroBruto = 275.0m, LucroLiquido = 233.75m, TotalReagate = 1233.75m }; break; default: break; } var meses = Meses.Contar(DateTime.Parse(dataCriacao)); ResultResgate resgate = Operacao.Resgate(tipo, meses, valorAplcado, porcentagem); Assert.Equal(resgateEsperado.LucroBruto, resgate.LucroBruto); Assert.Equal(resgateEsperado.LucroLiquido, resgate.LucroLiquido); Assert.Equal(resgateEsperado.TotalReagate, resgate.TotalReagate); }
public async Task <ActionResult> GetProduto(Guid id) { // Request - Status { 0 = Não é possivel o resgate, 1 = OK o resgate, 2 = resgate imcompleto , try { var produto = await _context.Produtos.FindAsync(id); var meses = Meses.Contar(produto.DataCriacao); if (meses >= 0) { //Chama a operação de Resgate do Produto ResultResgate result = Operacao.Resgate(produto.Tipo, meses, produto.ValorAplcado, produto.Porcentagem); produto.DataResgate = DateTime.Now; _context.SaveChanges(); return(Ok(new { Status = 1, result })); } else { return(NotFound(new { Status = 0, Message = "Não é possivel o resgate, pois data de resgate menor que data de aplicação" })); } ; } catch (Exception) { return(NotFound(new { Status = 2, Message = "Não é possivel o resgate, pois data de resgate menor que data de aplicação" })); } }