diff Agendas/trunk/src/Agendas.Tests/Blog/PublicadorTests.cs @ 99:3027c64344bd

agregado de llamadas a web service para crear posts en el blog de la comunidad agregado de tests sobre el publicador de blogs agregado de tests sobre el adapter del web service
author jorge.rowies
date Sat, 04 Jun 2011 22:33:05 -0300
parents
children cc91817a4206
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Agendas/trunk/src/Agendas.Tests/Blog/PublicadorTests.cs	Sat Jun 04 22:33:05 2011 -0300
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Agendas.Blog;
+using Agendas.Blog.Impl;
+using AltNetHispano.Agendas.Domain;
+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.Current = seguridad.Object;
+		}
+
+    [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 agendarPostWriter = new Mock<IPostWriter>();
+      agendarPostWriter.Setup(writer => writer.WritePost(eventoAgendar));
+
+      var publicarPostWriter = new Mock<IPostWriter>();
+      publicarPostWriter.Setup(writer => writer.WritePost(eventoPublicar));
+
+      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>
+                            {
+                              new Track(eventoAgendar, Accion.Agendar),
+                              new Track(eventoPublicar, Accion.Publicar)
+                            });
+
+      factory.Verify(f => f.GetPostWriter(Accion.Agendar), Times.Once());
+      factory.Verify(f => f.GetPostWriter(Accion.Publicar), Times.Once());
+
+      agendarPostWriter.Verify(pw => pw.WritePost(eventoAgendar), Times.Once());
+      publicarPostWriter.Verify(pw => pw.WritePost(eventoPublicar), Times.Once());
+    }
+  }
+}