# HG changeset patch # User juanjose.montesdeocaarbos # Date 1324559048 10800 # Node ID 1e889a2e45c576d1e408a001397659bd3e013b05 # Parent 6f5ab71614d46cbef8ca491b4672782111a202bd #125: ABM de patrocinadores. diff -r 6f5ab71614d4 -r 1e889a2e45c5 Agendas/trunk/src/Agendas.Web.Tests/AutorizationsTests.cs --- a/Agendas/trunk/src/Agendas.Web.Tests/AutorizationsTests.cs Wed Dec 21 08:47:05 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web.Tests/AutorizationsTests.cs Thu Dec 22 10:04:08 2011 -0300 @@ -95,7 +95,7 @@ "EventoController.Cancelar", "EventoController.Descartar", "EventoController.ReAgendar", "EventoController.ReProponer", "PersonaController.Nueva", "PersonaController.Modificar", "PersonaController.Quitar", "PersonaApiController.Nueva", "PatrocinadorController.Nuevo", - "PatrocinadorController.Modificar", "PatrocinadorController.Quitar" + "PatrocinadorController.Modificar", "PatrocinadorController.Eliminar" }; VerficarAccionesSeguras(acciones, Roles.Administrador, "debe ser de uso exclusivo de los administradores"); diff -r 6f5ab71614d4 -r 1e889a2e45c5 Agendas/trunk/src/Agendas.Web.Tests/Controllers/PatrocinadorControllerTests.cs --- a/Agendas/trunk/src/Agendas.Web.Tests/Controllers/PatrocinadorControllerTests.cs Wed Dec 21 08:47:05 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web.Tests/Controllers/PatrocinadorControllerTests.cs Thu Dec 22 10:04:08 2011 -0300 @@ -161,16 +161,20 @@ [Test] public void PatrocinadorModificarGetDontExists() { + var patrocinadorController = new PatrocinadorController(new HttpServerStub()) { ControllerContext = ControllerCtx }; using (new RequestEmulator(NhHelper.GetSessionFactory())) { + var patrocinadorRepository = new PatrocinadorRepository(NhHelper.GetSessionFactory()); + Assert.AreEqual(0, patrocinadorRepository.GetAll().Count()); var resultModificar = patrocinadorController.Modificar("11111111-1111-1111-1111-111111111111"); Assert.IsInstanceOf(typeof(RedirectToRouteResult), resultModificar); Assert.AreEqual("Index", ((RedirectToRouteResult)resultModificar).RouteValues["action"]); Assert.AreEqual("No se encontrĂ³ el patrocinador que intenta modificar", patrocinadorController.TempData["error"]); + Assert.AreEqual(0, patrocinadorRepository.GetAll().Count()); } } @@ -196,6 +200,7 @@ [Test] public void PatrocinadorModificarPostSatisfactorio() { + PatrocinadorRepository patrocinadorRepository; PatrocinadorEditModel patrocinadorEdit; CrearPatrocinadorApress(); @@ -205,7 +210,7 @@ }; using (new RequestEmulator(NhHelper.GetSessionFactory())) { - var patrocinadorRepository = new PatrocinadorRepository(NhHelper.GetSessionFactory()); + patrocinadorRepository = new PatrocinadorRepository(NhHelper.GetSessionFactory()); var form = new FormCollection { @@ -218,10 +223,12 @@ using (new RequestEmulator(NhHelper.GetSessionFactory())) { + Assert.AreEqual(1, patrocinadorRepository.GetAll().Count()); var resultModificar = patrocinadorController.Modificar(patrocinadorEdit); Assert.IsInstanceOf(typeof(RedirectToRouteResult), resultModificar); var viewResultEdit = (RedirectToRouteResult)resultModificar; Assert.AreEqual("Index", viewResultEdit.RouteValues["action"]); + Assert.AreEqual(1, patrocinadorRepository.GetAll().Count()); } } @@ -253,5 +260,72 @@ Assert.AreEqual("El campo Logo es obligatorio.", viewResultNuevo.ViewData.ModelState["Logo"].Errors[0].ErrorMessage); } } + + [Test] + public void PatrocinadorQuitarPostSatisfactorio() + { + var patrocinadorId = string.Empty; + PatrocinadorRepository patrocinadorRepository; + + CrearPatrocinadorApress(); + var patrocinadorController = new PatrocinadorController(new HttpServerStub()) + { + ControllerContext = ControllerCtx + }; + using (new RequestEmulator(NhHelper.GetSessionFactory())) + { + patrocinadorRepository = new PatrocinadorRepository(NhHelper.GetSessionFactory()); + patrocinadorId = patrocinadorRepository.GetByNombre("Apress").Id.ToString(); + } + + using (new RequestEmulator(NhHelper.GetSessionFactory())) + { + Assert.AreEqual(1, patrocinadorRepository.GetAll().Count()); + var resultQuitar = patrocinadorController.Eliminar(patrocinadorId); + Assert.IsInstanceOf(typeof(RedirectToRouteResult), resultQuitar); + var viewResult = (RedirectToRouteResult)resultQuitar; + Assert.AreEqual("Index", viewResult.RouteValues["action"]); + } + using (new RequestEmulator(NhHelper.GetSessionFactory())) + { + Assert.AreEqual(0, patrocinadorRepository.GetAll().Count()); + } + } + + [Test] + [Ignore] + public void PatrocinadorQuitarPostDontExists() + { + PatrocinadorRepository patrocinadorRepository; + PatrocinadorEditModel patrocinadorEdit; + + CrearPatrocinadorApress(); + var patrocinadorController = new PatrocinadorController(new HttpServerStub()) + { + ControllerContext = ControllerCtx + }; + using (new RequestEmulator(NhHelper.GetSessionFactory())) + { + patrocinadorRepository = new PatrocinadorRepository(NhHelper.GetSessionFactory()); + + var form = new FormCollection + { + {"Id", patrocinadorRepository.GetAll().FirstOrDefault().Id.ToString()}, + {"Nombre", "APRESS"}, + {"Logo", @"images\apress.gif"} + }; + patrocinadorEdit = BindModel(patrocinadorController, form); + } + + using (new RequestEmulator(NhHelper.GetSessionFactory())) + { + Assert.AreEqual(1, patrocinadorRepository.GetAll().Count()); + var resultQuit = patrocinadorController.Modificar(patrocinadorEdit); + Assert.IsInstanceOf(typeof(RedirectToRouteResult), resultQuit); + var viewResult = (RedirectToRouteResult)resultQuit; + Assert.AreEqual("Index", viewResult.RouteValues["action"]); + Assert.AreEqual(1, patrocinadorRepository.GetAll().Count()); + } + } } } diff -r 6f5ab71614d4 -r 1e889a2e45c5 Agendas/trunk/src/Agendas.Web/Controllers/PatrocinadorController.cs --- a/Agendas/trunk/src/Agendas.Web/Controllers/PatrocinadorController.cs Wed Dec 21 08:47:05 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Controllers/PatrocinadorController.cs Thu Dec 22 10:04:08 2011 -0300 @@ -78,15 +78,14 @@ { if (ModelState.IsValid) { - var tempLogoFile = Path.Combine(HttpServer.MapPath("~/App_Data"), - model.Nombre + - model.Logo.FileName.Substring(model.Logo.FileName.LastIndexOf("."))); - model.Logo.SaveAs(tempLogoFile); - var patrocinadores = AgendaFactory.GetPatrocinadorRepository(); if (patrocinadores.GetByNombre(model.Nombre) == null) { + var tempLogoFile = Path.Combine(HttpServer.MapPath("~/App_Data"), + model.Nombre + + model.Logo.FileName.Substring(model.Logo.FileName.LastIndexOf("."))); + model.Logo.SaveAs(tempLogoFile); var patrocinador = new Patrocinador(model.Nombre); patrocinador.LoadLogo(tempLogoFile); @@ -111,7 +110,11 @@ this.AddError("No se encontrĂ³ el patrocinador que intenta modificar"); return RedirectToAction("Index"); } - var model = new PatrocinadorNewModel(); + var model = new PatrocinadorEditModel + { + Id = new Guid(id).ToString(), + Nombre = patrocinador.Nombre + }; return View("DefaultEditor", model); } @@ -121,16 +124,15 @@ { if (ModelState.IsValid) { - var tempLogoFile = Path.Combine(HttpServer.MapPath("~/App_Data"), - model.Nombre + - model.Logo.FileName.Substring(model.Logo.FileName.LastIndexOf("."))); - model.Logo.SaveAs(tempLogoFile); - var patrocinadores = AgendaFactory.GetPatrocinadorRepository(); - - if (patrocinadores.GetByNombre(model.Nombre) != null) + var patrocinador = patrocinadores.GetById(model.Id); + if (patrocinador != null) { - var patrocinador = new Patrocinador(model.Nombre); + var tempLogoFile = Path.Combine(HttpServer.MapPath("~/App_Data"), + model.Nombre + + model.Logo.FileName.Substring(model.Logo.FileName.LastIndexOf("."))); + model.Logo.SaveAs(tempLogoFile); + patrocinador.Nombre = model.Nombre; patrocinador.LoadLogo(tempLogoFile); patrocinadores.Save(patrocinador); @@ -143,10 +145,17 @@ } [CustomAuthorize(Roles = Roles.Administrador)] - public ActionResult Quitar(int id) + public ActionResult Eliminar(string id) { - return View(); - } + if (!string.IsNullOrWhiteSpace(id)) + { + var patrocinadores = AgendaFactory.GetPatrocinadorRepository(); + var patrocinador = patrocinadores.GetById(id); + + patrocinadores.Delete(patrocinador); + } + return RedirectToAction("Index"); + } } } diff -r 6f5ab71614d4 -r 1e889a2e45c5 Agendas/trunk/src/Agendas.Web/Views/Patrocinador/Index.cshtml --- a/Agendas/trunk/src/Agendas.Web/Views/Patrocinador/Index.cshtml Wed Dec 21 08:47:05 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Views/Patrocinador/Index.cshtml Thu Dec 22 10:04:08 2011 -0300 @@ -18,7 +18,7 @@ @item.Nombre - + @Html.ActionLink("Modificar", "Modificar", new { id = item.Id })   @Html.ActionLink("Eliminar", "Eliminar", new { id = item.Id }, new { @class = "ui-button-confirm" })