public void Transferencia_transacoesBancarias_Saldo_Zerado()
        {
            RepositorioTransacaoBancaria.Limpar();
            ContaCorrente conta        = new ContaCorrente();
            ContaCorrente contaDestino = new ContaCorrente();

            Assert.Throws <InvalidOperationException>(() => ServicoConta.ExecutarTransferencia(conta, contaDestino, 500));
        }
        public void Transferencia_transacoesBancarias_ContaEspecial_SemLimite()
        {
            RepositorioTransacaoBancaria.Limpar();
            ContaEspecial conta = new ContaEspecial();

            conta.LimiteCredito = 7000;

            conta.Credita(1000);

            ContaCorrente contaDestino = new ContaCorrente();

            Assert.Throws <InvalidOperationException>(() => ServicoConta.ExecutarTransferencia(conta, contaDestino, 90000));
        }
        public void Transferencia_transacoesBancarias_ContaEspecial()
        {
            RepositorioTransacaoBancaria.Limpar();
            ContaEspecial conta = new ContaEspecial();

            conta.LimiteCredito = 7000;

            ContaCorrente contaDestino = new ContaCorrente();

            ServicoConta.ExecutarTransferencia(conta, contaDestino, 500);

            Assert.AreEqual(-500, conta.Saldo);
            Assert.AreEqual(500, contaDestino.Saldo);
        }
        public void Transferencia_transacoesBancarias()
        {
            RepositorioTransacaoBancaria.Limpar();
            ContaCorrente conta = new ContaCorrente();

            conta.Credita(1000);

            ContaCorrente contaDestino = new ContaCorrente();

            var transf = ServicoConta.ExecutarTransferencia(conta, contaDestino, 500);

            Assert.IsNotNull(transf.Comprovante);
            Assert.AreEqual(500, conta.Saldo);
            Assert.AreEqual(500, contaDestino.Saldo);
        }