Exemplo n.º 1
0
        public async void TestValidateDuplicateAccountDuplicateError()
        {
            var contaRequest = new ContaRequest
            {
                Cliente = new ClienteRequest
                {
                    Email = "*****@*****.**",
                    Nome  = "Renan",
                    Id    = "ABC"
                },
                EContaTipo = EContaTipo.Corrente,
                Id         = "0",
                Numero     = "0102030-1"
            };

            _contaRepository.GetByFilterAsync(null).ReturnsForAnyArgs(new List <Conta> {
                new Conta {
                    Id = "ABC", Cliente = new Cliente {
                        Nome = "Renan"
                    }
                }
            });
            var result = await _contaApp.ValidateDuplicateAccountNumberAsync(contaRequest);

            Assert.True(result.StatusCode == HttpStatusCode.BadRequest);
            Assert.Contains(result.Failures, x => x.ErrorMessage == "The account number is already in use.");
            Assert.True(!result.Value);
        }
Exemplo n.º 2
0
        public async Task <ActionResult <ContaResponse> > Adicionar(ContaRequest conta)
        {
            if (!ModelState.IsValid)
            {
                return(CustomResponse(ModelState));
            }

            return(CustomResponse(_mapper.Map <ContaResponse>(await _contaService.Adicionar(_mapper.Map <Conta>(conta)))));
        }
Exemplo n.º 3
0
        public async void TestReplaceContaPredicateNullError()
        {
            var objConta = new ContaRequest()
            {
                Id = "ABC"
            };

            var result = await _contaApp.ReplaceOneAsync(null, objConta, null);

            Assert.True(result.StatusCode == HttpStatusCode.BadRequest);
            Assert.Contains(result.Failures, x => x.ErrorMessage == "Filter definition can't be null.");
            Assert.True(result.Value == null);
        }
Exemplo n.º 4
0
        public async Task <ActionResult> Post([FromBody] ContaRequest contaRequest, CancellationToken cancellationToken)
        {
            var validateResult = await _contaAppService.ValidateDuplicateAccountNumberAsync(contaRequest);

            if (!validateResult.StatusCode.IsSuccessStatusCode())
            {
                return(StatusCode((int)validateResult.StatusCode, validateResult));
            }

            var result = await _contaAppService.InsertOneAsync <ContaRequest>(contaRequest, cancellationToken);

            return
                (StatusCode((int)result.StatusCode, result));
        }
Exemplo n.º 5
0
        public async void TestCreateContaClienteNullError()
        {
            var objConta = new ContaRequest()
            {
                Id      = "ABC",
                Numero  = "0102030-10",
                Cliente = null
            };
            var result = await _contaApp.InsertOneAsync(objConta, _cancellationToken);

            Assert.Contains(result.Failures, x => x.ErrorMessage == "Cliente can't be null.");
            Assert.True(result.StatusCode == HttpStatusCode.BadRequest);
            Assert.True(string.IsNullOrWhiteSpace(result.Value));
        }
Exemplo n.º 6
0
        public async Task <ActionResult> Put(string id, [FromBody] ContaRequest contaRequest, CancellationToken cancellationToken)
        {
            var validateResult = await _contaAppService.ValidateDuplicateAccountNumberAsync(contaRequest);

            if (!validateResult.StatusCode.IsSuccessStatusCode())
            {
                return(StatusCode((int)validateResult.StatusCode, validateResult));
            }

            contaRequest.Id = id;
            var result = await _contaAppService.ReplaceOneAsync <ContaRequest>(x => x.Id == id, contaRequest, null);

            return
                (StatusCode((int)result.StatusCode, result));
        }
Exemplo n.º 7
0
        public async Task <Result <bool> > ValidateDuplicateAccountNumberAsync(ContaRequest contaRequest)
        {
            if (contaRequest == null)
            {
                return(new Result <bool>(false, HttpStatusCode.BadRequest, Failure.GenerateOneFailure("Object is null.")));
            }

            var account = await _contaService.GetByFilterAsync <ContaResponse>(x => x.Numero == contaRequest.Numero && x.Id != contaRequest.Id);

            if (account.Value?.Count > 0)
            {
                return(new Result <bool>(false, HttpStatusCode.BadRequest, Failure.GenerateOneFailure("The account number is already in use.")));
            }

            return(new Result <bool>(true, HttpStatusCode.OK, null));
        }
