view Agendas/trunk/src/Agendas.Tests/Blog/PublicadorTests.cs @ 120:c3573defd18f

Agregado de Fecha, Usuario y Successful en TrackLog Modificacion de publicador de blog para usar TrackLog Agregado de TrackLog en el test de crud de eventos Fix en publicador de twitter para que no twitee si ya se encuentra en TrackLog pero con Successful en true
author Jorge@Jorge-PC
date Fri, 24 Jun 2011 21:18:21 -0300
parents 1d820f17fc75
children
line wrap: on
line source

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Agendas.Blog;
using Agendas.Blog.Impl;
using AltNetHispano.Agendas.Domain;
using AltNetHispano.Agendas.Repositories.Memory;
using Moq;
using NUnit.Framework;

namespace AltNetHispano.Agendas.Tests.Blog
{
  [TestFixture]
  public class PublicadorTests
  {
		[SetUp]
		public void SetearUsuario()
		{
      var seguridad = new Mock<ISeguridad>();
      seguridad.Setup(s => s.GetUserName()).Returns("neluz");
      IdentityContext.Init(seguridad.Object, new PersonaRepository());
    }

    [Test]
    public void El_publicador_debe_disparar_los_writers_segun_la_accion_de_cada_track()
    {
      //var eventoAgendar = Evento.Agendar(null, null, DateTime.MinValue, null);
      //var eventoPublicar = Evento.Agendar(null, null, DateTime.MinValue, null);

      var trackAgendar = new Track(null, Accion.Agendar);
      var trackPublicar = new Track(null, Accion.Publicar);

      var agendarPostWriter = new Mock<IPostWriter>();
      agendarPostWriter.Setup(writer => writer.WritePost(trackAgendar));

      var publicarPostWriter = new Mock<IPostWriter>();
      publicarPostWriter.Setup(writer => writer.WritePost(trackPublicar));

      var factory = new Mock<IPostWriterFactory>();
      factory.Setup(f => f.GetPostWriter(Accion.Agendar)).Returns(agendarPostWriter.Object);
      factory.Setup(f => f.GetPostWriter(Accion.Publicar)).Returns(publicarPostWriter.Object);

      var publicador = new BlogPublicador(factory.Object);
      publicador.Publicar(new List<Track>
                            {
                              trackAgendar,
                              trackPublicar
                            });

      factory.Verify(f => f.GetPostWriter(Accion.Agendar), Times.Once());
      factory.Verify(f => f.GetPostWriter(Accion.Publicar), Times.Once());

      agendarPostWriter.Verify(pw => pw.WritePost(trackAgendar), Times.Once());
      publicarPostWriter.Verify(pw => pw.WritePost(trackPublicar), Times.Once());
    }
  }
}