public void Deve_Retornar_Sucesso_Como_Falso_Quando_Parametro_Valor_For_Zero() { var requisicaoTransacao = new RequisicaoDeTransacao(); var response = _servicoTransacao.Efetuar(requisicaoTransacao); Assert.False(response.Sucesso); }
public void Deve_Retornar_Sucesso_Como_Verdadeiro_Efetuar_Transacao() { var requisicaoTransacao = new RequisicaoDeTransacao() { Valor = 100M, Origem = new RequisicaoDeContaCorrente() { Agencia = "0001", Numero = "123456", Digito = "7" }, Destino = new RequisicaoDeContaCorrente() { Agencia = "0001", Numero = "654321", Digito = "0" } }; _contaCorrenteRepositorio.Setup(x => x.Obter(It.Is <ContaCorrente>(x => x.Numero == "123456"))).Returns(new ContaCorrente("0001", "123456", "7") { Id = Guid.NewGuid().ToString(), Saldo = 500M }); _contaCorrenteRepositorio.Setup(x => x.Obter(It.Is <ContaCorrente>(x => x.Numero == "654321"))).Returns(new ContaCorrente("0001", "654321", "0") { Id = Guid.NewGuid().ToString(), Saldo = 200M }); _contaCorrenteRepositorio.Setup(x => x.AtualizarSaldo(It.Is <ContaCorrente>(x => x.Numero == "123456"))); _contaCorrenteRepositorio.Setup(x => x.AtualizarSaldo(It.Is <ContaCorrente>(x => x.Numero == "654321"))); var response = _servicoTransacao.Efetuar(requisicaoTransacao); Assert.True(response.Sucesso); }
public void Deve_Retornar_Sucesso_Como_Falso_Quando_Der_Alguma_Exececao_AO_Persistir_Saldo() { var requisicaoTransacao = new RequisicaoDeTransacao() { Valor = 100M, Origem = new RequisicaoDeContaCorrente() { Agencia = "0001", Numero = "123456", Digito = "7" }, Destino = new RequisicaoDeContaCorrente() { Agencia = "0001", Numero = "654321", Digito = "0" } }; _contaCorrenteRepositorio.Setup(x => x.Obter(It.Is <ContaCorrente>(x => x.Numero == "123456"))).Returns(new ContaCorrente("0001", "123456", "7") { Id = Guid.NewGuid().ToString(), Saldo = 500M }); _contaCorrenteRepositorio.Setup(x => x.Obter(It.Is <ContaCorrente>(x => x.Numero == "654321"))).Returns(new ContaCorrente("0001", "654321", "0") { Id = Guid.NewGuid().ToString(), Saldo = 200M }); _contaCorrenteRepositorio.Setup(x => x.AtualizarSaldo(It.IsAny <ContaCorrente>())).Throws(new Exception()); var response = _servicoTransacao.Efetuar(requisicaoTransacao); Assert.False(response.Sucesso); }
private ValidationResult ValidarObjetoDeRequisicao(RequisicaoDeTransacao transacao) { var validador = new ValidadorRequisicaoDeTransacao(); var validacao = validador.Validate(transacao); return(validacao); }
public void Deve_Retornar_Sucesso_Como_Falso_Quando_Nao_Encontar_ContaCorrente_Destino() { var requisicaoTransacao = new RequisicaoDeTransacao() { Valor = 100M, Origem = new RequisicaoDeContaCorrente() { Agencia = "0001", Numero = "123456", Digito = "7" }, Destino = new RequisicaoDeContaCorrente() { Agencia = "0001", Numero = "654321", Digito = "0" } }; _contaCorrenteRepositorio.Setup(x => x.Obter(It.Is <ContaCorrente>(x => x.Numero == "123456"))).Returns(new ContaCorrente("0001", "123456", "7") { Id = Guid.NewGuid(), Saldo = 500M }); _contaCorrenteRepositorio.Setup(x => x.Obter(It.Is <ContaCorrente>(x => x.Numero == "654321"))).Returns((ContaCorrente)null); var response = _servicoTransacao.Efetuar(requisicaoTransacao); Assert.False(response.Sucesso); }
public void Deve_Retornar_Sucesso_Como_Falso_Quando_Parametro_ContaCorrente_Origem_E_Destino_Forem_Nulas() { var requisicaoTransacao = new RequisicaoDeTransacao() { Valor = 100M }; var response = _servicoTransacao.Efetuar(requisicaoTransacao); Assert.False(response.Sucesso); }
public ActionResult Post(RequisicaoDeTransacao requisicao) { var resultado = _servico.Efetuar(requisicao); if (!resultado.Sucesso) { return(StatusCode(resultado.Erro.StatusCode, new RespostaErroPadrao(resultado.Erro))); } return(Ok(resultado.Objeto)); }
public void Deve_Retornar_Sucesso_Como_Falso_Quando_Parametro_ContaCorrente_Destino_For_Nula() { var requisicaoTransacao = new RequisicaoDeTransacao() { Valor = 100M, Origem = new RequisicaoDeContaCorrente() { Agencia = "0001", Numero = "123456", Digito = "7" }, }; var response = _servicoTransacao.Efetuar(requisicaoTransacao); Assert.False(response.Sucesso); }
public RespostaPadrao <RetornoTransacao> Efetuar(RequisicaoDeTransacao transacao) { RespostaPadrao <RetornoTransacao> resultado = new RespostaPadrao <RetornoTransacao>(); try { var validacao = ValidarObjetoDeRequisicao(transacao); if (!validacao.IsValid) { resultado.ConfigurarResposta(validacao); } else { var contaOrigem = new ContaCorrente(transacao.Origem.Agencia, transacao.Origem.Numero, transacao.Origem.Digito); var contaDestino = new ContaCorrente(transacao.Destino.Agencia, transacao.Destino.Numero, transacao.Destino.Digito); contaOrigem = ValidarContaCorrente(contaOrigem, "origem"); contaDestino = ValidarContaCorrente(contaDestino, "destino"); _movimentacao.Debitar(contaOrigem, transacao.Valor); _movimentacao.Creditar(contaDestino, transacao.Valor); resultado.ConfigurarResposta(true, new RetornoTransacao("Transação concluída com sucesso.")); } } catch (ExcecaoDeDominio ex) { resultado.ConfigurarResposta(ex); } catch (Exception ex) { resultado.ConfigurarResposta(ex); } return(resultado); }