public void QuandoAlgumAtributoNaoForInformadoCorretamenteRetornaFalse(LancamentoOV lancamentoOV) { //Arrange var mock = new Mock <IRepositorioDeContaCorrente>(); if (lancamentoOV.ContaOrigem == "12") { mock.Setup(x => x.Obter(lancamentoOV.ContaOrigem)) .ReturnsAsync(lancamentoOV.ContaOrigem == "12" ? new ContaCorrente() { NumeroDaConta = "12" } : null); } if (lancamentoOV.ContaDestino == "13") { mock.Setup(x => x.Obter(lancamentoOV.ContaDestino)) .ReturnsAsync(lancamentoOV.ContaDestino == "13" ? new ContaCorrente() { NumeroDaConta = "13" } : null); } // Act var resultado = ValidarLancamento.Validar(lancamentoOV, mock.Object); // Assert Assert.False(resultado); }
public void QuandoTodosOsAtributosForamInformadosCorretamente() { //Arrange var lancamentoOV = new LancamentoOV() { ContaOrigem = "12", ContaDestino = "13", Valor = 1 }; var mock = new Mock <IRepositorioDeContaCorrente>(); mock.Setup(x => x.Obter(lancamentoOV.ContaOrigem)) .ReturnsAsync(new ContaCorrente() { NumeroDaConta = "12" }); mock.Setup(x => x.Obter(lancamentoOV.ContaDestino)) .ReturnsAsync(new ContaCorrente() { NumeroDaConta = "13" }); // Act var resultado = ValidarLancamento.Validar(lancamentoOV, mock.Object); // Assert Assert.True(resultado); }
public async Task <bool> Adicionar(LancamentoOV lancamentoOV) { try { if (!ValidarLancamento.Validar(lancamentoOV, _repositorioDeContaCorrente)) { return(false); } var lancamento = new Lancamento { ContaOrigem = lancamentoOV.ContaOrigem, ContaDestino = lancamentoOV.ContaDestino, Valor = lancamentoOV.Valor }; // inverte a operacao caso o valor seja negativo if (lancamentoOV.Valor < 0) { lancamento.ContaOrigem = lancamentoOV.ContaDestino; lancamento.ContaDestino = lancamentoOV.ContaOrigem; lancamento.Valor *= (-1); } // Alterar o saldo da Origem var contaOrigem = await _repositorioDeContaCorrente.Obter(lancamento.ContaOrigem); contaOrigem.SaldoDaConta -= lancamento.Valor; _repositorioDeContaCorrente.Alterar(contaOrigem); // Alterar o saldo do destino var contaDestino = await _repositorioDeContaCorrente.Obter(lancamento.ContaDestino); contaDestino.SaldoDaConta += lancamento.Valor; _repositorioDeContaCorrente.Alterar(contaDestino); // Adicionar Lancamento _repositorioDeLancamento.Adicionar(lancamento); return(true); } catch (Exception ex) { throw ex; } }