changeset 300:48ab8788bd19

#200: Patrocinadores: Agregar link al sitio web.
author juanjose.montesdeocaarbos
date Mon, 27 Feb 2012 14:45:12 -0300
parents 8522d6a25888
children 771c2c805142
files Agendas/trunk/db/v1.1/03 - Patrocinadores.sql Agendas/trunk/src/Agendas.Domain/Patrocinador.cs Agendas/trunk/src/Agendas.Repositories.Tests/PatrocinadorCrud.cs Agendas/trunk/src/Agendas.Repositories.Tests/PatrocinadorEventoTests.cs Agendas/trunk/src/Agendas.Repositories.Tests/TestsHelper.cs Agendas/trunk/src/Agendas.Repositories.Tests/Workflow.cs Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Agendas/trunk/src/Agendas.Tests/Eventos_y_patrocinadores_tests.cs Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Agendas/trunk/src/Agendas.Tests/TestsHelper.cs Agendas/trunk/src/Agendas.Web.Tests/Controllers/PatrocinadorControllerTests.cs Agendas/trunk/src/Agendas.Web/Controllers/PatrocinadorController.cs Agendas/trunk/src/Agendas.Web/Models/PatrocinadorModel.cs Agendas/trunk/src/Agendas.Web/Views/Patrocinador/Index.cshtml
diffstat 14 files changed, 76 insertions(+), 34 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Agendas/trunk/db/v1.1/03 - Patrocinadores.sql	Mon Feb 27 14:45:12 2012 -0300
@@ -0,0 +1,3 @@
+ALTER TABLE dbo.Patrocinador ADD
+	WebSite nvarchar(255) NULL
+GO
--- a/Agendas/trunk/src/Agendas.Domain/Patrocinador.cs	Mon Feb 27 13:14:57 2012 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Patrocinador.cs	Mon Feb 27 14:45:12 2012 -0300
@@ -3,11 +3,13 @@
 	public class Patrocinador : Identificable
 	{
 		public virtual string Nombre { get; set; }
+		public virtual string WebSite { get; set; }
 		public virtual byte[] Logo { get; set; }
 
-		public Patrocinador(string nombre)
+		public Patrocinador(string nombre, string webSite)
 		{
 			Nombre = nombre;
+			WebSite = webSite;
 		}
 
 		protected Patrocinador()
--- a/Agendas/trunk/src/Agendas.Repositories.Tests/PatrocinadorCrud.cs	Mon Feb 27 13:14:57 2012 -0300
+++ b/Agendas/trunk/src/Agendas.Repositories.Tests/PatrocinadorCrud.cs	Mon Feb 27 14:45:12 2012 -0300
@@ -33,7 +33,7 @@
 		{
 			using (_requestEmulator.Invoke())
 			{
-				var patrocinador = new Patrocinador("APRESS")
+				var patrocinador = new Patrocinador("APRESS", "http://apress.com/")
 				{
 					Logo = LoadLogo("images/apress.gif")
 				};
@@ -55,6 +55,7 @@
 
 				Assert.IsNotNull(patrocinador);
 				Assert.AreEqual("APRESS", patrocinador.Nombre);
+				Assert.AreEqual("http://apress.com/", patrocinador.WebSite);
 				Assert.IsNotNull(patrocinador.Logo);
 				Assert.AreEqual(_logo, patrocinador.Logo);
 			}
@@ -70,6 +71,7 @@
 				Assert.IsNotNull(patrocinador);
 
 				patrocinador.Nombre = "Apress";
+				patrocinador.WebSite = "http://apress.com";
 			}
 
 			using (_requestEmulator.Invoke())
@@ -78,6 +80,7 @@
 
 				Assert.IsNotNull(patrocinador);
 				Assert.AreEqual("Apress", patrocinador.Nombre);
+				Assert.AreEqual("http://apress.com", patrocinador.WebSite);
 			}
 		}
 
--- a/Agendas/trunk/src/Agendas.Repositories.Tests/PatrocinadorEventoTests.cs	Mon Feb 27 13:14:57 2012 -0300
+++ b/Agendas/trunk/src/Agendas.Repositories.Tests/PatrocinadorEventoTests.cs	Mon Feb 27 14:45:12 2012 -0300
@@ -78,9 +78,9 @@
 			return evento.Id;
 		}
 
