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>&nbsp;</span>
 					@Html.ActionLink("Eliminar", "Eliminar", new { id = item.Id }, new { @class = "ui-button-confirm" })