Mercurial > altnet-hispano
view Agendas/trunk/src/Agendas.Twitter.Tests/Publicador_tests.cs @ 295:8c742d5ccf67
Leyendo imagen directamente desde el stream
author | nelopauselli |
---|---|
date | Sat, 18 Feb 2012 12:33:54 -0300 |
parents | aacfe26ee40b |
children |
line wrap: on
line source
using System; using System.Collections.Generic; using System.Linq; using AltNetHispano.Agendas.Domain; using AltNetHispano.Agendas.Tests; using AltNetHispano.Agendas.Twitter; using Moq; using NUnit.Framework; namespace Agendas.Twitter.Tests { [TestFixture] public class Publicador_tests : TestBase { [Test] public void Proponer_evento() { var adapter = new Mock<ITwitterAdapter>(); string message; string twitt = null; adapter.Setup(a => a.Update(It.IsAny<string>(), out message)).Returns(true).Callback<string, string>((status, m) => twitt = status); var publicador = new TwitterPublicador(adapter.Object); var agenda = new Agenda(publicador, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); agenda.Proponer("Identity Providers", null, null, TipoEvento.GrupoEstudio); adapter.Verify(a => a.Update(It.IsAny<string>(), out message), Times.Once()); Assert.That(twitt, Is.StringContaining("GrupoEstudio")); } [Test] public void Proponer_y_agendar_evento() { var adapter = new Mock<ITwitterAdapter>(); string message; string twitt = null; var fechaInicio = DateTime.Today.AddDays(7).ToUniversalTime(); var fechaTermino = fechaInicio.AddHours(2); adapter.Setup(a => a.Update(It.IsAny<string>(), out message)).Returns(true).Callback<string, string>((status, m) => twitt = status); var publicador = new TwitterPublicador(adapter.Object); var agenda = new Agenda(publicador, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); agenda.Proponer("Identity Providers", null, null, TipoEvento.GrupoEstudio); adapter.Verify(a => a.Update(It.IsAny<string>(), out message), Times.Once()); agenda.Agendar("Identity Providers", new[]{TestsHelper.GetOrCreatePonente("Nelo Pauselli")}, fechaInicio, fechaTermino, null, TipoEvento.GrupoEstudio); adapter.Verify(a => a.Update(It.IsAny<string>(), out message), Times.Exactly(2)); Assert.That(twitt, Is.StringContaining("@nelopauselli")); } [Test] public void Twitter_texto_largo() { 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, DefaultPatrocinadorRepository); var ponentes = new[] { new Persona("Carlos Peix", "carlospeix@gmail.com", "carlospeix", "http://www.carlospeix.com.ar"), new Persona("Nelo Pauselli", "nelopauselli@gmail.com", "nelopauselli", "http://nelopauselli.blogspot.com/") }; foreach (var ponente in ponentes) DefaultPersonaRepository.Save(ponente); 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); Assert.IsTrue(twitters.Any()); var joined = string.Empty; foreach (var twitter in twitters) { Console.WriteLine(twitter); Assert.LessOrEqual(twitter.Length, 140); joined += twitter; } Assert.That(joined, Is.StringContaining("Identity Providers Públicos y Empresariales")); Assert.That(joined, Is.StringContaining("@carlospeix")); Assert.That(joined, Is.StringContaining("@nelopauselli")); Assert.AreEqual(2, twitters.Count()); Assert.AreEqual(string.Format("Se ha agendando el evento Identity Providers Públicos y Empresariales con @carlospeix y @nelopauselli para el {0}...", inicio.ToString("dd/MM/yyyy")), twitters.First()); Assert.AreEqual("...por http://snipr.com/virtualaltnet", twitters.Last()); adapter.Verify(a => a.Update(It.IsAny<string>(), out message), Times.Exactly(2)); } [Test] public void Evento_sin_ponente() { 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, DefaultPatrocinadorRepository); var inicio = DateTime.Today; agenda.Agendar("Identity Providers Públicos y Empresariales",new[]{ Guid.Empty}, inicio, inicio.AddHours(2), null, TipoEvento.Cafe); Assert.IsTrue(twitters.Any()); var joined = string.Empty; foreach (var twitter in twitters) { Console.WriteLine(twitter); Assert.LessOrEqual(twitter.Length, 140); joined += twitter; } Assert.AreEqual(string.Format("Se ha agendando el evento Identity Providers Públicos y Empresariales para el {0} por http://snipr.com/virtualaltnet", inicio.ToString("dd/MM/yyyy")), joined); adapter.Verify(a => a.Update(It.IsAny<string>(), out message), Times.Once()); } [Test] public void Cancelar_evento() { var title = string.Format("Titulo: {0}{1}{2}{3}{4}{5}{6}", DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, DateTime.Now.Millisecond); //string twitt = null; var publicador = new TwitterPublicador(); var agenda = new Agenda(publicador, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); var resultAgendar = agenda.Agendar(title, null, DateTime.Today.AddDays(8), DateTime.Today.AddDays(8).AddHours(2), string.Empty, TipoEvento.GrupoEstudio); Assert.IsTrue(resultAgendar.Succeful); var evento = agenda.GetEventosActivos().Where(e => e.Titulo == title).FirstOrDefault(); agenda = new Agenda(publicador, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); var resultCancelar = agenda.Cancelar(evento.Id); Assert.IsTrue(resultCancelar.Succeful); 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, DefaultPatrocinadorRepository); 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()); } } }