-		private Guid CrearPatrocinador(string nombre, string images)
+		private Guid CrearPatrocinador(string nombre, string webSite, string images)
 		{
-			var patrocinador = new Patrocinador(nombre)
+			var patrocinador = new Patrocinador(nombre, webSite)
 			                   	{
 									Logo = LoadLogo(images)
 			                   	};
@@ -97,7 +97,7 @@
 			var fechaTermino = fechaInicio.AddHours(2);
 			_agenda = new Agenda(null, _eventoRepository, _personaRepository, _patrocinadorRepository);
 
-			_apressId = CrearPatrocinador("Apress", "images/apress.gif");
+			_apressId = CrearPatrocinador("Apress", "http://apress.com/", "images/apress.gif");
 			_eventoUnoId = CrearEvento(new[] { "Carlos Peix", "Nelo Pauselli" }, "ADFS", fechaInicio, fechaTermino);
 			_eventoDosId = CrearEvento(new[] { "Carlos Peix", "Nelo Pauselli" }, "ADFS: Segunda parte.", fechaInicio.AddDays(3), fechaTermino.AddDays(3));
 		}
--- a/Agendas/trunk/src/Agendas.Repositories.Tests/TestsHelper.cs	Mon Feb 27 13:14:57 2012 -0300
+++ b/Agendas/trunk/src/Agendas.Repositories.Tests/TestsHelper.cs	Mon Feb 27 14:45:12 2012 -0300
@@ -30,12 +30,12 @@
 			return persona.Id;
 		}
 
