コード例 #1
0
        public async Task <ContaCorrente> Obter(Guid contaId)
        {
            var entity = await context.Contas.FirstOrDefaultAsync(s => s.Id.Equals(contaId));

            if (entity == null)
            {
                throw new ContaNaoEncontradaException(contaId);
            }

            List <ITransacao> transacoes = new List <ITransacao>();

            var creditos = await this.ObterCreditos(entity.Id);

            foreach (var credito in creditos)
            {
                transacoes.Add(Credito.Carregar(credito.Id, credito.TransacaoId, credito.ContaId, credito.DataTransacao, credito.Valor));
            }

            var debitos = await this.ObterDebitos(entity.Id);

            foreach (var debito in debitos)
            {
                transacoes.Add(Debito.Carregar(debito.Id, debito.TransacaoId, debito.ContaId, debito.DataTransacao, debito.Valor));
            }

            transacoes.OrderBy(s => s.DataTransacao);

            LancamentoCollection transacaoCollection = new LancamentoCollection();

            transacaoCollection.Adicionar(transacoes);

            var conta = ContaCorrente.Carregar(entity.Id, entity.ClienteId, entity.NumeroAgencia, entity.NumeroConta, entity.DigitoConta, transacaoCollection);

            return(conta);
        }
コード例 #2
0
        public void DeveRetornarNullCasoNaoTenhaNenhumTransacao()
        {
            LancamentoCollection transacoes = new LancamentoCollection();

            ITransacao transacao = transacoes.ObterUltimaTransacao();

            Assert.Null(transacao);
        }
コード例 #3
0
        public void DeveConseguirObterTodasAsTransacoes()
        {
            LancamentoCollection transacoes = new LancamentoCollection();

            transacoes.Adicionar(new Credito(Guid.NewGuid(), 50));

            transacoes.Adicionar(new Debito(Guid.NewGuid(), 50));

            Assert.Equal(2, transacoes.ObterTransacoes().Count);
        }
コード例 #4
0
        public void DeveConseguirAdicionarUmaTransacao()
        {
            LancamentoCollection transacoes = new LancamentoCollection();

            Guid  contaId = Guid.NewGuid();
            Valor valor   = 50;

            transacoes.Adicionar(new Credito(contaId, valor));

            ITransacao transacao = transacoes.ObterUltimaTransacao();

            Assert.Equal(contaId, transacao.ContaId);
            Assert.Equal(valor, transacao.Valor);
        }
コード例 #5
0
        public void DeveConseguirObterOSaldo()
        {
            LancamentoCollection transacoes = new LancamentoCollection();

            Guid contaId = Guid.NewGuid();

            transacoes.Adicionar(new Credito(contaId, 50));

            transacoes.Adicionar(new Credito(contaId, 50));

            transacoes.Adicionar(new Debito(contaId, 9.9));

            Valor saldoEsperado = 90.1;

            Assert.Equal(saldoEsperado, transacoes.ObterSaldo());
        }
コード例 #6
0
        public void DeveConseguirCarregarUmaConta()
        {
            Guid contaId   = Guid.NewGuid();
            Guid clienteId = Guid.NewGuid();
            LancamentoCollection transacoes = new LancamentoCollection();

            transacoes.Adicionar(new Credito(contaId, 50));

            ContaCorrente conta = ContaCorrente.Carregar(contaId, clienteId, "123", "45678", "9", transacoes);

            Assert.Equal(contaId, conta.Id);

            Assert.Equal(clienteId, conta.ClienteId);

            Assert.Equal("123", conta.NumeroAgencia.ToString());

            Assert.Equal("45678", conta.NumeroConta.ToString());

            Assert.Equal("9", conta.DigitoConta.ToString());

            Assert.Equal(50, conta.ObterSaldo());
        }