diff Agendas/trunk/src/Agendas.Tests/Workflows/Workflow.cs @ 181:6ee05ceea8c3

Implementando test de workflow también con nh
author nelopauselli
date Mon, 08 Aug 2011 20:08:31 -0300
parents 5c94b052d838
children 2d02adb79322
line wrap: on
line diff
--- 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