view Agendas/trunk/src/Agendas.Tests/Blog/PublicadorTests.cs @ 179:1deccd6c3cb2

Aplicando seguridad x roles en sitio web
author nelopauselli
date Mon, 08 Aug 2011 15:24:26 -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());
    }
  }
}