Exemplo n.º 8
0
        public async void TestCreateContaNumeroEmptyError()
        {
            var objConta = new ContaRequest()
            {
                Id      = "ABC",
                Numero  = "",
                Cliente = new ClienteRequest
                {
                    Id    = "ABC",
                    Nome  = "Renan",
                    Email = "*****@*****.**"
                }
            };
            var result = await _contaApp.InsertOneAsync(objConta, _cancellationToken);

            Assert.Contains(result.Failures, x => x.ErrorMessage == "Numero can't be null.");
            Assert.True(result.StatusCode == HttpStatusCode.BadRequest);
            Assert.True(string.IsNullOrWhiteSpace(result.Value));
        }
Exemplo n.º 9
0
        public async void TestUpdateAccountOk()
        {
            var conta = new ContaRequest
            {
                Id         = "ABC",
                Numero     = "0102030-10",
                EContaTipo = EContaTipo.Corrente,
                Cliente    = new ClienteRequest
                {
                    Email = "*****@*****.**",
                    Nome  = "Renan Ranciaro"
                }
            };
            var result = await _contaApp.UpdateAccountAsync(conta);

            Assert.True(result.StatusCode == HttpStatusCode.OK);
            Assert.True(result.Failures == null);
            Assert.True(result.Value);
        }
Exemplo n.º 10
0
        public async void TestUpdateAccountNotFoundError()
        {
            var conta = new ContaRequest
            {
                Id         = "0",
                Numero     = "0102030-10",
                EContaTipo = EContaTipo.Corrente,
                Cliente    = new ClienteRequest
                {
                    Email = "*****@*****.**",
                    Nome  = "Renan Ranciaro"
                }
            };
            var result = await _contaApp.UpdateAccountAsync(conta);

            Assert.True(result.StatusCode == HttpStatusCode.NotFound);
            Assert.Contains(result.Failures, x => x.ErrorMessage == "Cannot update account.");
            Assert.True(!result.Value);
        }
Exemplo n.º 11
0
        public async void TestCreateContaOk()
        {
            var objConta = new ContaRequest()
            {
                Id      = "ABC",
                Numero  = "0102030-10",
                Cliente = new ClienteRequest
                {
                    Id    = "ABC",
                    Nome  = "Renan",
                    Email = "*****@*****.**"
                }
            };
            var result = await _contaApp.InsertOneAsync(objConta, _cancellationToken);

            Assert.True(result.Failures == null);
            Assert.True(result.StatusCode == HttpStatusCode.Created);
            Assert.True(result.Value == "1");
        }
Exemplo n.º 12
0
        public async void TestReplaceContaOk()
        {
            var objConta = new ContaRequest()
            {
                Id      = "ABC",
                Numero  = "0102030-10",
                Cliente = new ClienteRequest
                {
                    Id    = "ABC",
                    Nome  = "Renan",
                    Email = "*****@*****.**"
                }
            };
            var result = await _contaApp.ReplaceOneAsync(x => x.Id == "ABC", objConta, null);

            Assert.True(result.StatusCode == HttpStatusCode.OK);
            Assert.True(result.Failures == null);
            Assert.True(result.Value == "1");
        }
Exemplo n.º 13
0
        public async void TestReplaceContaClienteEmailEmptyError()
        {
            var objConta = new ContaRequest()
            {
                Id      = "ABC",
                Numero  = "0102030-10",
                Cliente = new ClienteRequest
                {
                    Id    = "ABC",
                    Nome  = "Renan",
                    Email = ""
                }
            };
            var result = await _contaApp.ReplaceOneAsync(x => x.Id == "ABC", objConta, null);

            Assert.Contains(result.Failures, x => x.ErrorMessage == "Cliente.Email can't be null.");
            Assert.True(result.StatusCode == HttpStatusCode.BadRequest);
            Assert.True(string.IsNullOrWhiteSpace(result.Value));
        }