-		public Guid GetOrCreatePatrocinador(string nombre)
+		public Guid GetOrCreatePatrocinador(string nombre, string webSite)
 		{
 			var patrocinador = _repositoryPatrocinador.GetByNombre(nombre);
 			if (patrocinador == null)
 			{
-				patrocinador = new Patrocinador(nombre);
+				patrocinador = new Patrocinador(nombre, webSite);
 				_repositoryPatrocinador.Save(patrocinador);
 
 				if (_repositoryPatrocinador is AltNetHispano.Agendas.Repositories.NHibernate.PatrocinadorRepository)
--- a/Agendas/trunk/src/Agendas.Repositories.Tests/Workflow.cs	Mon Feb 27 13:14:57 2012 -0300
+++ b/Agendas/trunk/src/Agendas.Repositories.Tests/Workflow.cs	Mon Feb 27 14:45:12 2012 -0300
@@ -75,7 +75,7 @@
 		{
 			using (_requestEmulator.Invoke())
 			{
-				_agenda.IndicarPatrocinadores(_eventoId, new List<Guid> {_testsHelper.GetOrCreatePatrocinador("Apress")});
+				_agenda.IndicarPatrocinadores(_eventoId, new List<Guid> { _testsHelper.GetOrCreatePatrocinador("Apress", "http://apress.com/") });
 			}
 			using (_requestEmulator.Invoke())
 			{
--- a/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs	Mon Feb 27 13:14:57 2012 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs	Mon Feb 27 14:45:12 2012 -0300
@@ -405,7 +405,7 @@
 			var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
 
 			agenda.Confirmar(evento.Id);
-			agenda.IndicarPatrocinadores(evento.Id, new List<Guid> { TestsHelper.GetOrCreatePatrocinador("Apress") });
+			agenda.IndicarPatrocinadores(evento.Id, new List<Guid> { TestsHelper.GetOrCreatePatrocinador("Apress", "http://apress.com/") });
 			agenda.Publicar(evento.Id, 1, urlWiki, duracion);
 
 			Assert.IsInstanceOf(typeof(EventoPublicadoState), evento.Estado);
@@ -427,7 +427,7 @@
 
 			var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
 			agenda.Confirmar(evento.Id);
-			agenda.IndicarPatrocinadores(evento.Id, new List<Guid> { TestsHelper.GetOrCreatePatrocinador("Apress") });
+			agenda.IndicarPatrocinadores(evento.Id, new List<Guid> { TestsHelper.GetOrCreatePatrocinador("Apress", "http://apress.com/") });
 			agenda.Publicar(evento.Id, 71, urlWiki, duracion);
 
 			Assert.AreEqual(71, evento.NumeroOrden);
@@ -466,7 +466,7 @@
 			var evento =
 				DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5");
 
-			agenda.IndicarPatrocinadores(evento.Id, new List<Guid> { TestsHelper.GetOrCreatePatrocinador("Apress") });
+			agenda.IndicarPatrocinadores(evento.Id, new List<Guid> { TestsHelper.GetOrCreatePatrocinador("Apress", "http://apress.com/") });
 
 			Assert.IsFalse(evento.Estado.GetType() == typeof(EventoConfirmadoState));
 			Assert.Throws<AccionNoSoportadaException>(() => agenda.Publicar(evento.Id, 1, urlWiki, duracion));
--- a/Agendas/trunk/src/Agendas.Tests/Eventos_y_patrocinadores_tests.cs	Mon Feb 27 13:14:57 2012 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/Eventos_y_patrocinadores_tests.cs	Mon Feb 27 14:45:12 2012 -0300
@@ -34,8 +34,8 @@
 			var fechaTermino = fechaInicio.AddHours(2); 
 			_agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
 
-			_apressId = CrearPatrocinador("Apress", "images/apress.gif");
-			_jetbrainsId = CrearPatrocinador("jetbrains", "images/jetbrains.png");
+			_apressId = CrearPatrocinador("Apress", "http://apress.com/", "images/apress.gif");
+			_jetbrainsId = CrearPatrocinador("jetbrains", "http://apress.com/", "images/jetbrains.png");
 			_eventoUnoId = CrearEvento(new[] { "Carlos Peix", "Nelo Pauselli" }, "ADFS", fechaInicio, fechaTermino);
 			_eventoDosId = CrearEvento(new[] { "Carlos Peix", "Nelo Pauselli" }, "ADFS: Segunda parte.", fechaInicio.AddDays(3), fechaTermino.AddDays(3));
 		}
@@ -101,9 +101,9 @@
 			}
 		}
 
-		private static Guid CrearPatrocinador(string nombre, string images)
+		private static Guid CrearPatrocinador(string nombre, string webSite, string images)
 		{
-			var patrocinador = new Patrocinador(nombre)
+			var patrocinador = new Patrocinador(nombre, webSite)
 			                   	{
 									Logo = LoadLogo(images)
 			                   	};
--- a/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs	Mon Feb 27 13:14:57 2012 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs	Mon Feb 27 14:45:12 2012 -0300
@@ -179,7 +179,7 @@
 
                     agenda.Confirmar(evento.Id);
 
-					agenda.IndicarPatrocinadores(evento.Id, new List<Guid> { TestsHelper.GetOrCreatePatrocinador("Apress") });
+					agenda.IndicarPatrocinadores(evento.Id, new List<Guid> { TestsHelper.GetOrCreatePatrocinador("Apress", "http://apress.com/") });
 
                     var r = agenda.Publicar(evento.Id, 1, "http://www.url.com", new TimeSpan(1, 58, 0));
 
@@ -199,7 +199,7 @@
 
                     agenda.Confirmar(evento.Id);
 
-					agenda.IndicarPatrocinadores(evento.Id, new List<Guid> {TestsHelper.GetOrCreatePatrocinador("Apress")});
+					agenda.IndicarPatrocinadores(evento.Id, new List<Guid> { TestsHelper.GetOrCreatePatrocinador("Apress", "http://apress.com/") });
                     var r = agenda.Publicar(evento.Id, 1, "http://www.url.com", new TimeSpan(1, 58, 0));
 
                     Assert.IsFalse(r.Succeful);
--- a/Agendas/trunk/src/Agendas.Tests/TestsHelper.cs	Mon Feb 27 13:14:57 2012 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/TestsHelper.cs	Mon Feb 27 14:45:12 2012 -0300
@@ -19,14 +19,14 @@
 			return persona.Id;
 		}
 
-		public static Guid GetOrCreatePatrocinador(string nombre)
+		public static Guid GetOrCreatePatrocinador(string nombre, string webSite)
 		{
 			var repository = new PatrocinadorRepository();
 
 			var patrocinador = repository.GetByNombre(nombre);
 			if (patrocinador == null)
 			{
-				patrocinador = new Patrocinador(nombre);
+				patrocinador = new Patrocinador(nombre, webSite);
 				repository.Save(patrocinador);
 			}
 			return patrocinador.Id;
--- a/Agendas/trunk/src/Agendas.Web.Tests/Controllers/PatrocinadorControllerTests.cs	Mon Feb 27 13:14:57 2012 -0300
+++ b/Agendas/trunk/src/Agendas.Web.Tests/Controllers/PatrocinadorControllerTests.cs	Mon Feb 27 14:45:12 2012 -0300
@@ -30,6 +30,7 @@
 			var form = new FormCollection
 			           	{
 			           		{"Nombre", "APRESS"},
+							{"WebSite", "http://apress.com/"},
 			           		{"Logo", @"images\apress.gif"}
 			           	};
 			var patrocinadorNew = BindModel<PatrocinadorNewModel>(patrocinadorController, form);
@@ -55,6 +56,8 @@
 		[Test]
 		public void PatrocinadorIndexGet()
 		{
+			CrearPatrocinadorApress();
+
 			var patrocinadorController = new PatrocinadorController(new HttpServerStub())
 			                             	{
 			                             		ControllerContext = ControllerCtx
@@ -64,6 +67,12 @@
 				var resultIndex = patrocinadorController.Index();
 				Assert.IsInstanceOf(typeof(ViewResult), resultIndex);
 				Assert.AreEqual("", ((ViewResult)resultIndex).ViewName);
+
+				var model = (PatrocinadorIndexModel)((ViewResult) resultIndex).Model;
+				Assert.AreEqual(1, model.Items.Count());
+
+				Assert.AreEqual("APRESS", model.Items.FirstOrDefault().Nombre);
+				Assert.AreEqual("http://apress.com/", model.Items.FirstOrDefault().WebSite);
 			}
 		}
 
@@ -90,10 +99,11 @@
 			                             		ControllerContext = ControllerCtx
 			                             	};
 			var form = new FormCollection
-                           {
-                               {"Nombre", "APRESS"},
-							   {"Logo", @"images\apress.gif"}
-                           };
+							{
+								{"Nombre", "APRESS"},
+								{"WebSite", "http://apress.com/"},
+								{"Logo", @"images\apress.gif"}
+							};
 			var patrocinadorNew = BindModel<PatrocinadorNewModel>(patrocinadorController, form);
 
 			using (new RequestEmulator(NhHelper.GetSessionFactory()))
@@ -127,6 +137,8 @@
 				Assert.AreEqual("DefaultEditor", viewResultNuevo.ViewName);
 				Assert.AreEqual(1, viewResultNuevo.ViewData.ModelState["Nombre"].Errors.Count);
 				Assert.AreEqual("El campo Nombre es obligatorio.", viewResultNuevo.ViewData.ModelState["Nombre"].Errors[0].ErrorMessage);
+				Assert.AreEqual(1, viewResultNuevo.ViewData.ModelState["Nombre"].Errors.Count);
+				Assert.AreEqual("El campo WebSite es obligatorio.", viewResultNuevo.ViewData.ModelState["WebSite"].Errors[0].ErrorMessage);
 				Assert.AreEqual(1, viewResultNuevo.ViewData.ModelState["Logo"].Errors.Count);
 				Assert.AreEqual("El campo Logo es obligatorio.", viewResultNuevo.ViewData.ModelState["Logo"].Errors[0].ErrorMessage);
 			}
