public async Task Quando_Cadastro_Diferente_De_Conta_Corrente_Deve_Retornar_Erro()
        {
            //Arrange

            var contaCorrenteCommand = new CriarContaCorrenteCommand
            {
                Valor     = 100,
                TipoConta = TipoConta.Poupanca
            };

            var cancellationToken            = CancellationToken.None;
            var lancamentoRepositorioMock    = new Mock <ILancamentoRepositorio>(MockBehavior.Strict);
            var contaCorrenteRepositorioMock = new Mock <IContaCorrenteRepositorio>(MockBehavior.Strict);
            var mapperMock = new Mock <IMapper>();

            mapperMock.Setup(x => x.Map <ContaCorrente>(contaCorrenteCommand)).Returns(new ContaCorrente
            {
                TipoConta = TipoConta.Poupanca
            });

            var handler = new CriarContaCorrenteCommandHandler(contaCorrenteRepositorioMock.Object, mapperMock.Object,
                                                               lancamentoRepositorioMock.Object);

            // ACT

            var task = handler.Handle(contaCorrenteCommand, cancellationToken);

            // Assert

            await Assert.ThrowsAsync <PermitidoAbrirSomenteContaCorrenteException>(async() => await task);
        }
        public async Task Quando_Conta_Existe_Retornar_Erro()
        {
            //Arrange

            var contaCorrenteCommand = new CriarContaCorrenteCommand
            {
                Valor     = 100,
                TipoConta = TipoConta.Corrente,
                Agencia   = "001",
                DigitoVerificadorConta = 1,
                NumeroDocumento        = "40671663895",
                NomeLegal   = "Carlos Eduardo",
                NumeroConta = "001"
            };

            var cancellationToken            = CancellationToken.None;
            var lancamentoRepositorioMock    = new Mock <ILancamentoRepositorio>(MockBehavior.Strict);
            var contaCorrenteRepositorioMock = new Mock <IContaCorrenteRepositorio>(MockBehavior.Strict);
            var mapperMock = new Mock <IMapper>();

            mapperMock.Setup(x => x.Map <ContaCorrente>(contaCorrenteCommand)).Returns(new ContaCorrente
            {
                TipoConta = TipoConta.Poupanca
            });

            contaCorrenteRepositorioMock.Setup(x => x.ObterContaPorDadosBancariosAsync(contaCorrenteCommand.Agencia,
                                                                                       contaCorrenteCommand.NumeroConta,
                                                                                       contaCorrenteCommand.DigitoVerificadorConta,
                                                                                       contaCorrenteCommand.NumeroDocumento,
                                                                                       contaCorrenteCommand.TipoConta,
                                                                                       cancellationToken)).ReturnsAsync(new ContaCorrente());

            var handler = new CriarContaCorrenteCommandHandler(contaCorrenteRepositorioMock.Object, mapperMock.Object,
                                                               lancamentoRepositorioMock.Object);

            // ACT

            var task = handler.Handle(contaCorrenteCommand, cancellationToken);

            // Assert

            await Assert.ThrowsAsync <ContaCorrenteJaExisteException>(async() => await task);
        }