Mercurial > altnet-hispano
view Agendas/trunk/src/Agendas.Twitter.Tests/Publicador_tests.cs @ 240:01a9b47185eb
Tests de Twitter, daban en rojo por mensaje fijo (01/10/2011).
author | juanjose.montesdeocaarbos |
---|---|
date | Wed, 05 Oct 2011 07:41:30 -0300 |
parents | e5959f3405e0 |
children | 5cc1681d3789 |
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); 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); agenda.Proponer("Identity Providers", null, null, TipoEvento.GrupoEstudio); adapter.Verify(a => a.Update(It.IsAny<string>(), out message), Times.Once()); agenda.Agendar("Identity Providers", 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); var ponente = new Persona("Carlos Peix", "carlospeix@gmail.com", "carlospeix", "http://www.carlospeix.com.ar"); DefaultPersonaRepository.Save(ponente); var otrosPonentes = new Persona("Nelo Pauselli", "nelopauselli@gmail.com", "nelopauselli", "http://nelopauselli.blogspot.com/"); DefaultPersonaRepository.Save(otrosPonentes); var inicio = DateTime.Now.AddDays(3); agenda.Agendar("Identity Providers Públicos y Empresariales", ponente.Id, inicio, inicio.AddHours(2), null, TipoEvento.Van, new[] {otrosPonentes.Id}); 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); var inicio = DateTime.Now.AddDays(3); agenda.Agendar("Identity Providers Públicos y Empresariales", 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()); } } }