Mercurial > altnet-hispano
changeset 279:1e889a2e45c5
#125: ABM de patrocinadores.
author | juanjose.montesdeocaarbos |
---|---|
date | Thu, 22 Dec 2011 10:04:08 -0300 |
parents | 6f5ab71614d4 |
children | 1caba33bd0b7 |
files | Agendas/trunk/src/Agendas.Web.Tests/AutorizationsTests.cs Agendas/trunk/src/Agendas.Web.Tests/Controllers/PatrocinadorControllerTests.cs Agendas/trunk/src/Agendas.Web/Controllers/PatrocinadorController.cs Agendas/trunk/src/Agendas.Web/Views/Patrocinador/Index.cshtml |
diffstat | 4 files changed, 103 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- 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");
--- 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<PatrocinadorEditModel>(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()); + } + } } }
--- 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"); + } } }
--- 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 @@ <tr> <td><img src="/Patrocinador/GetLogo?id=@item.Id" /></td> <td>@item.Nombre</td> - <td> + <td class="buttons"> @Html.ActionLink("Modificar", "Modificar", new { id = item.Id }) <span> </span> @Html.ActionLink("Eliminar", "Eliminar", new { id = item.Id }, new { @class = "ui-button-confirm" })