public async Task DeveRetornarSucesso_Quando_LancamentoForGerado() { //Given _clienteOrigem = new Cliente(); _clienteDestino = new Cliente(); _command = new CriarLancamento(_clienteOrigem.ContaCorrente.Numero, _clienteDestino.ContaCorrente.Numero, LancamentoTipo.Transferencia, 500); _clienteRepositorio.Setup(p => p.ObterPorContaAsync(_command.NumeroContaOrigem)).ReturnsAsync(_clienteOrigem); _clienteRepositorio.Setup(p => p.ObterPorContaAsync(_command.NumeroContaDestino)).ReturnsAsync(_clienteDestino); _clienteServico.Setup(p => p.SalvarAsync(_clienteOrigem)); _clienteServico.Setup(p => p.SalvarAsync(_clienteDestino)); _bus.Setup(p => p.Publish(It.IsAny <LancamentoCriado>(), It.IsAny <CancellationToken>())) .Callback <LancamentoCriado, CancellationToken>((re, ca) => { _lancamentoCriadoOrigem = re; _cancellationToken = ca; }); _bus.Setup(p => p.Publish(It.IsAny <LancamentoCriado>(), It.IsAny <CancellationToken>())) .Callback <LancamentoCriado, CancellationToken>((re, ca) => { _lancamentoCriadoDestino = re; _cancellationToken = ca; }); //When var resultado = await _handler.Handle(_command, _cancellationToken); //Then Assert.True(resultado.Sucesso); Assert.Equal("Lançamento gerado com sucesso.", resultado.Mensagem); decimal origemSaldoAtual = 1000; Assert.Equal(_clienteOrigem.ContaCorrente.Saldo, origemSaldoAtual); decimal destinoSaldoAtual = 2000; Assert.Equal(_clienteDestino.ContaCorrente.Saldo, destinoSaldoAtual); _clienteServico.Verify(p => p.SalvarAsync(It.IsAny <Cliente>()), Times.Exactly(2)); _bus.Verify(p => p.Publish(It.IsAny <LancamentoCriado>(), It.IsAny <CancellationToken>()), Times.Exactly(2)); }
public async Task DeveRetornarErro_Quando_LancamentoInicialFalhar() { //arrange var cliente = new Cliente(); _clienteServico.Setup(p => p.AdicionarAsync()).ReturnsAsync(cliente); var lancamentoCriado = new LancamentoCriado(cliente.Id, LancamentoTipo.DepositoInicial, cliente.ContaCorrente.Saldo, cliente.ContaCorrente.Numero, cliente.Nome, cliente.ContaCorrente.Numero, cliente.Nome, cliente.ContaCorrente.Saldo, TransacaoTipo.Credito); _bus.Setup(p => p.Publish(It.IsAny <LancamentoCriado>(), It.IsAny <CancellationToken>())).Throws <Exception>(); //act var resultado = await _handler.Handle(new CriarCliente(), _cancellationToken); //assert Assert.False(resultado.Sucesso); }
public async Task DeveRetornarSucesso_Quando_ClienteCriado() { //given var cliente = new Cliente(); _clienteServico.Setup(p => p.AdicionarAsync()).ReturnsAsync(cliente); var lancamentoCriado = new LancamentoCriado(cliente.Id, LancamentoTipo.DepositoInicial, cliente.ContaCorrente.Saldo, cliente.ContaCorrente.Numero, cliente.Nome, cliente.ContaCorrente.Numero, cliente.Nome, cliente.ContaCorrente.Saldo, TransacaoTipo.Credito); _bus .Setup(p => p.Publish(It.IsAny <LancamentoCriado>(), It.IsAny <CancellationToken>())) .Callback <LancamentoCriado, CancellationToken>((re, ca) => { lancamentoCriado = re; _cancellationToken = ca; }); //when var resultado = await _handler.Handle(new CriarCliente(), _cancellationToken); //then Assert.True(resultado.Sucesso); }