public void ReservaCriadaAtribuiValorPrevistoCorretamente()
        {
            Reserva  Reserva       = new Reserva();
            Produto  Produto       = new Produto("Teste", "Teste testando", "Teste.png", 129, 5);
            Pacote   Pacote        = new Pacote("TestePacote", "Teste testando pacote", 148);
            DateTime Data          = new DateTime(2000, 12, 19);
            Cliente  Cliente       = new Cliente("TesteCliente", "ClienteTeste", "999999-9", Data, 0, "93290-490");
            DateTime dataReserva   = new DateTime(2017, 06, 10, 20, 52, 53);
            DateTime dataDevolucao = new DateTime(2017, 06, 15, 20, 52, 53);

            Reserva.AtribuirDataReserva(dataReserva);
            Reserva.AtribuirDataDevolucaoPrevista(dataDevolucao);
            Reserva.AtribuirCliente(Cliente);
            Reserva.AtribuirPacote(Pacote);
            Reserva.AtribuirProduto(Produto);

            Reserva.CalcularDiasDeLocacao();
            Reserva.CalcularValorPrevisto();


            var ValorPrevisto = (129 + 148) * Reserva.DiasDeReserva;

            Assert.AreEqual(ValorPrevisto, Reserva.ValorPrevisto);
            Assert.AreEqual(Status.Em_Andamento,
                            Reserva.Status);
        }
        public void ReservaCriadaAtribuiComDataInvalidaRetornaDataDeAgora()
        {
            Reserva  Reserva       = new Reserva();
            DateTime dataReserva   = new DateTime(2017, 06, 11, 20, 52, 53);
            DateTime dataDevolucao = new DateTime(2017, 06, 8, 20, 52, 53);

            Reserva.AtribuirDataReserva(dataReserva);
            Reserva.AtribuirDataDevolucaoPrevista(dataDevolucao);

            var resultado = DateTime.UtcNow.Date;

            Assert.AreEqual(resultado, Reserva.DataDevolucaoPrevista);
        }
        public void ReservaCriadaAtribuiDatasCorretamente()
        {
            DateTime dataReserva   = new DateTime(2017, 06, 10, 20, 52, 53);
            DateTime dataDevolucao = new DateTime(2017, 06, 15, 20, 52, 53);
            int      diasTotais    = 6;

            Reserva reserva = new Reserva();

            reserva.AtribuirDataReserva(dataReserva);
            reserva.AtribuirDataDevolucaoPrevista(dataDevolucao);
            reserva.CalcularDiasDeLocacao();

            Assert.AreEqual(dataReserva, reserva.DataReserva);
            Assert.AreEqual(dataDevolucao, reserva.DataDevolucaoPrevista);
            Assert.AreEqual(diasTotais, reserva.DiasDeReserva);
        }
        public Reserva Criar(DateTime dataDevolucao, DateTime dataReserva, string cpf, int IdProduto, int IdPacote, List <int> opcionais)
        {
            Reserva reserva = new Reserva();

            reserva.AtribuirDataDevolucaoPrevista(dataDevolucao);
            reserva.AtribuirDataReserva(dataReserva);

            var cliente = contexto.Clientes.SingleOrDefault(x => x.CPF.Equals(cpf));

            reserva.AtribuirCliente(cliente);

            var pacote = contexto.Pacotes.SingleOrDefault(x => x.Id == IdPacote);

            reserva.AtribuirPacote(pacote);

            if (opcionais.Count >= 0)
            {
                List <Opcional> lista = new List <Opcional>();

                foreach (int op in opcionais)
                {
                    var opcional = contexto.Opcionais.SingleOrDefault(x => x.Id == op);
                    lista.Add(opcional);
                }

                reserva.AtribuirOpcionais(lista);
            }

            var produto = contexto.Produtos.SingleOrDefault(x => x.Id == IdProduto);

            reserva.AtribuirProduto(produto);

            reserva.CalcularDiasDeLocacao();
            reserva.CalcularValorPrevisto();

            if (reserva.IsValid())
            {
                contexto.Reservas.Add(reserva);
                contexto.SaveChanges();
            }

            return(reserva);
        }