public void DeveJogarParaOProximoDiaUtilCasoDomingo()
        {
            var leilaoDao    = new Mock <LeilaoDaoFalso>();
            var avaliador    = new Avaliador();
            var pagamentoDao = new Mock <IPagamentoDao>();
            var relogio      = new Mock <IRelogio>();

            relogio.Setup(r => r.hoje()).Returns(new DateTime(2018, 3, 11));
            var leilao1 = new Leilao("Playstation");

            leilao1.naData(new DateTime(1999, 5, 5));
            leilao1.propoe(new Lance(new Usuario("renan"), 500));
            leilao1.propoe(new Lance(new Usuario("Felipe"), 600));
            var listaDeLeiloes = new List <Leilao> {
                leilao1
            };

            leilaoDao.Setup(l => l.encerrados()).Returns(listaDeLeiloes);

            Pagamento pagamentoCapturado = null;

            pagamentoDao.Setup(p => p.Salvar(It.IsAny <Pagamento>())).Callback <Pagamento>(c => pagamentoCapturado = c);

            var gerador = new GeradorDePagamento(leilaoDao.Object, avaliador, pagamentoDao.Object, relogio.Object);

            gerador.gera();

            Assert.AreEqual(DayOfWeek.Monday, pagamentoCapturado.data.DayOfWeek);
        }
        public void DeveGerarPagamentoParaLeilaoEncerrado()
        {
            var leilaoDao    = new Mock <LeilaoDaoFalso>();
            var avaliador    = new Avaliador();
            var pagamentoDao = new Mock <IPagamentoDao>();

            var leilao1 = new Leilao("Playstation");

            leilao1.naData(new DateTime(1999, 5, 5));
            leilao1.propoe(new Lance(new Usuario("renan"), 500));
            leilao1.propoe(new Lance(new Usuario("Felipe"), 600));
            var listaDeLeiloes = new List <Leilao> {
                leilao1
            };

            leilaoDao.Setup(l => l.encerrados()).Returns(listaDeLeiloes);

            Pagamento pagamentoCapturado = null;

            pagamentoDao.Setup(p => p.Salvar(It.IsAny <Pagamento>())).Callback <Pagamento>(c => pagamentoCapturado = c);

            var gerador = new GeradorDePagamento(leilaoDao.Object, avaliador, pagamentoDao.Object);

            gerador.gera();

            Assert.AreEqual(600, pagamentoCapturado.valor);
        }
        public void Should_lunch_for_next_util_day_if_tody_is_sunday()
        {
            //Given
            var leilaoDao    = new Mock <LeilaoDaoFalso>();
            var pagaemntoDao = new Mock <PagamentoDao>();
            var relogio      = new Mock <Relogio>();

            Leilao leilao1 = new Leilao("Playstation");

            leilao1.naData(new DateTime(1999, 5, 5));

            //When
            leilao1.propoe(new Lance(new Usuario("Renan"), 500));
            leilao1.propoe(new Lance(new Usuario("Felipe"), 600));

            List <Leilao> listaDeLeiloes = new List <Leilao>();

            listaDeLeiloes.Add(leilao1);

            relogio.Setup(r => r.Hoje())
            .Returns(new DateTime(2017, 2, 19));

            leilaoDao.Setup(l => l.Encerrados())
            .Returns(listaDeLeiloes);

            Pagamento pagamentoCapiturado = null;

            pagaemntoDao.Setup(p => p.Salvar(It.IsAny <Pagamento>()))
            .Callback <Pagamento>(r => pagamentoCapiturado = r);

            GeradorDePagamento gerador = new GeradorDePagamento(leilaoDao.Object, new Avaliador(), pagaemntoDao.Object, relogio.Object);

            gerador.Gera();

            //Then
            Assert.Equal(DayOfWeek.Sunday, relogio.Object.Hoje().DayOfWeek);
            Assert.Equal(DayOfWeek.Monday, pagamentoCapiturado.data.DayOfWeek);
        }
        public void Should_generator_payment_for_throw_fineshed()
        {
            //Given
            var leilaoDao    = new Mock <LeilaoDaoFalso>();
            var avaliador    = new Mock <Avaliador>();
            var pagaemntoDao = new Mock <PagamentoDao>();

            Leilao leilao1 = new Leilao("Playstation");

            leilao1.naData(new DateTime(1999, 5, 5));

            //When
            leilao1.propoe(new Lance(new Usuario("Renan"), 500));
            leilao1.propoe(new Lance(new Usuario("Felipe"), 600));

            List <Leilao> listaDeLeiloes = new List <Leilao>();

            listaDeLeiloes.Add(leilao1);

            leilaoDao.Setup(l => l.Encerrados())
            .Returns(listaDeLeiloes);

            avaliador.Setup(a => a.maiorValor)
            .Returns(600);

            Pagamento pagemntoCapturado = null;

            pagaemntoDao.Setup(p => p.Salvar(It.IsAny <Pagamento>()))
            .Callback <Pagamento>(r => pagemntoCapturado = r);

            GeradorDePagamento gerador = new GeradorDePagamento(leilaoDao.Object, new Avaliador(), pagaemntoDao.Object);

            gerador.Gera();

            //Then
            Assert.NotNull(pagemntoCapturado);
            Assert.Equal(600, pagemntoCapturado.valor);
        }