public async void NaoDevePermitirEfetuarTransferenciaSeUsuarioLogadoNaoForDonoDaConta() { IUsuarioAutenticado outroUsuarioAutenticado = Substitute.For <IUsuarioAutenticado>(); outroUsuarioAutenticado.Id.Returns(Guid.NewGuid()); var useCase = new TransferirUseCAse(contaRepository, outroUsuarioAutenticado); var contaId = Guid.NewGuid(); contaOrigemFake.Creditar(100); this.contaRepository.Obter(contaOrigemFake.NumeroAgencia, contaOrigemFake.NumeroConta, contaOrigemFake.DigitoConta).Returns(contaOrigemFake); this.contaRepository.Obter(contaDestinoFake.NumeroAgencia, contaDestinoFake.NumeroConta, contaDestinoFake.DigitoConta).Returns(contaDestinoFake); await Assert.ThrowsAsync <UsuarioLogadoNaoEhDonoDaContaException>(() => { return(useCase.Execute(contaOrigemFake.NumeroAgencia, contaOrigemFake.NumeroConta, contaOrigemFake.DigitoConta, contaDestinoFake.NumeroAgencia, contaDestinoFake.NumeroConta, contaDestinoFake.DigitoConta, 50)); }); }
public async void DeveDispararUmaExceptionSeValorDaTransferenciaForMenorOuIgualAZero() { var useCase = new TransferirUseCAse(contaRepository, usuarioAutenticado); var contaId = Guid.NewGuid(); contaOrigemFake.Creditar(100); this.contaRepository.Obter(contaOrigemFake.NumeroAgencia, contaOrigemFake.NumeroConta, contaOrigemFake.DigitoConta).Returns(contaOrigemFake); this.contaRepository.Obter(contaDestinoFake.NumeroAgencia, contaDestinoFake.NumeroConta, contaDestinoFake.DigitoConta).Returns(contaDestinoFake); await Assert.ThrowsAsync <ValorInvalidoException>(() => { return(useCase.Execute(contaOrigemFake.NumeroAgencia, contaOrigemFake.NumeroConta, contaOrigemFake.DigitoConta, contaDestinoFake.NumeroAgencia, contaDestinoFake.NumeroConta, contaDestinoFake.DigitoConta, 0)); }); await Assert.ThrowsAsync <ValorInvalidoException>(() => { return(useCase.Execute(contaOrigemFake.NumeroAgencia, contaOrigemFake.NumeroConta, contaOrigemFake.DigitoConta, contaDestinoFake.NumeroAgencia, contaDestinoFake.NumeroConta, contaDestinoFake.DigitoConta, -50)); }); }
public async void NaoDeveConseguirEfetuarUmaTransferenciaSeContaDeOrigemNaoExistir() { var useCase = new TransferirUseCAse(contaRepository, usuarioAutenticado); var contaId = Guid.NewGuid(); var ex = await Assert.ThrowsAsync <ContaNaoEncontradaException>(() => { return(useCase.Execute(contaOrigemFake.NumeroAgencia, contaOrigemFake.NumeroConta, contaOrigemFake.DigitoConta, contaDestinoFake.NumeroAgencia, contaDestinoFake.NumeroConta, contaDestinoFake.DigitoConta, 50)); }); Assert.Equal($"Conta '{contaOrigemFake.NumeroConta}-{contaOrigemFake.DigitoConta}' não encontrada na agência '{contaOrigemFake.NumeroAgencia}'.", ex.Message); }
public async void NaoDeveConseguirEfetuarUmaTransferenciaEntreAMesmaConta() { var useCase = new TransferirUseCAse(contaRepository, usuarioAutenticado); var contaId = Guid.NewGuid(); this.contaRepository.Obter(contaOrigemFake.NumeroAgencia, contaOrigemFake.NumeroConta, contaOrigemFake.DigitoConta).Returns(contaOrigemFake); this.contaRepository.Obter(contaDestinoFake.NumeroAgencia, contaDestinoFake.NumeroConta, contaDestinoFake.DigitoConta).Returns(contaOrigemFake); var ex = await Assert.ThrowsAsync <ContaCreditoIgualContaDebitoException>(() => { return(useCase.Execute(contaOrigemFake.NumeroAgencia, contaOrigemFake.NumeroConta, contaOrigemFake.DigitoConta, contaDestinoFake.NumeroAgencia, contaDestinoFake.NumeroConta, contaDestinoFake.DigitoConta, 50)); }); Assert.Equal(ex.Message, $"Conta de destino não pode ser a conta de origem."); }
public async void DeveConseguirFazerTransferenciaEntreContas() { var useCase = new TransferirUseCAse(contaRepository, usuarioAutenticado); var contaId = Guid.NewGuid(); contaOrigemFake.Creditar(100); this.contaRepository.Obter(contaOrigemFake.NumeroAgencia, contaOrigemFake.NumeroConta, contaOrigemFake.DigitoConta).Returns(contaOrigemFake); this.contaRepository.Obter(contaDestinoFake.NumeroAgencia, contaDestinoFake.NumeroConta, contaDestinoFake.DigitoConta).Returns(contaDestinoFake); var result = await useCase.Execute(contaOrigemFake.NumeroAgencia, contaOrigemFake.NumeroConta, contaOrigemFake.DigitoConta, contaDestinoFake.NumeroAgencia, contaDestinoFake.NumeroConta, contaDestinoFake.DigitoConta, 50); Assert.NotNull(result.ContaDestinoResult); Assert.NotNull(result.ContaDestinoResult); Assert.NotNull(result.TransacaoId.ToString()); Assert.Equal(50, result.ValorTransacao); }