changeset 244:31fb96912d37

Ticket 162: Publicaciones con Nro Orden repetido.
author juanjose.montesdeocaarbos
date Thu, 06 Oct 2011 09:09:37 -0300
parents 59f8fa2f835e
children bdc946dd5c94
files Agendas/trunk/src/Agendas.Domain/Agenda.cs Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs
diffstat 2 files changed, 49 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Thu Oct 06 08:13:05 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Thu Oct 06 09:09:37 2011 -0300
@@ -180,7 +180,12 @@
                 return new EventoResultado(false, "Url Wiki incorrecto", null); 
 
 			if (duracion.Hours.Equals(0) && duracion.Minutes.Equals(0))
-                return new EventoResultado(false, "Duración fuera de rango", null); 
+                return new EventoResultado(false, "Duración fuera de rango", null);
+
+            if (_eventosRepository.GetByState(EventoPublicadoState.GetInstance()).Any(e => e.NumeroOrden.Equals(numeroOrden)))
+            {
+                return new EventoResultado(false, "El número de evento ya se encuentra en uso", null);
+            } 
 
             Evento evento = GetEvento(eventoId);
 
--- a/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs	Thu Oct 06 08:13:05 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs	Thu Oct 06 09:09:37 2011 -0300
@@ -161,5 +161,48 @@
 			Assert.AreEqual(1, eventosPropuestos.Count);
 			Assert.AreEqual(1, eventosAgendados.Count);
 		}
+
+        [Test]
+        public void Publicar_con_Nro_Duplicado()
+        {
+            var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
+            {
+                var fechaInicio = DateTime.Now.ToUniversalTime();
+                var fechaTermino = fechaInicio.AddHours(2);
+
+                agenda.Agendar("Van", new[] { TestsHelper.GetOrCreatePonente("jjmontes") }, fechaInicio, fechaTermino,
+                                           urlInvitacion, TipoEvento.Van);
+                {
+                    IList<Evento> eventosAgendado = agenda.GetEventosActivos(EventoAgendadoState.GetInstance());
+
+                    var evento = eventosAgendado.FirstOrDefault();
+
+                    agenda.Confirmar(evento.Id);
+
+                    var r = agenda.Publicar(evento.Id, 1, "http://www.url.com", new TimeSpan(1, 58, 0));
+
+                    Assert.IsTrue(r.Succeful);
+                }
+            }
+
+            {
+                var fechaInicio = DateTime.Now.AddDays(1).ToUniversalTime();
+                var fechaTermino = fechaInicio.AddHours(2);
+                agenda.Agendar("Van 2", new[] { TestsHelper.GetOrCreatePonente("jjmontes") }, fechaInicio, fechaTermino,
+                                           urlInvitacion, TipoEvento.Van);
+                {
+                    IList<Evento> eventosAgendado = agenda.GetEventosActivos(EventoAgendadoState.GetInstance());
+
+                    var evento = eventosAgendado.LastOrDefault();
+
+                    agenda.Confirmar(evento.Id);
+
+                    var r = agenda.Publicar(evento.Id, 1, "http://www.url.com", new TimeSpan(1, 58, 0));
+
+                    Assert.IsFalse(r.Succeful);
+                    Assert.AreEqual("El número de evento ya se encuentra en uso", r.Message);
+                }
+            }
+        }
 	}
 }
\ No newline at end of file