Exemplo n.º 14
0
        public async void TestReplaceContaErrorNotFound()
        {
            var objConta = new ContaRequest
            {
                Id      = "0",
                Numero  = "0102030-10",
                Cliente = new ClienteRequest
                {
                    Id    = "ABC",
                    Nome  = "Renan",
                    Email = "*****@*****.**"
                }
            };
            var result = await _contaApp.ReplaceOneAsync(x => x.Id == "0", objConta, null);

            Assert.True(result.StatusCode == HttpStatusCode.BadRequest);
            Assert.Contains(result.Failures, x => x.ErrorMessage == "Conta not found.");
            Assert.True(string.IsNullOrWhiteSpace(result.Value));
        }
Exemplo n.º 15
0
        public async void TestCreateContaClienteEContaTipoInvalidError()
        {
            var objConta = new ContaRequest()
            {
                Id         = "ABC",
                Numero     = "0102030-10",
                EContaTipo = (EContaTipo)999,
                Cliente    = new ClienteRequest
                {
                    Id    = "ABC",
                    Nome  = "Renan",
                    Email = "*****@*****.**"
                }
            };
            var result = await _contaApp.InsertOneAsync(objConta, _cancellationToken);

            Assert.Contains(result.Failures, x => x.ErrorMessage == "EContaTipo is invalid.");
            Assert.True(result.StatusCode == HttpStatusCode.BadRequest);
            Assert.True(string.IsNullOrWhiteSpace(result.Value));
        }
Exemplo n.º 16
0
        public async void TestValidateDuplicateAccountNumberOk()
        {
            var contaRequest = new ContaRequest
            {
                Cliente = new ClienteRequest
                {
                    Email = "*****@*****.**",
                    Nome  = "Renan",
                    Id    = "ABC"
                },
                EContaTipo = EContaTipo.Corrente,
                Id         = "0",
                Numero     = "0102030-1"
            };

            _contaRepository.GetByFilterAsync(null).ReturnsForAnyArgs((ICollection <Conta>)null);
            var result = await _contaApp.ValidateDuplicateAccountNumberAsync(contaRequest);

            Assert.True(result.StatusCode == HttpStatusCode.OK);
            Assert.True(result.Failures == null);
            Assert.True(result.Value);
        }
Exemplo n.º 17
0
        public ContaResponse CriaConta(ContaRequest contaRequest)
        {
            ContaResponse retorno;

            try
            {
                var pessoa = _pessoaRepository.GetById(contaRequest.PessoaId);

                Ensure.NotNull(pessoa, nameof(pessoa));

                var conta = ContaRequest.Cria(contaRequest, pessoa);
                conta = _contaRepository.Add(conta);

                retorno = new ContaResponse(conta);
            }
            catch (Exception ex)
            {
                _logFactory.Log().Error($"Erro ao CriaConta. {ex.Message} - {ex.StackTrace}");
                throw;
            }

            return(retorno);
        }
Exemplo n.º 18
0
        public async Task <Result <bool> > UpdateAccountAsync(ContaRequest conta)
        {
            if (conta == null)
            {
                return(new Result <bool>(false, HttpStatusCode.BadRequest, Failure.GenerateOneFailure("Object is null.")));
            }

            var objConta = _mapper.Map <ContaRequest, Conta>(conta);

            if (!objConta.IsValid(EValidationStage.Replace))
            {
                return(new Result <bool>(false, HttpStatusCode.BadRequest, objConta.ValidationErrors));
            }

            var result = await _contaRepository.UpdateAccountAsync(objConta);

            if (!result)
            {
                return(new Result <bool>(false, HttpStatusCode.NotFound, Failure.GenerateOneFailure("Cannot update account.")));
            }

            return(new Result <bool>(true, HttpStatusCode.OK, null));
        }
Exemplo n.º 19
0
        public IHttpActionResult PostCriaConta([FromUri] int pessoaId, [FromBody] ContaRequest input)
        {
            var conta = _contaService.CriaConta(input);

            return(Ok(conta));
        }
Exemplo n.º 20
0
 public async Task <Result <bool> > UpdateAccountAsync(ContaRequest conta)
 {
     return
         (await _contaService.UpdateAccountAsync(conta));
 }