Example #1
0
        public void ContaOrigemTemSaldoMasLimiteInsuficiente_ChamadoComContasEValoresValidos_RetornarFalhaENaoAlterarSaldosELimites()
        {
            const decimal valorTransacaoAcimaDoLimiteInicial = 20500;
            const decimal contaCorrenteOrigemSaldoEsperado   = 30000;
            const decimal contaCorrenteOrigemLimiteEsperado  = 20000;
            const decimal contaCorrenteDestinoSaldoEsperado  = 10000;
            const decimal contaCorrenteDestinoLimiteEsperado = 20000;

            // Assert
            var contaCorrenteOrigem  = ContaCorrenteFactory.GetContaOrigemValida();
            var contaCorrenteDestino = ContaCorrenteFactory.ObterContaDestinoValida();

            contaCorrenteOrigem.Creditar(20000);

            var operacaoFinanceiraService = new OperacaoFinanceiraService();

            // Act
            var resultadoOperacao = operacaoFinanceiraService.Transferencia(contaCorrenteOrigem, contaCorrenteDestino, valorTransacaoAcimaDoLimiteInicial);

            // Assert
            Assert.False(resultadoOperacao);
            Assert.Equal(contaCorrenteOrigemSaldoEsperado, contaCorrenteOrigem.Saldo);
            Assert.Equal(contaCorrenteOrigemLimiteEsperado, contaCorrenteOrigem.Limite);
            Assert.Equal(contaCorrenteDestinoSaldoEsperado, contaCorrenteDestino.Saldo);
            Assert.Equal(contaCorrenteDestinoLimiteEsperado, contaCorrenteDestino.Limite);
        }
        public void ContaExistenteSemDocumentoNotificacaoNaoFuncionando_ChamadoDocumentoNull_RetornarFalha()
        {
            // Arrange
            var contaCorrente = ContaCorrenteFactory.GetContaOrigemSemDocumento();
            var respostaNotificacaoViewModel = RespostaNotificacaoViewModelFactory.ObterRespostaFalha();

            var contaCorrenteRepositoryMock = new Mock <IContaCorrenteRepository>();
            var notificacaoServiceMock      = new Mock <INotificacaoService>();

            contaCorrenteRepositoryMock.Setup(ccr => ccr.ObterPorDocumento(contaCorrente.Documento)).Returns((ContaCorrente)null);
            notificacaoServiceMock.Setup(ns => ns.Notificar(contaCorrente)).Returns(respostaNotificacaoViewModel);

            var contaCorrenteService = new ContaCorrenteService(notificacaoServiceMock.Object, contaCorrenteRepositoryMock.Object);

            // Act
            var resposta = contaCorrenteService.NotificarContaCorrente(contaCorrente.Documento);

            // Assert
            contaCorrenteRepositoryMock.Verify(ccr => ccr.ObterPorDocumento(contaCorrente.Documento), Times.Once);
            notificacaoServiceMock.Verify(ns => ns.Notificar(It.IsAny <ContaCorrente>()), Times.Never);

            Assert.False(resposta);
        }
Example #3
0
        public void ContaOrigemTemLimiteESaldoSuficiente_ChamadoComContasEValoresValidos_RetornarSucessoEDebitarDosSaldosELImiteCorretamente()
        {
            const decimal valorTransacao = 500;
            const decimal contaCorrenteOrigemSaldoEsperado   = 9500;
            const decimal contaCorrenteOrigemLimiteEsperado  = 19500;
            const decimal contaCorrenteDestinoSaldoEsperado  = 10500;
            const decimal contaCorrenteDestinoLimiteEsperado = 20000;

            // Arrange
            var contaCorrenteOrigem  = ContaCorrenteFactory.GetContaOrigemValida();
            var contaCorrenteDestino = ContaCorrenteFactory.ObterContaDestinoValida();

            var operacaoFinanceiraService = new OperacaoFinanceiraService();

            // Act
            var resultadoOperacao = operacaoFinanceiraService.Transferencia(contaCorrenteOrigem, contaCorrenteDestino, valorTransacao);

            // Assert
            Assert.True(resultadoOperacao);
            Assert.Equal(contaCorrenteOrigemSaldoEsperado, contaCorrenteOrigem.Saldo);
            Assert.Equal(contaCorrenteOrigemLimiteEsperado, contaCorrenteOrigem.Limite);
            Assert.Equal(contaCorrenteDestinoSaldoEsperado, contaCorrenteDestino.Saldo);
            Assert.Equal(contaCorrenteDestinoLimiteEsperado, contaCorrenteDestino.Limite);
        }
Example #4
0
 public OperacoesEmContaCorrenteSteps()
 {
     Conta = ContaCorrenteFactory.NovaContaCorrente(Guid.NewGuid(), "0001234", true);
 }