@@ -144,6 +156,7 @@
 			var form = new FormCollection
 			           	{
 			           		{"Nombre", "APRESS"},
+			           		{"WebSite", "http://apress.com/"},
 			           		{"Logo", @"images\apress.gif"}
 			           	};
 			var patrocinadorNew = BindModel<PatrocinadorNewModel>(patrocinadorController, form);
@@ -200,6 +213,7 @@
 		[Test]
 		public void PatrocinadorModificarPostSatisfactorio()
 		{
+			var Id = Guid.Empty;
 			PatrocinadorRepository patrocinadorRepository;
 			PatrocinadorEditModel patrocinadorEdit;
 
@@ -211,13 +225,14 @@
 			using (new RequestEmulator(NhHelper.GetSessionFactory()))
 			{
 				patrocinadorRepository = new PatrocinadorRepository(NhHelper.GetSessionFactory());
-
+				Id = patrocinadorRepository.GetAll().FirstOrDefault().Id;
 				var form = new FormCollection
-				           	{
-				           		{"Id", patrocinadorRepository.GetAll().FirstOrDefault().Id.ToString()},
-				           		{"Nombre", "APRESS"},
-				           		{"Logo", @"images\apress.gif"}
-				           	};
+							{
+								{"Id", Id.ToString()},
+								{"Nombre", "APRESS2"},
+								{"WebSite", "http://apress.com/2"},
+								{"Logo", @"images\apress.gif"}
+							};
 				patrocinadorEdit = BindModel<PatrocinadorEditModel>(patrocinadorController, form);
 			}
 
@@ -230,6 +245,13 @@
 				Assert.AreEqual("Index", viewResultEdit.RouteValues["action"]);
 				Assert.AreEqual(1, patrocinadorRepository.GetAll().Count());
 			}
