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 ReservaCriadaAtribuiProdutoClientePacoteCorretamente()
        {
            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");

            Reserva reserva = new Reserva();

            reserva.AtribuirCliente(cliente);
            reserva.AtribuirPacote(pacote);
            reserva.AtribuirProduto(produto);

            Assert.AreEqual(cliente, reserva.Cliente);
            Assert.AreEqual(pacote, reserva.Pacote);
            Assert.AreEqual(produto, reserva.Produto);
        }
        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);
        }
        public void ReservaCriadaDiminuiEstoque()
        {
            Reserva Reserva = new Reserva();
            Produto Produto = new Produto("Teste", "Teste testando", "Teste.png", 129, 5);
            Pacote  Pacote  = new Pacote("TestePacote", "Teste testando pacote", 148);

            Opcional op  = new Opcional("TesteOpcional", "TesteOpcional testando1", 59, 8);
            Opcional op1 = new Opcional("TesteOpcional1", "TesteOpcional testando2", 59, 8);
            Opcional op2 = new Opcional("TesteOpcional2", "TesteOpcional testando3", 59, 8);

            List <Opcional> Lista = new List <Opcional>();

            Lista.Add(op);
            Lista.Add(op1);
            Lista.Add(op2);

            Reserva.AtribuirProduto(Produto);
            Reserva.AtribuirOpcionais(Lista);

            Assert.AreEqual(4, Produto.QuantidadeDisponivel);
            Assert.AreEqual(7, op.QuantidadeDisponivel);
            Assert.AreEqual(7, op1.QuantidadeDisponivel);
            Assert.AreEqual(7, op2.QuantidadeDisponivel);
        }