changeset 181:6ee05ceea8c3

Implementando test de workflow también con nh
author nelopauselli
date Mon, 08 Aug 2011 20:08:31 -0300
parents 222362c29416
children beeb48ddb44a
files Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj Agendas/trunk/src/Agendas.Tests/Workflows/Workflow.cs Agendas/trunk/src/Agendas.Tests/Workflows/WorkflowMemoryTests.cs Agendas/trunk/src/Agendas.Tests/Workflows/WorkflowNhTests.cs Agendas/trunk/src/Agendas.Tests/Workflows/WorkflowTests.cs
diffstat 5 files changed, 408 insertions(+), 222 deletions(-) [+]
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj	Mon Aug 08 16:42:52 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj	Mon Aug 08 20:08:31 2011 -0300
@@ -98,7 +98,8 @@
     <Compile Include="TestsHelper.cs" />
     <Compile Include="TrackTests.cs" />
     <Compile Include="Workflows\Workflow.cs" />
-    <Compile Include="Workflows\WorkflowTests.cs" />
+    <Compile Include="Workflows\WorkflowNhTests.cs" />
+    <Compile Include="Workflows\WorkflowMemoryTests.cs" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\Agendas.Blog\Agendas.Blog.csproj">
--- a/Agendas/trunk/src/Agendas.Tests/Workflows/Workflow.cs	Mon Aug 08 16:42:52 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/Workflows/Workflow.cs	Mon Aug 08 20:08:31 2011 -0300
@@ -1,4 +1,5 @@
 using System;
+using System.Linq;
 using AltNetHispano.Agendas.Domain;
 using AltNetHispano.Agendas.Domain.Repositories;
 using NUnit.Framework;
@@ -7,61 +8,105 @@
 {
 	internal class Workflow
 	{
+		private readonly Func<IDisposable> _requestEmulator;
 		private readonly Agenda _agenda;
+		private readonly IEventoRepository _eventoRepository;
+		private Guid _eventoId;
 
-		public Workflow(IPublicador publicador, IEventoRepository eventoRepository, IPersonaRepository personaRepository, IPatrocinadorRepository patrocinadorRepository)
+		public Workflow(IPublicador publicador, IEventoRepository eventoRepository, IPersonaRepository personaRepository,
+		                IPatrocinadorRepository patrocinadorRepository, Func<IDisposable> requestEmulator)
 		{
+			_requestEmulator = requestEmulator;
+			_eventoRepository = eventoRepository;
 			_agenda = new Agenda(publicador, eventoRepository, personaRepository, patrocinadorRepository);
 		}
 
 		public void Proponer()
 		{
-
-            var resultado = _agenda.Proponer("SOLID", TestsHelper.GetOrCreatePonente("Jorge"), null, TipoEvento.Van);
-			Assert.IsTrue(resultado.Succeful);
+			using (_requestEmulator.Invoke())
+			{
+				var resultado = _agenda.Proponer("SOLID", TestsHelper.GetOrCreatePonente("Jorge"), null, TipoEvento.Van);
+				Assert.IsTrue(resultado.Succeful);
+			}
+			
+			GetId();
 		}
 
 
 		public void Agendar()
 		{
-      var resultado = _agenda.Agendar("SOLID", TestsHelper.GetOrCreatePonente("Jorge"), DateTime.Today.AddDays(5), null, TipoEvento.Van);
-			Assert.IsTrue(resultado.Succeful);
+			using (_requestEmulator.Invoke())
+			{
+				var resultado = _agenda.Agendar("SOLID", TestsHelper.GetOrCreatePonente("Jorge"), DateTime.Today.AddDays(5), null,
+				                                TipoEvento.Van);
+				Assert.IsTrue(resultado.Succeful);
+			}
+			
+			GetId();
 		}
 
-		public void Confirmar(Guid eventoId)
+		private void GetId()
 		{
-			var resultado = _agenda.Confirmar(eventoId);
-			Assert.IsTrue(resultado.Succeful);
+			using (_requestEmulator.Invoke())
+			{
+				var evento = _eventoRepository.GetActivos().SingleOrDefault();
+				Assert.IsNotNull(evento);
+				_eventoId = evento.Id;
+			}
 		}
 
-		public void Publicar(Guid eventoId)
+		public void Confirmar()
 		{
-			var resultado = _agenda.Publicar(eventoId, 1, "http://www.altnethispano.org/", new TimeSpan(2, 11, 0));
-			Assert.IsTrue(resultado.Succeful);
+			using (_requestEmulator.Invoke())
+			{
+				var resultado = _agenda.Confirmar(_eventoId);
+				Assert.IsTrue(resultado.Succeful);
+			}
+		}
+
+		public void Publicar()
+		{
+			using (_requestEmulator.Invoke())
+			{
+				var resultado = _agenda.Publicar(_eventoId, 1, "http://www.altnethispano.org/", new TimeSpan(2, 11, 0));
+				Assert.IsTrue(resultado.Succeful);
+			}
 		}
 
-	    public void Cancelar(Guid eventoId)
-	    {
-	        var resultado = _agenda.Cancelar(eventoId);
-            Assert.IsTrue(resultado.Succeful);
-	    }
+		public void Cancelar()
+		{
+			using (_requestEmulator.Invoke())
+			{
+				var resultado = _agenda.Cancelar(_eventoId);
+				Assert.IsTrue(resultado.Succeful);
+			}
+		}
 
-	    public void Descartar(Guid eventoId)
-	    {
-            var resultado = _agenda.Descartar(eventoId);
-            Assert.IsTrue(resultado.Succeful);
-	    }
+		public void Descartar()
+		{
+			using (_requestEmulator.Invoke())
+			{
+				var resultado = _agenda.Descartar(_eventoId);
+				Assert.IsTrue(resultado.Succeful);
+			}
+		}
 
-	    public void ReProponer(Guid eventoId)
-	    {
-	        var resultado = _agenda.ReProponer(eventoId);
-            Assert.IsTrue(resultado.Succeful);
-	    }
+		public void ReProponer()
+		{
+			using (_requestEmulator.Invoke())
+			{
+				var resultado = _agenda.ReProponer(_eventoId);
+				Assert.IsTrue(resultado.Succeful);
+			}
+		}
 
-        public void ReAgendar(Guid eventoId)
-        {
-            var resultado = _agenda.ReAgendar(eventoId);
-            Assert.IsTrue(resultado.Succeful);
-        }
+		public void ReAgendar()
+		{
+			using (_requestEmulator.Invoke())
+			{
+				var resultado = _agenda.ReAgendar(_eventoId);
+				Assert.IsTrue(resultado.Succeful);
+			}
+		}
 	}
 }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Agendas/trunk/src/Agendas.Tests/Workflows/WorkflowMemoryTests.cs	Mon Aug 08 20:08:31 2011 -0300
