public async void RetornaOkResultAplicarSegundaVezFundoValorAbaixoMinimo()
        {
            //Arrange
            var request = new MovimentoRequest()
            {
                IdFundo        = new Guid("825D324A-A903-4C59-AAAC-AB403F75CCCA"),
                ValorMovimento = 500,
                CpfCliente     = "87229420091",
                DataMovimento  = DateTime.Now
            };

            var requestSegundaAplicacao = new MovimentoRequest()
            {
                IdFundo        = new Guid("825D324A-A903-4C59-AAAC-AB403F75CCCA"),
                ValorMovimento = 140,
                CpfCliente     = "87229420091",
                DataMovimento  = DateTime.Now
            };

            //Act
            _ = await movimentoController.Aplicar(request);

            var resultado = await movimentoController.Aplicar(requestSegundaAplicacao);

            var okObjectResult = resultado.Result as OkObjectResult;

            //Assert
            Assert.IsType <OkObjectResult>(okObjectResult);
        }
Exemplo n.º 2
0
        public async Task <ActionResult <MovimentoResponse> > Aplicar([FromBody] MovimentoRequest request)
        {
            var fundo = await fundoService.ObterPorId(request.IdFundo);

            // validar se fundo existe
            if (fundo == null)
            {
                ModelState.AddModelError("IdFundo", "Fundo não encontrado!");

                return(NotFound(ModelState));
            }

            var movimento = await movimentoService.ObterPorIdFundoCpf(request.IdFundo, request.CpfCliente);

            if (movimento == null)
            {
                var valido = await movimentoService.ValidarValorMinimoInicial(request, fundo);

                if (!valido)
                {
                    ModelState.AddModelError("ValorMovimento", $"Valor mínimo da aplicação deve ser R$ {fundo.InvestimentoInicialMinimo}!");

                    return(BadRequest(ModelState));
                }
            }

            return(Ok(await movimentoService.Aplicar(request)));
        }
Exemplo n.º 3
0
        public async Task <ActionResult <MovimentoResponse> > Resgatar([FromBody] MovimentoRequest request)
        {
            var fundo = await fundoService.ObterPorId(request.IdFundo);

            // validar se fundo existe
            if (fundo == null)
            {
                ModelState.AddModelError("IdFundo", "Fundo não encontrado!");

                return(NotFound(ModelState));
            }

            return(Ok(await movimentoService.Resgatar(request)));
        }
Exemplo n.º 4
0
        public async Task <MovimentoResponse> Resgatar(MovimentoRequest movimento)
        {
            var entity = mapper.Map <Movimento>(movimento);

            entity.TipoMovimento = TipoMovimento.RESGATE;

            await movimentoRepository.Adicionar(entity);

            await unitOfWork.Salvar();

            var model = mapper.Map <MovimentoResponse>(entity);

            return(model);
        }
        public async void RetornaNotFoundAplicarFundoInexistente()
        {
            //Arrange
            var request = new MovimentoRequest()
            {
                IdFundo = new Guid("AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA")
            };

            //Act
            var resultado = await movimentoController.Aplicar(request);

            var notFoundResult = resultado.Result as NotFoundObjectResult;

            //Assert
            Assert.IsType <NotFoundObjectResult>(notFoundResult);
        }
        public async void RetornaBadRequestAplicarFundoValorAbaixoMinimo()
        {
            //Arrange
            var request = new MovimentoRequest()
            {
                IdFundo        = new Guid("8A576098-FD61-41D0-8FAA-AA6B6C0ED072"),
                ValorMovimento = 4000
            };

            //Act
            var resultado = await movimentoController.Aplicar(request);

            var notFoundResult = resultado.Result as BadRequestObjectResult;

            //Assert
            Assert.IsType <BadRequestObjectResult>(notFoundResult);
        }
        public async void RetornaFalsoValorMinimoInicial()
        {
            //Arrange
            var request = new MovimentoRequest()
            {
                ValorMovimento = 1000,
            };

            FundoResponse fundo = new FundoResponse()
            {
                InvestimentoInicialMinimo = 5000
            };

            //Act
            var resultado = await movimentoService.ValidarValorMinimoInicial(request, fundo);

            //Assert
            Assert.False(resultado);
        }
        public async void RetornaOkResultResgatarFundoExistente()
        {
            //Arrange
            var request = new MovimentoRequest()
            {
                IdFundo        = new Guid("413D6804-088C-430D-8652-71D3E5A34C61"),
                ValorMovimento = 20000,
                CpfCliente     = "87229420091",
                DataMovimento  = DateTime.Now
            };

            //Act
            var resultado = await movimentoController.Resgatar(request);

            var notFoundResult = resultado.Result as OkObjectResult;

            //Assert
            Assert.IsType <OkObjectResult>(notFoundResult);
        }
        public async void RetornaOkResultAplicarFundoValorAcimaMinimo()
        {
            //Arrange
            var request = new MovimentoRequest()
            {
                IdFundo        = new Guid("8A576098-FD61-41D0-8FAA-AA6B6C0ED072"),
                ValorMovimento = 6000,
                CpfCliente     = "87229420091",
                DataMovimento  = DateTime.Now
            };

            //Act
            var resultado = await movimentoController.Aplicar(request);

            var okObjectResult = resultado.Result as OkObjectResult;

            //Assert
            Assert.IsType <OkObjectResult>(okObjectResult);
        }
Exemplo n.º 10
0
 public async Task <bool> ValidarValorMinimoInicial(MovimentoRequest request, FundoResponse fundo)
 {
     return(await Task.FromResult(request.ValorMovimento >= fundo.InvestimentoInicialMinimo));
 }