changeset 102:92c5a12015f3

agregado de tests sobre los estados de un Evento
author jorge.rowies
date Sun, 05 Jun 2011 11:57:34 -0300
parents 9bfdd5bf3ad2
children 23325dddddcc
files Agendas/trunk/src/Agendas.Tests/AgendarTests.cs
diffstat 1 files changed, 93 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs	Sun Jun 05 11:10:32 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs	Sun Jun 05 11:57:34 2011 -0300
@@ -202,5 +202,98 @@
 			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);
+
+      var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5");
+
+      Assert.IsInstanceOf(typeof(EventoPropuestoState), evento.Estado);
+      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);
+
+      var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5");
+
+      Assert.IsInstanceOf(typeof(EventoAgendadoState), evento.Estado);
+      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);
+
+      var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5");
+
+      agenda.Confirmar(evento.Id);
+
+      Assert.IsInstanceOf(typeof(EventoConfirmadoState), evento.Estado);
+      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);
+
+      var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5");
+
+      agenda.Confirmar(evento.Id);
+      agenda.Publicar(evento.Id);
+
+      Assert.IsInstanceOf(typeof(EventoPublicadoState), evento.Estado);
+      Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Publicar) == 1);
+    }
+
+    [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);
+
+      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);
+
+      var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5");
+
+      Assert.IsFalse(evento.Estado.GetType() == typeof(EventoConfirmadoState));
+
+      agenda.Publicar(evento.Id);
+    }
 	}
 }
\ No newline at end of file