@@ -0,0 +1,165 @@
+using System;
+using System.Collections.Generic;
+using AltNetHispano.Agendas.Domain;
+using Moq;
+using NUnit.Framework;
+
+namespace AltNetHispano.Agendas.Tests.Workflows
+{
+	[TestFixture]
+	public class WorkflowMemoryTests : TestBase
+	{
+		private Mock<IPublicador> _publicador;
+		private Workflow _workflow;
+
+		[SetUp]
+		public void InitPublicador()
+		{
+			_publicador = new Mock<IPublicador>();
+			_workflow = new Workflow(_publicador.Object, DefaultEventoRepository, DefaultPersonaRepository,
+			                         DefaultPatrocinadorRepository, () => new Mock<IDisposable>().Object);
+		}
+
+		[Test]
+		public void Proponer()
+		{
+			_workflow.Proponer();
+			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Once());
+		}
+
+		[Test]
+		public void Proponer_y_agendar()
+		{
+			_workflow.Proponer();
+
+			_workflow.Agendar();
+
+			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2));
+		}
+
+        [Test]
+        public void Proponer_agendar_y_cancelar()
+        {
+            _workflow.Proponer();
+
+            _workflow.Agendar();
+
+            _workflow.Cancelar();
+
+            _publicador.Verify(p=>p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(3));
+        }
+
+        [Test]
+        public void Proponer_agendar_cancelar_y_reagendar()
+        {
+            _workflow.Proponer();
+
+            _workflow.Agendar();
+
+            _workflow.Cancelar();
+
+            _workflow.ReAgendar();
+
+            _publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4));
+        }
+
+        [Test]
+        public void Proponer_agendar_cancelar_reproponer_agendar_y_confirmar()
+        {
+            _workflow.Proponer();
+
+            _workflow.Agendar();
+
+            _workflow.Cancelar();
+
+            _workflow.ReProponer();
+
+            _workflow.Agendar();
+
+            _workflow.Confirmar();
+
+            _publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(6));
+        }
+
+        [Test]
+        public void Proponer_agendar_cancelar_reagendar_y_confirmar()
+        {
+            _workflow.Proponer();
+
+            _workflow.Agendar();
+
+            _workflow.Cancelar();
+
+            _workflow.ReAgendar();
+
+            _workflow.Confirmar();
+
+            _publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(5));
+        }
+
+	    [Test]
+        public void Proponer_agendar_cancelar_y_reproponer()
+        {
+            _workflow.Proponer();
+
+            _workflow.Agendar();
+
+            _workflow.Cancelar();
+
+            _workflow.ReProponer();
+
+            _publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4));
+        }
+
+        [Test]
+        public void Proponer_y_descartar()
+        {
+            _workflow.Proponer();
+
+            _workflow.Descartar();
+            _publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2));
+        }
+
+	    [Test]
+        public void Proponer_agendar_cancelar_y_descartar()
+        {
+            _workflow.Proponer();
+
+            _workflow.Agendar();
+
+            _workflow.Cancelar();
+
+            _workflow.Descartar();
+
+            _publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4));
+        }
+
+	    [Test]
+		public void Proponer_agendar_y_confirmar()
+		{
+			_workflow.Proponer();
+
+			_workflow.Agendar();
+
+			_workflow.Confirmar();
+
+			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(3));
+		}
+
+		[Test]
+		public void Proponer_agendar_confirmar_publicar()
+		{
+            const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx";
+
+			_workflow.Proponer();
+
+			_workflow.Agendar();
+
+			_workflow.Confirmar();
+
+			_workflow.Publicar();
+
+			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4));
+		}
+	}
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Agendas/trunk/src/Agendas.Tests/Workflows/WorkflowNhTests.cs	Mon Aug 08 20:08:31 2011 -0300
@@ -0,0 +1,164 @@
+using System.Collections.Generic;
+using Agendas.NHibernate;
+using AltNetHispano.Agendas.Domain;
+using AltNetHispano.Agendas.Tests.Cruds;
+using Moq;
+using NUnit.Framework;
+
+namespace AltNetHispano.Agendas.Tests.Workflows
+{
+	[TestFixture]
+	public class WorkflowNhTests : TestBase
+	{
+		private Mock<IPublicador> _publicador;
+		private Workflow _workflow;
+
+		[SetUp]
+		public void InitPublicador()
+		{
+			_publicador = new Mock<IPublicador>();
+			_workflow = new Workflow(_publicador.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository, () => new RequestEmulator(NhHelper.GetSessionFactory()));
+		}
+
+		[Test]
+		public void Proponer()
+		{
+			_workflow.Proponer();
+			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Once());
+		}
+
+		[Test]
+		public void Proponer_y_agendar()
+		{
+			_workflow.Proponer();
+
+			_workflow.Agendar();
+
+			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2));
+		}
+		[Test]
+		public void Proponer_agendar_y_cancelar()
+		{
+			_workflow.Proponer();
+
+			_workflow.Agendar();
+
+			_workflow.Cancelar();
+
+			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(3));
+		}
+
+		[Test]
+		public void Proponer_agendar_cancelar_y_reagendar()
+		{
+			_workflow.Proponer();
+
+			_workflow.Agendar();
+
+			_workflow.Cancelar();
+
+			_workflow.ReAgendar();
+
+			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4));
+		}
+
+		[Test]
+		public void Proponer_agendar_cancelar_reproponer_agendar_y_confirmar()
+		{
+			_workflow.Proponer();
+
+			_workflow.Agendar();
+
+			_workflow.Cancelar();
+
+			_workflow.ReProponer();
+
+			_workflow.Agendar();
+
+			_workflow.Confirmar();
+
+			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(6));
+		}
+
+		[Test]
+		public void Proponer_agendar_cancelar_reagendar_y_confirmar()
+		{
+			_workflow.Proponer();
+
+			_workflow.Agendar();
+
+			_workflow.Cancelar();
+
+			_workflow.ReAgendar();
+
+			_workflow.Confirmar();
+
+			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(5));
+		}
+
+		[Test]
+		public void Proponer_agendar_cancelar_y_reproponer()
+		{
+			_workflow.Proponer();
+
+			_workflow.Agendar();
+
+			_workflow.Cancelar();
+
+			_workflow.ReProponer();
+
+			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4));
+		}
+
+		[Test]
+		public void Proponer_y_descartar()
+		{
+			_workflow.Proponer();
+			
+			_workflow.Descartar();
+			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2));
+		}
+
+		[Test]
+		public void Proponer_agendar_cancelar_y_descartar()
+		{
+			_workflow.Proponer();
+
+			_workflow.Agendar();
+
+			_workflow.Cancelar();
+
+			_workflow.Descartar();
+
+			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4));
+		}
+
+		[Test]
+		public void Proponer_agendar_y_confirmar()
+		{
+			_workflow.Proponer();
+
+			_workflow.Agendar();
+
+			_workflow.Confirmar();
+
+			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(3));
+		}
+
+		[Test]
+		public void Proponer_agendar_confirmar_publicar()
+		{
+			const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx";
+
+			_workflow.Proponer();
+
+			_workflow.Agendar();
+
+			_workflow.Confirmar();
+
+			_workflow.Publicar();
+
+			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4));
+		}
+	}
+}
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/Workflows/WorkflowTests.cs	Mon Aug 08 16:42:52 2011 -0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +0,0 @@
-using System.Collections.Generic;
-using System.Linq;
-using AltNetHispano.Agendas.Domain;
-using Moq;
-using NUnit.Framework;
-
-namespace AltNetHispano.Agendas.Tests.Workflows
-{
-	[TestFixture]
-	public class WorkflowTests : TestBase
-	{
-		private Mock<IPublicador> _publicador;
-		private Workflow _workflow;
-
-		[SetUp]
-		public void InitPublicador()
-		{
-			_publicador = new Mock<IPublicador>();
-			_workflow = new Workflow(_publicador.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
-		}
-
-		[Test]
-		public void Proponer()
-		{
-			_workflow.Proponer();
-			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Once());
-		}
-
-		[Test]
-		public void Proponer_y_agendar()
-		{
-			_workflow.Proponer();
-
-			_workflow.Agendar();
-
-			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2));
-		}
-        [Test]
-        public void Proponer_agendar_y_cancelar()
-        {
-            _workflow.Proponer();
-
-            _workflow.Agendar();
-
-            var evento = DefaultEventoRepository.GetActivos().SingleOrDefault();
-            Assert.IsNotNull(evento);
-
-            _workflow.Cancelar(evento.Id);
-
-            _publicador.Verify(p=>p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(3));
-        }
-
-        [Test]
-        public void Proponer_agendar_cancelar_y_reagendar()
-        {
-            _workflow.Proponer();
-
-            _workflow.Agendar();
-
-            var evento = DefaultEventoRepository.GetActivos().SingleOrDefault();
-            Assert.IsNotNull(evento);
-
-            _workflow.Cancelar(evento.Id);
-
-            _workflow.ReAgendar(evento.Id);
-
-            _publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4));
-        }
-
-        [Test]
-        public void Proponer_agendar_cancelar_reproponer_agendar_y_confirmar()
-        {
-            _workflow.Proponer();
-
-            _workflow.Agendar();
-
-            var evento = DefaultEventoRepository.GetActivos().SingleOrDefault();
-            Assert.IsNotNull(evento);
-
-            _workflow.Cancelar(evento.Id);
-
-            _workflow.ReProponer(evento.Id);
-
-            _workflow.Agendar();
-
-            _workflow.Confirmar(evento.Id);
-
-            _publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(6));
-        }
-
-        [Test]
-        public void Proponer_agendar_cancelar_reagendar_y_confirmar()
-        {
-            _workflow.Proponer();
-
-            _workflow.Agendar();
-
-            var evento = DefaultEventoRepository.GetActivos().SingleOrDefault();
-            Assert.IsNotNull(evento);
-
-            _workflow.Cancelar(evento.Id);
-
-            _workflow.ReAgendar(evento.Id);
-
-            _workflow.Confirmar(evento.Id);
-
-            _publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(5));
-        }
-
-	    [Test]
-        public void Proponer_agendar_cancelar_y_reproponer()
-        {
-            _workflow.Proponer();
-
-            _workflow.Agendar();
-
-            var evento = DefaultEventoRepository.GetActivos().SingleOrDefault();
-            Assert.IsNotNull(evento);
-
-            _workflow.Cancelar(evento.Id);
-
-            _workflow.ReProponer(evento.Id);
-
-            _publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4));
-        }
-
-        [Test]
-        public void Proponer_y_descartar()
-        {
-            _workflow.Proponer();
-            var evento = DefaultEventoRepository.GetActivos().SingleOrDefault();
-            Assert.IsNotNull(evento);
-
-            _workflow.Descartar(evento.Id);
-            _publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2));
-        }
-
-	    [Test]
-        public void Proponer_agendar_cancelar_y_descartar()
-        {
-            _workflow.Proponer();
-
-            _workflow.Agendar();
-
-            var evento = DefaultEventoRepository.GetActivos().SingleOrDefault();
-            Assert.IsNotNull(evento);
-
-            _workflow.Cancelar(evento.Id);
-
-            _workflow.Descartar(evento.Id);
-
-            _publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4));
-        }
-
-	    [Test]
-		public void Proponer_agendar_y_confirmar()
-		{
-			_workflow.Proponer();
-
-			_workflow.Agendar();
-
-			var evento = DefaultEventoRepository.GetActivos().SingleOrDefault();
-			Assert.IsNotNull(evento);
-
-			_workflow.Confirmar(evento.Id);
-
-			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(3));
-		}
-
-		[Test]
-		public void Proponer_agendar_confirmar_publicar()
-		{
-            const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx";
-
-			_workflow.Proponer();
-
-			_workflow.Agendar();
-
-			var evento = DefaultEventoRepository.GetActivos().SingleOrDefault();
-			Assert.IsNotNull(evento);
-
-			_workflow.Confirmar(evento.Id);
-
-			_workflow.Publicar(evento.Id);
-
-			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4));
-		}
-	}
-}
\ No newline at end of file