+			using (new RequestEmulator(NhHelper.GetSessionFactory()))
+			{
+				var patrocinador = patrocinadorRepository.GetById(Id.ToString());
+
+				Assert.AreEqual("APRESS2", patrocinador.Nombre);
+				Assert.AreEqual("http://apress.com/2", patrocinador.WebSite);
+			}
 		}
 
 		[Test]
--- a/Agendas/trunk/src/Agendas.Web/Controllers/PatrocinadorController.cs	Mon Feb 27 13:14:57 2012 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Controllers/PatrocinadorController.cs	Mon Feb 27 14:45:12 2012 -0300
@@ -59,7 +59,8 @@
 										select new PatrocinadorDto
 										       	{
 										       		Id = p.Id,
-													Nombre = p.Nombre
+													Nombre = p.Nombre,
+													WebSite = p.WebSite
 										       	}
         	            	};
 
@@ -83,7 +84,7 @@
 
 				if (patrocinadores.GetByNombre(model.Nombre) == null)
 				{
-					var patrocinador = new Patrocinador(model.Nombre);
+					var patrocinador = new Patrocinador(model.Nombre, model.WebSite);
 
 					patrocinador.Logo = StreamToArray(model.Logo.InputStream);
 
@@ -123,7 +124,8 @@
 			var model = new PatrocinadorEditModel
 			            	{
 								Id = new Guid(id).ToString(),
-								Nombre = patrocinador.Nombre
+								Nombre = patrocinador.Nombre,
+								WebSite = patrocinador.WebSite
 			            	};
 			return View("DefaultEditor", model);
 		}
@@ -139,6 +141,7 @@
 				if (patrocinador != null)
 				{
 					patrocinador.Nombre = model.Nombre;
+					patrocinador.WebSite = model.WebSite;
 					patrocinador.Logo = StreamToArray(model.Logo.InputStream);
 
 					patrocinadores.Save(patrocinador);
--- a/Agendas/trunk/src/Agendas.Web/Models/PatrocinadorModel.cs	Mon Feb 27 13:14:57 2012 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Models/PatrocinadorModel.cs	Mon Feb 27 14:45:12 2012 -0300
@@ -5,6 +5,7 @@
 using System.Linq;
 using System.Web;
 using System.Web.Mvc;
+using DataAnnotationsExtensions;
 
 namespace AltNetHispano.Agendas.Web.Models
 {
@@ -17,7 +18,7 @@
 	{
 		public Guid Id { get; set; }
 		public string Nombre { get; set; }
-		
+		public string WebSite { get; set; }
 	}
 
 	public class PatrocinadorNewModel
@@ -26,6 +27,10 @@
 		public string Nombre { get; set; }
 
 		[Required]
+		[Url]
+		public string WebSite { get; set; }
+
+		[Required]
 		public HttpPostedFileBase Logo { get; set; }
 	}
 
@@ -39,6 +44,10 @@
 		public string Nombre { get; set; }
 
 		[Required]
+		[Url]
+		public string WebSite { get; set; }
+
+		[Required]
 		public HttpPostedFileBase Logo { get; set; }
 	}
 }
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Web/Views/Patrocinador/Index.cshtml	Mon Feb 27 13:14:57 2012 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Views/Patrocinador/Index.cshtml	Mon Feb 27 14:45:12 2012 -0300
@@ -17,7 +17,7 @@
         { 
             <tr>
                 <td><img src="@Url.Action("GetLogo", new { id = item.Id })" /></td>
-                <td>@item.Nombre</td>
+                <td><a href="@item.WebSite" target="_blank">@item.Nombre</a></td>
                 <td class="buttons">
                     @Html.ActionLink("Modificar", "Modificar", new { id = item.Id })
 					<span>&nbsp;</span>