# HG changeset patch # User juanjose.montesdeocaarbos # Date 1317899585 10800 # Node ID 59f8fa2f835ea4d9c0ba60485d3d86550b93f842 # Parent 5cc1681d3789e122d770e69f62fe87abde0c79af Ticket 177: Valor de Duración de VAN en 0. diff -r 5cc1681d3789 -r 59f8fa2f835e Agendas/trunk/src/Agendas.Domain/Agenda.cs --- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Wed Oct 05 07:57:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Thu Oct 06 08:13:05 2011 -0300 @@ -174,13 +174,13 @@ public EventoResultado Publicar(Guid eventoId, short numeroOrden, string urlWiki, TimeSpan duracion) { if (numeroOrden <= 0) - throw new ArgumentOutOfRangeException("numeroOrden"); + return new EventoResultado(false, "Número de Orden fuera de rango", null); if (string.IsNullOrWhiteSpace(urlWiki)) - throw new ArgumentException("urlWiki"); + return new EventoResultado(false, "Url Wiki incorrecto", null); if (duracion.Hours.Equals(0) && duracion.Minutes.Equals(0)) - throw new ArgumentOutOfRangeException("duracion"); + return new EventoResultado(false, "Duración fuera de rango", null); Evento evento = GetEvento(eventoId); diff -r 5cc1681d3789 -r 59f8fa2f835e Agendas/trunk/src/Agendas.Tests/AgendarTests.cs --- a/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Wed Oct 05 07:57:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Thu Oct 06 08:13:05 2011 -0300 @@ -483,30 +483,38 @@ const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx"; - Assert.Throws(() => agenda.Publicar(evento.Id, 0, urlWiki, duracion)); - Assert.Throws(() => agenda.Publicar(evento.Id, -1, urlWiki, duracion)); + var eventoResultado = agenda.Publicar(evento.Id, 0, urlWiki, duracion); + Assert.IsFalse(eventoResultado.Succeful); + Assert.AreEqual("Número de Orden fuera de rango", eventoResultado.Message); + eventoResultado = agenda.Publicar(evento.Id, -1, urlWiki, duracion); + Assert.IsFalse(eventoResultado.Succeful); + Assert.AreEqual("Número de Orden fuera de rango", eventoResultado.Message); } [Test] public void Publicar_Evento_Con_Url_Invalida_Genera_Excepcion() { - var duracion = new TimeSpan(1, 34, 00); + var duracion = new TimeSpan(1, 34, 00); var publicador1 = new Mock(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); var fechaInicio = DateTime.MinValue.ToUniversalTime(); var fechaTermino = fechaInicio.AddHours(2); - agenda.Agendar("Html 5", new[]{TestsHelper.GetOrCreatePonente("jjmontes")}, fechaInicio, fechaTermino, + agenda.Agendar("Html 5", new[] {TestsHelper.GetOrCreatePonente("jjmontes")}, fechaInicio, fechaTermino, urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); agenda.Confirmar(evento.Id); - Assert.Throws(() => agenda.Publicar(evento.Id, 1, "", duracion)); - Assert.Throws(() => agenda.Publicar(evento.Id, 1, " ", duracion)); + var eventoResultado = agenda.Publicar(evento.Id, 1, "", duracion); + Assert.IsFalse(eventoResultado.Succeful); + Assert.AreEqual("Url Wiki incorrecto", eventoResultado.Message); + eventoResultado = agenda.Publicar(evento.Id, 1, " ", duracion); + Assert.IsFalse(eventoResultado.Succeful); + Assert.AreEqual("Url Wiki incorrecto", eventoResultado.Message); } - [Test] + [Test] public void Publicar_Evento_Con_Duracion_Invalida_Genera_Excepcion() { const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx"; @@ -521,9 +529,13 @@ var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); agenda.Confirmar(evento.Id); - Assert.Throws(() => agenda.Publicar(evento.Id, 1, urlWiki, new TimeSpan(0, 0, 0))); - Assert.Throws(() => agenda.Publicar(evento.Id, 1, urlWiki, new TimeSpan(0, 0, 59))); - } + var eventoResultado = agenda.Publicar(evento.Id, 1, urlWiki, new TimeSpan(0, 0, 0)); + Assert.IsFalse(eventoResultado.Succeful); + Assert.AreEqual("Duración fuera de rango", eventoResultado.Message); + eventoResultado = agenda.Publicar(evento.Id, 1, urlWiki, new TimeSpan(0, 0, 59)); + Assert.IsFalse(eventoResultado.Succeful); + Assert.AreEqual("Duración fuera de rango", eventoResultado.Message); + } [Test] public void Verificar_que_no_se_puedan_agendar_dos_eventos_para_el_mismo_intervalo() diff -r 5cc1681d3789 -r 59f8fa2f835e Agendas/trunk/src/Agendas.Web.Tests/Agendas.Web.Tests.csproj --- a/Agendas/trunk/src/Agendas.Web.Tests/Agendas.Web.Tests.csproj Wed Oct 05 07:57:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web.Tests/Agendas.Web.Tests.csproj Thu Oct 06 08:13:05 2011 -0300 @@ -31,6 +31,9 @@ 4 + + ..\packages\Castle.Core.2.5.2\lib\NET35\Castle.Core.dll + ..\packages\Moq.4.0.10827\lib\NET40\Moq.dll diff -r 5cc1681d3789 -r 59f8fa2f835e Agendas/trunk/src/Agendas.Web.Tests/Controllers/EventoControllerTests.cs --- a/Agendas/trunk/src/Agendas.Web.Tests/Controllers/EventoControllerTests.cs Wed Oct 05 07:57:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web.Tests/Controllers/EventoControllerTests.cs Thu Oct 06 08:13:05 2011 -0300 @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using System.Web.Mvc; using Agendas.NHibernate; using Agendas.Repositories.Tests.Infraestructure; using AltNetHispano.Agendas.Domain; @@ -16,47 +17,98 @@ [TestFixture] public class EventoControllerTests { - [SetUp] - public void SetearUsuario() + private void PopulatePersona() + { + using (new RequestEmulator(NhHelper.GetSessionFactory())) + { + var personaController = new PersonaController(); + personaController.Nueva(new PersonaNewModel + { + Nombre = "Persona 1", + Blog = "http://blog.persona1.com", + EMail = "info@persona1.com", + Roles = new string[] {"Administrador", "Usuario"}, + Twitter = "persona1" + }); + } + } + + private Guid GetGuidPersona() + { + using (new RequestEmulator(NhHelper.GetSessionFactory())) + { + var personaController = new PersonaController(); + var viewResult = (ViewResult) personaController.Index(); + return ((PersonaIndexModel) viewResult.Model).Items.FirstOrDefault().Id; + } + } + + private void SetearUsuario() { var seguridad = new Mock(); seguridad.Setup(s => s.GetUserName()).Returns("neluz"); IdentityContext.Init(seguridad.Object, new PersonaRepository(NhHelper.GetSessionFactory())); - } - [Test] - [Ignore] + [SetUp] + public void Setup() + { + NhHelperTest.CleanDb(); + PopulatePersona(); + SetearUsuario(); + } + + [Test] public void Publicar_Evento() { + ViewResult viewResult = null; + IEnumerable eventosDto = null; + EventoPublicarModel eventoPublicar = null; var eventoController = new EventoController(); var eventoNew = new EventoNewModel { Duracion = new TimeSpan(0, 0, 0), - Fecha = DateTime.Today.AddDays(5), + Fecha = DateTime.Today.AddDays(15), Hora = new TimeSpan(18, 0, 0), - Ponentes = new[] {Guid.NewGuid()}, + Ponentes = new[] { GetGuidPersona()}, TipoEvento = (int) TipoEvento.Van, - Titulo = "Título 1" + Titulo = "Título 2" }; - + using (new RequestEmulator(NhHelper.GetSessionFactory())) { - var resultNuevo = eventoController.Nuevo(eventoNew); + eventoController.Nuevo(eventoNew); } - - var eventoPublicar = new EventoPublicarModel - { - NroOrden = 1, - Titulo = "Título 1", - UrlWiki = "http://www.altnethistpano.org/vans/titulo-1.ashx", - DuracionReal = new TimeSpan(0, 0, 0) - }; - + using (new RequestEmulator(NhHelper.GetSessionFactory())) + { + viewResult = (ViewResult)eventoController.Index(); + } + using (new RequestEmulator(NhHelper.GetSessionFactory())) + { + eventosDto = ((EventoIndexModel) viewResult.Model).ProximosEventos; + } using (new RequestEmulator(NhHelper.GetSessionFactory())) { - var resultPublicar = eventoController.Publicar(eventoPublicar); + var firstEvent = eventosDto.LastOrDefault(); + + eventoPublicar = new EventoPublicarModel + { + Id = firstEvent.Id, + NroOrden = 1, + //Titulo = "Título 2", + UrlWiki = "http://www.altnethistpano.org/vans/titulo-1.ashx", + DuracionReal = new TimeSpan(0, 0, 0) + }; + } + using (new RequestEmulator(NhHelper.GetSessionFactory())) + { + var resultPublicar = (ViewResult)eventoController.Publicar(eventoPublicar); + var modelState = resultPublicar.ViewData.ModelState.FirstOrDefault().Value; + + Assert.AreEqual(1, modelState.Errors.Count); + Assert.AreEqual("Duración fuera de rango", modelState.Errors.FirstOrDefault().ErrorMessage); + } } }