public async Task ContratarMenu_Paid() { //Arrange using (context) { var controller = new MenusController(context); 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 = "Success" }; 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.Equal(remvm, mResult, Comparer.Get <ResultMenuViewModel>((rm1, rm2) => rm1.result == rm2.result && rm1.menu.idServicio == rm2.menu.idServicio)); } }
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_InvalidHabitacion() { //Arrange using (context) { var controller = new MenusController(context); int nComensales = 1; 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 = 0 }; ResultMenuViewModel remvm = new ResultMenuViewModel { menu = menu, result = "Failure" }; // Act var result = await controller.SeleccionComensales(nComensales, habitacion.numero, menu.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 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 <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)); }
public IActionResult ContratarMenu(ResultMenuViewModel remvm) { ViewBag.Menus = new SelectList(_context.Menu, "idServicio", "nombre", remvm.menu); ViewData["menuId"] = 0; return(View(remvm)); }