# HG changeset patch # User juanjose.montesdeocaarbos # Date 1330364712 10800 # Node ID 48ab8788bd19ca63089f5deeaef4e213fc7447aa # Parent 8522d6a25888ce714cce223931d87a16f7067c3d #200: Patrocinadores: Agregar link al sitio web. diff -r 8522d6a25888 -r 48ab8788bd19 Agendas/trunk/db/v1.1/03 - Patrocinadores.sql --- /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 diff -r 8522d6a25888 -r 48ab8788bd19 Agendas/trunk/src/Agendas.Domain/Patrocinador.cs --- 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() diff -r 8522d6a25888 -r 48ab8788bd19 Agendas/trunk/src/Agendas.Repositories.Tests/PatrocinadorCrud.cs --- 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); } } diff -r 8522d6a25888 -r 48ab8788bd19 Agendas/trunk/src/Agendas.Repositories.Tests/PatrocinadorEventoTests.cs --- 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)); } diff -r 8522d6a25888 -r 48ab8788bd19 Agendas/trunk/src/Agendas.Repositories.Tests/TestsHelper.cs --- 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) diff -r 8522d6a25888 -r 48ab8788bd19 Agendas/trunk/src/Agendas.Repositories.Tests/Workflow.cs --- 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 {_testsHelper.GetOrCreatePatrocinador("Apress")}); + _agenda.IndicarPatrocinadores(_eventoId, new List { _testsHelper.GetOrCreatePatrocinador("Apress", "http://apress.com/") }); } using (_requestEmulator.Invoke()) { diff -r 8522d6a25888 -r 48ab8788bd19 Agendas/trunk/src/Agendas.Tests/AgendarTests.cs --- 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 { TestsHelper.GetOrCreatePatrocinador("Apress") }); + agenda.IndicarPatrocinadores(evento.Id, new List { 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 { TestsHelper.GetOrCreatePatrocinador("Apress") }); + agenda.IndicarPatrocinadores(evento.Id, new List { 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 { TestsHelper.GetOrCreatePatrocinador("Apress") }); + agenda.IndicarPatrocinadores(evento.Id, new List { TestsHelper.GetOrCreatePatrocinador("Apress", "http://apress.com/") }); Assert.IsFalse(evento.Estado.GetType() == typeof(EventoConfirmadoState)); Assert.Throws(() => agenda.Publicar(evento.Id, 1, urlWiki, duracion)); diff -r 8522d6a25888 -r 48ab8788bd19 Agendas/trunk/src/Agendas.Tests/Eventos_y_patrocinadores_tests.cs --- 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) }; diff -r 8522d6a25888 -r 48ab8788bd19 Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs --- 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 { TestsHelper.GetOrCreatePatrocinador("Apress") }); + agenda.IndicarPatrocinadores(evento.Id, new List { 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 {TestsHelper.GetOrCreatePatrocinador("Apress")}); + agenda.IndicarPatrocinadores(evento.Id, new List { 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); diff -r 8522d6a25888 -r 48ab8788bd19 Agendas/trunk/src/Agendas.Tests/TestsHelper.cs --- 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; diff -r 8522d6a25888 -r 48ab8788bd19 Agendas/trunk/src/Agendas.Web.Tests/Controllers/PatrocinadorControllerTests.cs --- 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(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(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(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(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] diff -r 8522d6a25888 -r 48ab8788bd19 Agendas/trunk/src/Agendas.Web/Controllers/PatrocinadorController.cs --- 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); diff -r 8522d6a25888 -r 48ab8788bd19 Agendas/trunk/src/Agendas.Web/Models/PatrocinadorModel.cs --- 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 diff -r 8522d6a25888 -r 48ab8788bd19 Agendas/trunk/src/Agendas.Web/Views/Patrocinador/Index.cshtml --- 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 @@ { - @item.Nombre + @item.Nombre @Html.ActionLink("Modificar", "Modificar", new { id = item.Id })