diff Agendas/trunk/src/Agendas.Tests/AgendarTests.cs @ 109:6bd9be78caa0

Merge
author Nelo@Kenia.neluz.int
date Tue, 07 Jun 2011 23:21:07 -0300
parents 80c22175c9b5
children b74734a1a755
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs	Tue Jun 07 23:07:06 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs	Tue Jun 07 23:21:07 2011 -0300
@@ -31,7 +31,7 @@
 
 			var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository);
 
-			Assert.Throws<Exception>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion));
+      Assert.Throws<Exception>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van));
 			Assert.AreEqual(0, agenda.GetEventosAgendados().Count);
 
 			publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
@@ -50,7 +50,7 @@
 
 			Assert.Throws<IdentityContextNotConfiguredException>(
 				() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
-					urlInvitacion));
+          urlInvitacion, TipoEvento.Van));
 			repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
 		}
 
@@ -65,7 +65,7 @@
 			var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository);
 
 			Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
-				urlInvitacion));
+        urlInvitacion, TipoEvento.Van));
 
 			publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(0));
 			repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
@@ -77,7 +77,7 @@
 			var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
 
 			var r = agenda.Agendar("Van para publicar", string.Empty, DateTime.Now,
-				urlInvitacion);
+        urlInvitacion, TipoEvento.Van);
 
 			Assert.IsFalse(r.Succeful);
 		}
@@ -94,7 +94,7 @@
 															repository.Object, DefaultPersonaRepository);
 
 			agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
-				urlInvitacion);
+        urlInvitacion, TipoEvento.Van);
 
 			publicador1.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
 			publicador2.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
@@ -109,7 +109,7 @@
 			var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository);
 
 			agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
-				urlInvitacion);
+        urlInvitacion, TipoEvento.Van);
 
 			Assert.AreEqual(0, agenda.GetEventosPropuestos().Count);
 
@@ -132,7 +132,7 @@
 			var agenda = new Agenda(publicador.Object, repository, DefaultPersonaRepository);
 
 			agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
-				urlInvitacion);
+        urlInvitacion, TipoEvento.Van);
 
 			publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
 
@@ -165,7 +165,7 @@
 															DefaultEventoRepository, DefaultPersonaRepository);
 
 			agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
-				urlInvitacion);
+        urlInvitacion, TipoEvento.Van);
 
 			var van = agenda.GetEventosAgendados().Single(v => v.Titulo == "Van para publicar");
 			//agenda.Recordar(van.Id);
@@ -184,7 +184,7 @@
 			var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }),
 															DefaultEventoRepository, DefaultPersonaRepository);
 
-			agenda.Proponer("Html 5", "jjmontes", urlInvitacion);
+      agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
 			Assert.AreEqual(1, agenda.GetEventosPropuestos().Count);
 			Assert.AreEqual(0, agenda.GetEventosAgendados().Count);
 
@@ -202,5 +202,116 @@
 			Assert.IsNotNull(agendado.Tracks.Where(t => t.Accion == Accion.Proponer).SingleOrDefault());
 			Assert.IsNotNull(agendado.Tracks.Where(t => t.Accion == Accion.Agendar).SingleOrDefault());
 		}
+
+    [Test]
+    public void Al_proponer_un_evento_debe_quedar_con_estado_EventoPropuestoState_y_debe_generar_el_track_correspondiente()
+    {
+ 			var publicador1 = new Mock<IPublicador>();
+
+      var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
+      agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
+
+      var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5");
+
+      Assert.IsInstanceOf(typeof(EventoPropuestoState), evento.GetEstado());
+      Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Proponer) == 1);
+    }
+
+    [Test]
+    public void Al_agendar_un_evento_debe_quedar_con_estado_EventoAgendadoState_y_debe_generar_el_track_correspondiente()
+    {
+ 			var publicador1 = new Mock<IPublicador>();
+
+      var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
+      agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
+
+      var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5");
+
+      Assert.IsInstanceOf(typeof(EventoAgendadoState), evento.GetEstado());
+      Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Agendar) == 1);
+    }
+
+    [Test]
+    public void Al_confirmar_un_evento_debe_quedar_con_estado_EventoConfirmadoState_y_debe_generar_el_track_correspondiente()
+    {
+ 			var publicador1 = new Mock<IPublicador>();
+
+      var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
+      agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
+
+      var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5");
+
+      agenda.Confirmar(evento.Id);
+
+      Assert.IsInstanceOf(typeof(EventoConfirmadoState), evento.GetEstado());
+      Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Confirmar) == 1);
+    }
+
+    [Test]
+    public void Al_publicar_un_evento_debe_quedar_con_estado_EventoPublicadoState_y_debe_generar_el_track_correspondiente()
+    {
+ 			var publicador1 = new Mock<IPublicador>();
+
+      var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
+      agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
+
+      var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5");
+
+      agenda.Confirmar(evento.Id);
+      agenda.Publicar(evento.Id, 0, string.Empty);
+
+      Assert.IsInstanceOf(typeof(EventoPublicadoState), evento.GetEstado());
+      Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Publicar) == 1);
+    }
+
+    [Test]
+    public void Al_publicar_un_evento_debe_asignarse_el_nro_de_reunion_y_la_url_de_la_wiki()
+    {
+      var publicador1 = new Mock<IPublicador>();
+
+      var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
+      agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
+
+      var evento = DefaultEventoRepository.GetEventosConFecha().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";
+      agenda.Publicar(evento.Id, 71, urlWiki);
+
+      Assert.AreEqual(71, evento.NumeroOrden);
+      Assert.AreEqual(urlWiki, evento.UrlWiki);
+    }
+
+    [Test]
+    [ExpectedException(typeof(AccionNoSoportadaException))]
+    public void Al_confirmar_sin_agendar_debe_lanzarse_excepcion()
+    {
+ 			var publicador1 = new Mock<IPublicador>();
+
+      var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
+      agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
+
+      var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5");
+
+      Assert.IsFalse(evento.Estado.GetType() == typeof(EventoAgendadoState));
+
+      agenda.Confirmar(evento.Id);
+    }
+
+    [Test]
+    [ExpectedException(typeof(AccionNoSoportadaException))]
+    public void Al_publicar_sin_confirmar_debe_lanzarse_excepcion()
+    {
+ 			var publicador1 = new Mock<IPublicador>();
+
+      var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
+      agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
+
+      var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5");
+
+      Assert.IsFalse(evento.Estado.GetType() == typeof(EventoConfirmadoState));
+
+      agenda.Publicar(evento.Id, 0, string.Empty);
+    }
 	}
 }
\ No newline at end of file