示例#1
0
        public void SaqueService_RealizaSaque_Saca300ComSucesso()
        {
            // Arrange
            var configuracaoMock = new Mock <IConfiguracaoSaqueService>();

            configuracaoMock.Setup(o => o.IniciaCaixaEletronico()).Returns(new ConfiguracaoSaque
            {
                NotasDisponiveis = TipoNota.Dois | TipoNota.Cinco | TipoNota.Dez | TipoNota.Vinte | TipoNota.Cinquenta | TipoNota.Cem,
                ValorLimiteSaque = 1500
            });

            SaqueService saqueService = new SaqueService(configuracaoMock.Object);

            // Act
            var resultado = saqueService.RealizaSaque(new SaqueDTO {
                ValorRequisitado = 300
            });

            // Assert
            Assert.AreEqual(resultado[TipoNota.Cem], 3);
            Assert.AreEqual(resultado[TipoNota.Cinquenta], 0);
            Assert.AreEqual(resultado[TipoNota.Vinte], 0);
            Assert.AreEqual(resultado[TipoNota.Dez], 0);
            Assert.AreEqual(resultado[TipoNota.Cinco], 0);
            Assert.AreEqual(resultado[TipoNota.Dois], 0);
        }
示例#2
0
        public void Teste_Saque_atualiza_Saldo_ContaCorrenteNormal()
        {
            var conta = new ContaCorrenteNormal();

            conta.Creditar(1000);
            conta.Numero = "222";

            SaqueService ss = new SaqueService(conta, 100);

            ss.Executar();

            decimal expected = 900.00m;
            var     actual   = conta.Saldo;


            //testa atualização do saldo
            Assert.AreEqual(expected, actual);
        }
示例#3
0
        public void Teste_Saque_atualiza_saldo_ContaCorrenteEspecial()
        {
            var conta = new ContaCorrenteEspecial();

            conta.Situacao = ContaCorrenteEstado.Bloqueada;
            conta.Creditar(0);
            conta.LimiteDeCredito = 300;
            conta.Numero          = "333";

            SaqueService ss = new SaqueService(conta, 100);

            ss.Executar();

            decimal expected = -200.00m;
            var     actual   = conta.Saldo;

            //testa atualização do saldo
            Assert.AreEqual(expected, actual);
        }
示例#4
0
        public void SaqueService_ValorRequisitadoValido_SacaValorInvalidoEmNotasDeDois()
        {
            // Arrange
            var configuracaoMock = new Mock <IConfiguracaoSaqueService>();

            configuracaoMock.Setup(o => o.IniciaCaixaEletronico()).Returns(new ConfiguracaoSaque
            {
                NotasDisponiveis = TipoNota.Dois | TipoNota.Cinco | TipoNota.Dez | TipoNota.Vinte | TipoNota.Cinquenta | TipoNota.Cem,
                ValorLimiteSaque = 1500
            });

            SaqueService saqueService = new SaqueService(configuracaoMock.Object);

            // Act
            var resultado = saqueService.ValorRequisitadoValido(new SaqueDTO {
                ValorRequisitado = 3
            });

            // Assert
            Assert.IsFalse(resultado);
        }
示例#5
0
        public void SaqueService_EstaNoLimite_SacaValorMenorQueLimite()
        {
            // Arrange
            var configuracaoMock = new Mock <IConfiguracaoSaqueService>();

            configuracaoMock.Setup(o => o.IniciaCaixaEletronico()).Returns(new ConfiguracaoSaque
            {
                NotasDisponiveis = TipoNota.Dois | TipoNota.Cinco | TipoNota.Dez | TipoNota.Vinte | TipoNota.Cinquenta | TipoNota.Cem,
                ValorLimiteSaque = 1500
            });

            SaqueService saqueService = new SaqueService(configuracaoMock.Object);

            // Act
            var resultado = saqueService.EstaNoLimite(new SaqueDTO {
                ValorRequisitado = 1499
            });

            // Assert
            Assert.IsTrue(resultado);
        }
示例#6
0
        public IActionResult Index(SaqueViewModel saqueViewModel)
        {
            SaqueService saqueService = new SaqueService();

            SaqueDTO saqueDTO = new SaqueDTO {
                ValorRequisitado = saqueViewModel.ValorRequisitado
            };

            if (!saqueService.EstaNoLimite(saqueDTO))
            {
                saqueViewModel.Erro = @"O valor informado passou do limite de R$ 1.500,00.";
                return(View(saqueViewModel));
            }

            if (!saqueService.ValorRequisitadoValido(saqueDTO))
            {
                saqueViewModel.Erro = @"O valor informado é inválido. Favor informar um valor múltiplo de 2, 5, 10, 20, 50 ou 100.";
                return(View(saqueViewModel));
            }

            saqueViewModel.ValoresSaque = saqueService.RealizaSaque(saqueDTO);

            return(View(saqueViewModel));
        }