changeset 161:c1062de96845

Al publicar una agenda el nroOrden debe ser mayor a cero y urlWiki no vacio.
author juanjose.montesdeocaarbos
date Fri, 05 Aug 2011 21:54:43 -0300
parents 4241a930cab2
children 557c386fcecc
files Agendas/trunk/src/Agendas.Domain/Agenda.cs Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Agendas/trunk/src/Agendas.Tests/Workflows/Workflow.cs Agendas/trunk/src/Agendas.Tests/Workflows/WorkflowTests.cs Agendas/trunk/src/Agendas.Web/Controllers/HistoricoController.cs
diffstat 5 files changed, 47 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Fri Aug 05 21:39:37 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Fri Aug 05 21:54:43 2011 -0300
@@ -125,6 +125,12 @@
 
         public Resultado Publicar(Guid eventoId, short numeroOrden, string urlWiki)
         {
+            if (numeroOrden <= 0)
+                throw new ArgumentOutOfRangeException("numeroOrden");
+
+            if (string.IsNullOrWhiteSpace(urlWiki))
+                throw new ArgumentException("urlWiki");
+
             Evento evento = GetEvento(eventoId);
 
             evento.Publicar(numeroOrden, urlWiki);
--- a/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs	Fri Aug 05 21:39:37 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs	Fri Aug 05 21:54:43 2011 -0300
@@ -288,6 +288,7 @@
 		[Test]
 		public void Al_publicar_un_evento_debe_quedar_con_estado_EventoPublicadoState_y_debe_generar_el_track_correspondiente()
 		{
+            const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx";
 			var publicador1 = new Mock<IPublicador>();
 
 			var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
@@ -296,7 +297,7 @@
 			var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
 
 			agenda.Confirmar(evento.Id);
-			agenda.Publicar(evento.Id, 0, string.Empty);
+            agenda.Publicar(evento.Id, 1, urlWiki);
 
 			Assert.IsInstanceOf(typeof(EventoPublicadoState), evento.Estado);
 			Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Publicar) == 1);
@@ -350,8 +351,40 @@
 				DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5");
 
 			Assert.IsFalse(evento.Estado.GetType() == typeof(EventoConfirmadoState));
-
-			agenda.Publicar(evento.Id, 0, string.Empty);
+            const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx";
+            agenda.Publicar(evento.Id, 1, urlWiki);
 		}
-	}
+
+        [Test]
+        public void Publicar_Evento_Con_NroOrden_Invalido_Genera_Excepcion()
+        {
+            var publicador1 = new Mock<IPublicador>();
+
+            var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
+            agenda.Agendar("Html 5", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.MinValue, urlInvitacion, TipoEvento.Van);
+
+            var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
+            agenda.Confirmar(evento.Id);
+
+            const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx";
+
+            Assert.Throws<ArgumentOutOfRangeException>(() => agenda.Publicar(evento.Id, 0, urlWiki));
+            Assert.Throws<ArgumentOutOfRangeException>(() => agenda.Publicar(evento.Id, -1, urlWiki));
+        }
+
+        [Test]
+        public void Publicar_Evento_Con_Url_Invalida_Genera_Excepcion()
+        {
+            var publicador1 = new Mock<IPublicador>();
+
+            var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
+            agenda.Agendar("Html 5", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.MinValue, urlInvitacion, TipoEvento.Van);
+
+            var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
+            agenda.Confirmar(evento.Id);
+
+            Assert.Throws<ArgumentException>(() => agenda.Publicar(evento.Id, 1, ""));
+            Assert.Throws<ArgumentException>(() => agenda.Publicar(evento.Id, 1, " "));
+        }
+    }
 }
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/Workflows/Workflow.cs	Fri Aug 05 21:39:37 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/Workflows/Workflow.cs	Fri Aug 05 21:54:43 2011 -0300
@@ -36,7 +36,7 @@
 
 		public void Publicar(Guid eventoId)
 		{
-			var resultado = _agenda.Publicar(eventoId, 0, string.Empty);
+			var resultado = _agenda.Publicar(eventoId, 1, "http://www.altnethispano.org/");
 			Assert.IsTrue(resultado.Succeful);
 		}
 
--- a/Agendas/trunk/src/Agendas.Tests/Workflows/WorkflowTests.cs	Fri Aug 05 21:39:37 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/Workflows/WorkflowTests.cs	Fri Aug 05 21:54:43 2011 -0300
@@ -170,6 +170,8 @@
 		[Test]
 		public void Proponer_agendar_confirmar_publicar()
 		{
+            const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx";
+
 			_workflow.Proponer();
 
 			_workflow.Agendar();
--- a/Agendas/trunk/src/Agendas.Web/Controllers/HistoricoController.cs	Fri Aug 05 21:39:37 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Controllers/HistoricoController.cs	Fri Aug 05 21:54:43 2011 -0300
@@ -24,7 +24,7 @@
 													Ponente = e.Ponente.Nombre,
                                                     Numero = e.NumeroOrden.ToString(),
                                                     Tipo = e.Tipo.ToString(),
-                                                    Duracion = "0:00"
+                                                    Duracion = "0:00" //TODO: e.GetEvento()
 			            		               	}
 			            	};
 			return View(model);