public void Processa(List <Boleto> boletos, Fatura fatura)
        {
            foreach (var boleto in boletos)
            {
                Pagamento pagamento = new Pagamento(boleto.Valor, MeioDePagamento.BOLETO);

                fatura.AdicionaPagamento(pagamento);
            }
        }
        public void DeveMarcarFaturaComoPagaCasoBoletoUnicoPagueTudo()
        {
            ProcessadorDeBoletos processador = new ProcessadorDeBoletos();

            Fatura        fatura  = new Fatura("Cliente", 150.0m);
            Boleto        b1      = new Boleto(150.1m);
            List <Boleto> boletos = new List <Boleto> {
                b1
            };

            processador.Processa(boletos, fatura);

            Assert.True(fatura.EstaPaga());
        }
        public void DeveProcessarPagamentoViaBoletoUnico()
        {
            ProcessadorDeBoletos processador = new ProcessadorDeBoletos();

            Fatura fatura = new Fatura("Cliente", 150.0m);
            Boleto b1     = new Boleto(150.0m);

            List <Boleto> boletos = new List <Boleto> {
                b1
            };

            processador.Processa(boletos, fatura);

            Assert.Equal(1, fatura.Pagamentos.Count());
            Assert.Equal(150.0m, fatura.Pagamentos.First().Valor);
        }
        public void DeveProcessarPagamentoViaMuitosBoletos()
        {
            ProcessadorDeBoletos processador = new ProcessadorDeBoletos();

            Fatura fatura = new Fatura("Cliente", 300.0m);
            Boleto b1     = new Boleto(100.0m);
            Boleto b2     = new Boleto(200.0m);

            List <Boleto> boletos = new List <Boleto> {
                b1, b2
            };

            processador.Processa(boletos, fatura);

            Assert.Equal(2, fatura.Pagamentos.Count());
            Assert.Equal(100.0m, fatura.Pagamentos.ElementAt(0).Valor);
            Assert.Equal(200.0m, fatura.Pagamentos.ElementAt(1).Valor);
        }