Esempio n. 1
0
        public async Task ContratarMenu_RoomNotFound()
        {
            //Arrange
            using (context)
            {
                var controller            = new MenusController(context);
                ReservaMenuViewModel rmvm = new ReservaMenuViewModel();

                Menu menu = new Menu
                {
                    idServicio = 1,
                    nombre     = "TestMP",
                    horaInicio = new DateTime(2016, 1, 1, 9, 0, 0),
                    horaFin    = new DateTime(2016, 1, 1, 11, 0, 0)
                };

                ResultMenuViewModel remvm = new ResultMenuViewModel
                {
                    menu   = menu,
                    result = "Error: Reserva not found"
                };

                SystemTime.Now = () => new DateTime(2016, 10, 20, 12, 00, 00);

                // Act
                var result = await controller.ContratarMenu(menu.idServicio, 101, menu.idServicio, 101);

                //Assert
                var viewResult = Assert.IsType <ViewResult>(result);
                Assert.Equal("ContratarMenu", viewResult.ViewName);
                var mResult = Assert.IsType <ResultMenuViewModel>(viewResult.Model);
                Assert.Equal(remvm, mResult, Comparer.Get <ResultMenuViewModel>((rm1, rm2) => rm1.result == rm2.result && rm1.menu.idServicio == rm2.menu.idServicio));
            }
        }
Esempio n. 2
0
        public async Task ContratarMenu_InvalidMenu()
        {
            //Arrange
            using (context)
            {
                var controller            = new MenusController(context);
                ReservaMenuViewModel rmvm = new ReservaMenuViewModel();
                Menu menu = new Menu();

                ResultMenuViewModel remvm = new ResultMenuViewModel
                {
                    menu   = menu,
                    result = "Error: Invalid menu"
                };

                SystemTime.Now = () => new DateTime(2016, 10, 20, 12, 00, 00);

                // Act
                var result = await controller.ContratarMenu(menu.idServicio, 100, menu.idServicio, 100);

                //Assert
                var viewResult = Assert.IsType <ViewResult>(result);
                Assert.Equal("ContratarMenu", viewResult.ViewName);
                var mResult = Assert.IsType <ResultMenuViewModel>(viewResult.Model);
                Assert.Null(mResult.menu);
                Assert.Equal(remvm.result, mResult.result);
            }
        }
        public async Task <IActionResult> SeleccionComensales(int nComensales, int nHabitacion, int idServicio, string nCliente)
        {
            ReservaMenuViewModel rmvm = new ReservaMenuViewModel {
                nHabitacion = nHabitacion, idServicio = idServicio, nCliente = nCliente
            };
            Menu       menu       = _context.Menu.FirstOrDefault(m => m.idServicio == idServicio);
            Habitacion habitacion = await _context.Habitacion.SingleOrDefaultAsync <Habitacion>(h => h.numero == nHabitacion);

            string result             = "Failure";
            ResultMenuViewModel remvm = new ResultMenuViewModel
            {
                menu   = menu,
                result = result
            };

            if (menu == null || habitacion == null)
            {
                return(RedirectToAction("ContratarMenu", remvm));
            }
            if (nComensales <= 0)
            {
                return(View("SeleccionComensales", rmvm));
            }

            FacturasController           fc  = new FacturasController(_context);
            ReservaHabitacionsController rhc = new ReservaHabitacionsController(_context);

            Reserva reserva = await rhc.GetReserva(nHabitacion);

            Factura factura = await fc.GetFactura(reserva);

            LineaFacturasController lfc = new LineaFacturasController(_context);

            result = "Error: couldn't get factura";
            if (factura != null)
            {
                bool chk = await lfc.CrearLineaMenu(menu, nComensales, factura, habitacion);

                if (!chk)
                {
                    result = "Error: out of time";
                }
                else
                {
                    result = "Success";
                }
            }

            remvm.result = result;
            return(RedirectToAction("ContratarMenu", remvm));
        }
        public async Task SeleccionComensales_InvalidNComensales()
        {
            //Arrange
            using (context)
            {
                var controller = new MenusController(context);

                Menu menu = new Menu
                {
                    idServicio = 1,
                    nombre     = "TestPC",
                    horaInicio = new DateTime(2001, 12, 13, 13, 00, 00),
                    horaFin    = new DateTime(2001, 12, 13, 16, 00, 00),
                    precio     = 10F
                };

                Habitacion habitacion = new Habitacion {
                    numero = 101
                };

                ReservaMenuViewModel rmvm = new ReservaMenuViewModel
                {
                    idServicio  = menu.idServicio,
                    nHabitacion = habitacion.numero
                };

                int nComensales = 0;

                ReservaMenuViewModel exModel = new ReservaMenuViewModel();
                exModel.nHabitacion = habitacion.numero;
                exModel.idServicio  = menu.idServicio;

                // Act
                var result = await controller.SeleccionComensales(nComensales, habitacion.numero, menu.idServicio, "");

                //Assert
                var viewResult = Assert.IsType <ViewResult>(result);
                Assert.Equal("SeleccionComensales", viewResult.ViewName);
                Assert.Equal(exModel, viewResult.Model as ReservaMenuViewModel, Comparer.Get <ReservaMenuViewModel>((rm1, rm2) => rm1.nHabitacion == rm2.nHabitacion && rm1.idServicio == rm2.idServicio));
            }
        }
