예제 #1
0
        public void TransacaoAprovada()
        {
            Card    card           = PrepararTeste();
            decimal saldo          = card.Client.Saldo;
            int     totalTransacao = card.Transaction.Count;

            decimal valor    = 1;
            int     tipo     = 1;
            int     parcelas = 1;


            var authenticate = authenticationService.Authencticate(card.Number, SENHA);

            Assert.AreEqual(authenticate.RetornoTransacao, RetornoTransacao.AUTENTICADO);
            Assert.IsNotNull(authenticate.Guid);

            RetornoTransacao retorno = transactionService.RealizarTransacao(NUMERO_CARTAO, valor, tipo, parcelas, authenticate.Guid);

            card = PrepararTeste();

            Assert.AreEqual(retorno, RetornoTransacao.APROVADO);
            Assert.AreEqual(saldo - valor, card.Client.Saldo);
            Assert.AreEqual(totalTransacao + 1, card.Transaction.Count);
            Assert.AreEqual(valor, card.Transaction.Last().Amount);
        }
예제 #2
0
        public void TesteValorInvalido()
        {
            var card = PrepararTeste();

            var authenticate = authenticationService.Authencticate(card.Number, SENHA);

            Assert.AreEqual(authenticate.RetornoTransacao, RetornoTransacao.AUTENTICADO);
            Assert.IsNotNull(authenticate.Guid);

            RetornoTransacao retorno = transactionService.RealizarTransacao(card.Number, Convert.ToDecimal(VALOR_INVALIDO), 1, 1, authenticate.Guid);

            Assert.AreEqual(retorno, RetornoTransacao.VALOR_INVALIDO);
        }
예제 #3
0
        public void TesteSaldoInsuficiente()
        {
            var card     = PrepararTeste();
            int tipo     = 1;
            int parcelas = 1;


            var authenticate = authenticationService.Authencticate(card.Number, SENHA);

            Assert.AreEqual(authenticate.RetornoTransacao, RetornoTransacao.AUTENTICADO);
            Assert.IsNotNull(authenticate.Guid);
            RetornoTransacao retorno = transactionService.RealizarTransacao(card.Number, card.Client.Saldo + 1, tipo, parcelas, authenticate.Guid);

            Assert.AreEqual(retorno, RetornoTransacao.SALDO_INSUFICIENTE);
        }
예제 #4
0
        public AuthenticateDTO Authencticate(string numeroCartao, string senha)
        {
            StoneEntities db = new StoneEntities();

            Card card = db.Card.FirstOrDefault(f => f.Number == numeroCartao);

            if (card != null)
            {
                RetornoTransacao retornoTransacao = card.ValidarSenha(senha);
                db.SaveChanges();
                return(new AuthenticateDTO(retornoTransacao, retornoTransacao == RetornoTransacao.AUTENTICADO ? card.guid : null));
            }


            return(new AuthenticateDTO(RetornoTransacao.TRANSACAO_NEGADA, null));
        }
예제 #5
0
 public RetornoTransacao RealizarTransacao(string cartao, decimal valor, int tipo, int parcelas, string guid)
 {
     try
     {
         StoneEntities db   = new StoneEntities();
         Card          card = db.Card.FirstOrDefault(f => f.Number == cartao);
         if (card != null)
         {
             RetornoTransacao retorno = card.ValidarTransacao(valor, tipo, parcelas, guid);
             if (retorno == RetornoTransacao.APROVADO)
             {
                 db.SaveChanges();
             }
             return(retorno);
         }
         return(RetornoTransacao.TRANSACAO_NEGADA);
     }
     catch
     {
         return(RetornoTransacao.TRANSACAO_NEGADA);
     }
 }
예제 #6
0
 public void QuandoForRealizadoODepositoDeUmValor(Table table)
 {
     Deposito         = decimal.Parse(table.Rows[0][0]);
     RetornoTransacao = Conta.Depositar(Deposito);
 }
예제 #7
0
 public AuthenticateDTO(RetornoTransacao retornoTransacao, string guid)
 {
     RetornoTransacao = retornoTransacao;
     Guid             = guid;
 }