changeset 272:33e6ee3d1776

Ticket #181: No twittear eventos pasados. Tests armado, y su corrección. Corrección de otros tests que intentaban twittear con fechas fijas.
author juanjose.montesdeocaarbos
date Fri, 18 Nov 2011 23:09:58 -0300
parents e2c6610b14c7
children a7420f05716a
files Agendas/trunk/src/Agendas.Twitter.Tests/Publicador_tests.cs Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs
diffstat 2 files changed, 49 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Twitter.Tests/Publicador_tests.cs	Fri Nov 11 08:14:21 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Twitter.Tests/Publicador_tests.cs	Fri Nov 18 23:09:58 2011 -0300
@@ -81,7 +81,7 @@
 			foreach (var ponente in ponentes)
 				DefaultPersonaRepository.Save(ponente);
 
-			var inicio = new DateTime(2011, 10, 1);
+			var inicio = DateTime.Today.AddDays(2);
 
 			agenda.Agendar("Identity Providers Públicos y Empresariales", ponentes.Select(p=>p.Id), inicio, inicio.AddHours(2), null, TipoEvento.Van);
 
@@ -117,7 +117,7 @@
 			var publicador = new TwitterPublicador(adapter.Object);
 			var agenda = new Agenda(publicador, DefaultEventoRepository, DefaultPersonaRepository);
 
-			var inicio = new DateTime(2011, 10, 1);
+			var inicio = DateTime.Today;
 
 			agenda.Agendar("Identity Providers Públicos y Empresariales",new[]{ Guid.Empty}, inicio, inicio.AddHours(2), null, TipoEvento.Cafe);
 
@@ -156,5 +156,24 @@
             Assert.AreEqual(0, resultCancelar.Warnings.Count());
         }
 
+        [Test]
+        public void No_enviar_Twitt_en_eventos_pasados()
+        {
+            //var adapter = new Mock<ITwitterAdapter>();
+            //string message;
+            //var twitters = new List<string>();
+
+            //adapter.Setup(a => a.Update(It.IsAny<string>(), out message)).Returns(true).Callback<string, string>((status, m) => twitters.Add(status));
+
+        	var publicador = new TwitterPublicador(); //adapter.Object);
+
+            var agenda = new Agenda(publicador, DefaultEventoRepository, DefaultPersonaRepository);
+            var resultAgendar = agenda.Agendar("Primer VAN", null, DateTime.Today.AddDays(-1), DateTime.Today.AddDays(-1).AddHours(2), string.Empty, TipoEvento.GrupoEstudio);
+            Assert.IsTrue(resultAgendar.Succeful);
+            Assert.AreEqual(1, resultAgendar.Warnings.Count());
+			Assert.AreEqual("Solo se generan twitts de eventos futuros.", resultAgendar.Warnings.FirstOrDefault().Mensaje);
+
+            //adapter.Verify(a => a.Update(It.IsAny<string>(), out message), Times.Never());
+        }
     }
 }
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs	Fri Nov 11 08:14:21 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs	Fri Nov 18 23:09:58 2011 -0300
@@ -38,28 +38,39 @@
 
 			foreach (var track in tracks)
 			{
-				//Si ya hicimos el twitt de este track, no volvemos a hacerlo
-				if (track.Logs.Any(l => l.Propietario == TrackLogPropietario.Twitter && l.Successful)) continue;
+				if (track.Evento.FechaInicio < DateTime.Today || track.Evento.FechaTermino < DateTime.Today)
+				{
+					var message = string.Empty;
+
+					message = "Solo se generan twitts de eventos futuros.";
 
-				var twitt = BuildTwitt(track);
-				if (twitt.Length>0)
+					track.LogAdd(new TrackLog(TrackLogPropietario.Twitter, message, track.Usuario, false));
+				}
+				else
 				{
-					try
+					//Si ya hicimos el twitt de este track, no volvemos a hacerlo
+					if (track.Logs.Any(l => l.Propietario == TrackLogPropietario.Twitter && l.Successful)) continue;
+
+					var twitt = BuildTwitt(track);
+					if (twitt.Length > 0)
 					{
-						bool success=true;
-						string message=string.Empty;
-						
-						foreach (var t in twitt)
+						try
 						{
-							string m;
-							success &= _twitterAdapter.Update(t, out m);
-							message += m;
+							var success = true;
+							var message = string.Empty;
+
+							foreach (var t in twitt)
+							{
+								string m;
+								success &= _twitterAdapter.Update(t, out m);
+								message += m;
+							}
+							track.LogAdd(new TrackLog(TrackLogPropietario.Twitter, message, track.Usuario, success));
 						}
-						track.LogAdd(new TrackLog(TrackLogPropietario.Twitter, message, track.Usuario, success));
-					}
-					catch(Exception ex)
-					{
-						track.LogAdd(new TrackLog(TrackLogPropietario.Twitter, track.Usuario, ex));
+						catch (Exception ex)
+						{
+							track.LogAdd(new TrackLog(TrackLogPropietario.Twitter, track.Usuario, ex));
+						}
 					}
 				}
 			}