Esempio n. 5
0
        public async Task ContratarMenu_NotPaid()
        {
            //Arrange
            using (context)
            {
                var controller = new MenusController(context);
                ReservaMenuViewModel exResult = new ReservaMenuViewModel();

                Menu menu = new Menu
                {
                    idServicio = 2,
                    nombre     = "TestPC",
                    horaInicio = new DateTime(2016, 1, 1, 13, 0, 0),
                    horaFin    = new DateTime(2016, 1, 1, 16, 0, 0)
                };

                exResult.nHabitacion = 100;
                exResult.idServicio  = menu.idServicio;

                SystemTime.Now = () => new DateTime(2016, 10, 20, 12, 00, 00);

                // Act
                var result = await controller.ContratarMenu(menu.idServicio, 100, menu.idServicio, 100);

                //Assert
                var viewResult = Assert.IsType <RedirectToActionResult>(result);
                Assert.Equal("SeleccionComensales", viewResult.ActionName);
                ReservaMenuViewModel vmResult = new ReservaMenuViewModel();
                List <string>        keys     = new List <string>();
                string aux;
                int    i = 0;
                foreach (var key in viewResult.RouteValues.Keys)
                {
                    aux = Assert.IsType <string>(key);
                    Assert.Equal(aux, "key", Comparer.Get <string>((s1, s2) => s1 == "nHabitacion" || s1 == "idServicio"));
                    keys.Add(aux);
                    i++;
                }
                Assert.Equal(i, 2);

                i = 0;
                foreach (var c in viewResult.RouteValues.Values)
                {
                    aux = keys[i];
                    if (aux == "nHabitacion")
                    {
                        i++;
                        vmResult.nHabitacion = Assert.IsType <int>(c);
                    }
                    else if (aux == "idServicio")
                    {
                        i++;
                        vmResult.idServicio = Assert.IsType <int>(c);
                    }
                    else
                    {
                        i++;
                    }
                }

                Assert.Equal(i, 2);

                Assert.Equal(exResult, vmResult, Comparer.Get <ReservaMenuViewModel>((v1, v2) => v1.nHabitacion == v2.nHabitacion && v1.idServicio == v2.idServicio));
            }
        }
        public async Task SeleccionComensales_Success()
        {
            //Arrange
            using (context)
            {
                var controller = new MenusController(context);

                Menu menu = new Menu
                {
                    idServicio = 1,
                    nombre     = "TestPC",
                    horaInicio = new DateTime(2001, 12, 13, 13, 00, 00),
                    horaFin    = new DateTime(2001, 12, 13, 16, 00, 00),
                    precio     = 10F
                };

                int     nComensales = 1;
                Factura factura     = new Factura {
                    idFactura = 1
                };
                Reserva reserva = new Reserva {
                    idReserva = 1, Factura = factura
                };
                factura.Reserva = reserva;
                int nHabitacion = 101;

                ReservaMenuViewModel rmvm = new ReservaMenuViewModel
                {
                    idServicio  = menu.idServicio,
                    nHabitacion = nHabitacion
                };

                ResultMenuViewModel remvm = new ResultMenuViewModel
                {
                    menu   = menu,
                    result = "Success"
                };

                LineaFactura exLF = new LineaFactura {
                    idLineaFactura = 1, Factura = factura, precio = menu.precio
                };
                ReservaServicio exRS = new ReservaServicio
                {
                    idReservaServicio = 1,
                    Habitacion        = new Habitacion {
                        numero = 101
                    },
                    fechaInicio  = new DateTime(2016, 10, 20, 13, 00, 00),
                    fechaFin     = new DateTime(2016, 10, 20, 16, 00, 00),
                    LineaFactura = exLF,
                    Servicio     = menu
                };
                exLF.ReservaServicio = exRS;
                IEnumerable <LineaFactura> exLFModel = new List <LineaFactura> {
                    exLF
                };
                IEnumerable <ReservaServicio> exRSModel = new List <ReservaServicio> {
                    exRS
                };

                SystemTime.Now = () => new DateTime(2016, 10, 20, 14, 00, 00);

                // Act
                var result = await controller.SeleccionComensales(nComensales, rmvm.nHabitacion, rmvm.idServicio, "");

                //Assert
                var viewResult = Assert.IsType <RedirectToActionResult>(result);
                Assert.Equal("ContratarMenu", viewResult.ActionName);
                ResultMenuViewModel vmResult = new ResultMenuViewModel();
                List <string>       keys     = new List <string>();
                string aux;
                int    i = 0;
                foreach (var key in viewResult.RouteValues.Keys)
                {
                    aux = Assert.IsType <string>(key);
                    Assert.Equal(aux, "key", Comparer.Get <string>((s1, s2) => s1 == "result" || s1 == "menu"));
                    keys.Add(aux);
                    i++;
                }
                Assert.Equal(i, 2);

                i = 0;
                foreach (var c in viewResult.RouteValues.Values)
                {
                    aux = keys[i];
                    if (aux == "result")
                    {
                        i++;
                        vmResult.result = Assert.IsType <string>(c);
                    }
                    else if (aux == "menu")
                    {
                        i++;
                        vmResult.menu = Assert.IsType <Menu>(c);
                    }
                    else
                    {
                        i++;
                    }
                }
                Assert.Equal(remvm, vmResult, Comparer.Get <ResultMenuViewModel>((rm1, rm2) => rm1.result == rm2.result && rm1.menu.idServicio == rm2.menu.idServicio));

                IEnumerable <ReservaServicio> rsModel = context.ReservaServicio.ToList <ReservaServicio>();
                IEnumerable <LineaFactura>    lfModel = context.LineaFactura.ToList <LineaFactura>();
                Assert.Equal(exRSModel,
                             rsModel,
                             Comparer.Get <ReservaServicio>((rs1, rs2) => rs1.idReservaServicio == rs2.idReservaServicio &&
                                                            rs1.Habitacion.numero == rs2.Habitacion.numero &&
                                                            rs1.LineaFactura.idLineaFactura == rs2.LineaFactura.idLineaFactura &&
                                                            rs1.Servicio.idServicio == rs2.Servicio.idServicio &&
                                                            rs1.fechaInicio.Equals(rs2.fechaInicio) &&
                                                            rs1.fechaFin.Equals(rs2.fechaFin)));
                Assert.Equal(exLFModel,
                             lfModel,
                             Comparer.Get <LineaFactura>((lf1, lf2) => lf1.idLineaFactura == lf2.idLineaFactura &&
                                                         lf1.precio == lf2.precio &&
                                                         lf1.Factura.idFactura == lf2.Factura.idFactura &&
                                                         lf1.ReservaServicio.idReservaServicio == lf2.ReservaServicio.idReservaServicio
                                                         ));
            }
        }
        public async Task SeleccionComensales_Failure()
        {
            //Arrange
            using (context)
            {
                var controller = new MenusController(context);

                Menu menu = new Menu
                {
                    idServicio = 1,
                    nombre     = "TestPC",
                    horaInicio = new DateTime(2001, 12, 13, 13, 00, 00),
                    horaFin    = new DateTime(2001, 12, 13, 16, 00, 00),
                    precio     = 10F
                };

                int nComensales = 1;
                int nHabitacion = 101;

                ReservaMenuViewModel rmvm = new ReservaMenuViewModel
                {
                    idServicio  = menu.idServicio,
                    nHabitacion = nHabitacion
                };

                ResultMenuViewModel remvm = new ResultMenuViewModel
                {
                    menu   = menu,
                    result = "Error: out of time"
                };

                SystemTime.Now = () => new DateTime(2016, 10, 20, 12, 00, 00);

                // Act
                var result = await controller.SeleccionComensales(nComensales, rmvm.nHabitacion, rmvm.idServicio, "");

                //Assert
                var viewResult = Assert.IsType <RedirectToActionResult>(result);
                Assert.Equal("ContratarMenu", viewResult.ActionName);
                ResultMenuViewModel vmResult = new ResultMenuViewModel();
                List <string>       keys     = new List <string>();
                string aux;
                int    i = 0;
                foreach (var key in viewResult.RouteValues.Keys)
                {
                    aux = Assert.IsType <string>(key);
                    Assert.Equal(aux, "key", Comparer.Get <string>((s1, s2) => s1 == "result" || s1 == "menu"));
                    keys.Add(aux);
                    i++;
                }
                Assert.Equal(i, 2);

                i = 0;
                foreach (var c in viewResult.RouteValues.Values)
                {
                    aux = keys[i];
                    if (aux == "result")
                    {
                        i++;
                        vmResult.result = Assert.IsType <string>(c);
                    }
                    else if (aux == "menu")
                    {
                        i++;
                        vmResult.menu = Assert.IsType <Menu>(c);
                    }
                    else
                    {
                        i++;
                    }
                }
                Assert.Equal(remvm, vmResult, Comparer.Get <ResultMenuViewModel>((rm1, rm2) => rm1.result == rm2.result && rm1.menu.idServicio == rm2.menu.idServicio));
            }
        }
 public IActionResult SeleccionComensales(ReservaMenuViewModel rmvm)
 {
     return(View(rmvm));
 }
        public async Task <IActionResult> ContratarMenu(int menuId, int nHabitacion, int menuIdOld, int nHabitacionOld)
        {
            Menu menu = _context.Menu.FirstOrDefault(m => m.idServicio == menuId);

            ResultMenuViewModel remvm = new ResultMenuViewModel
            {
                menu = menu
            };

            int regimen = GetRegimen(menu);

            if (regimen == Regimen.INVALIDO)
            {
                ViewBag.Menus      = new SelectList(_context.Menu, "idServicio", "nombre", remvm.menu);
                remvm.result       = "Error: Invalid menu";
                ViewData["menuId"] = 0;
                return(View("ContratarMenu", remvm));
            }

            DateTime hora = SystemTime.Now();

            if (menu.horaFin.TimeOfDay.CompareTo(hora.TimeOfDay) < 0 || menu.horaInicio.TimeOfDay.CompareTo(hora.TimeOfDay) > 0)
            {
                ViewBag.Menus      = new SelectList(_context.Menu, "idServicio", "nombre", remvm.menu);
                remvm.result       = "Error: Out of time";
                ViewData["menuId"] = 0;
                return(View("ContratarMenu", remvm));
            }

            ReservasController           rc  = new ReservasController(_context);
            ReservaHabitacionsController rhc = new ReservaHabitacionsController(_context);
            Reserva r = await rhc.GetReserva(nHabitacion);

            bool paid = rc.ComidaIncluida(r, regimen);

            if (r == null)
            {
                remvm.result       = "Error: Reserva not found";
                ViewBag.Menus      = new SelectList(_context.Menu, "idServicio", "nombre", remvm.menu);
                ViewData["menuId"] = 0;
                return(View("ContratarMenu", remvm));
            }

            String nCliente = r.Cliente.nombre + " " + r.Cliente.apellidos;

            if (menuId != menuIdOld || nHabitacion != nHabitacionOld)
            {
                remvm.result            = "Cliente: " + nCliente + '\n' + "Pulse de nuevo contratar para confirmar.";
                ViewData["menuId"]      = menuId;
                ViewData["nHabitacion"] = nHabitacion;
                ViewData["nCliente"]    = nCliente;
                ViewBag.Menus           = new SelectList(_context.Menu, "idServicio", "nombre", remvm.menu);
                return(View("ContratarMenu", remvm));
            }

            if (paid)
            {
                remvm.result       = "Success";
                ViewBag.Menus      = new SelectList(_context.Menu, "idServicio", "nombre", remvm.menu);
                ViewData["menuId"] = 0;
                return(View("ContratarMenu", remvm));
            }

            ReservaMenuViewModel rmvm = new ReservaMenuViewModel();

            rmvm.nHabitacion = nHabitacion;
            rmvm.idServicio  = menu.idServicio;
            rmvm.nCliente    = nCliente;
            return(RedirectToAction("SeleccionComensales", rmvm));
        }