diff Agendas/trunk/src/Agendas.Repositories.Tests/Workflow.cs @ 222:68b09c30b0d2

Separando los test de persistencia en un proyecto aparte
author nelopauselli
date Mon, 19 Sep 2011 18:18:17 -0300
parents Agendas/trunk/src/Agendas.Tests/Workflows/Workflow.cs@5346c0500594
children c61954d24c8c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Agendas/trunk/src/Agendas.Repositories.Tests/Workflow.cs	Mon Sep 19 18:18:17 2011 -0300
@@ -0,0 +1,117 @@
+using System;
+using System.Linq;
+using AltNetHispano.Agendas.Domain;
+using AltNetHispano.Agendas.Domain.Repositories;
+using NUnit.Framework;
+
+namespace Agendas.Repositories.Tests
+{
+	internal class Workflow
+	{
+		private readonly Func<IDisposable> _requestEmulator;
+		private readonly Agenda _agenda;
+		private readonly IEventoRepository _eventoRepository;
+		private Guid _eventoId;
+		private readonly TestsHelper _testsHelper;
+
+		public Workflow(IPublicador publicador, IEventoRepository eventoRepository, IPersonaRepository personaRepository,
+		                Func<IDisposable> requestEmulator)
+		{
+			_requestEmulator = requestEmulator;
+			_eventoRepository = eventoRepository;
+			
+			_agenda = new Agenda(publicador, eventoRepository, personaRepository);
+			_testsHelper = new TestsHelper(personaRepository);
+		}
+
+		public void Proponer()
+		{
+			using (_requestEmulator.Invoke())
+			{
+				var resultado = _agenda.Proponer("SOLID", _testsHelper.GetOrCreatePonente("Jorge"), null, TipoEvento.Van);
+				Assert.IsTrue(resultado.Succeful);
+			}
+			
+			GetId();
+		}
+
+
+		public void Agendar()
+		{
+			using (_requestEmulator.Invoke())
+			{
+			    var fechaInicio = DateTime.Today.AddDays(5).ToUniversalTime();
+			    var fechaTermino = fechaInicio.AddHours(2);
+			    var resultado = _agenda.Agendar("SOLID", _testsHelper.GetOrCreatePonente("Jorge"), fechaInicio, fechaTermino, null,
+			                                    TipoEvento.Van);
+				Assert.IsTrue(resultado.Succeful);
+			}
+			
+			GetId();
+		}
+
+		private void GetId()
+		{
+			using (_requestEmulator.Invoke())
+			{
+				var evento = _eventoRepository.GetActivos().SingleOrDefault();
+				Assert.IsNotNull(evento);
+				_eventoId = evento.Id;
+			}
+		}
+
+		public void Confirmar()
+		{
+			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()
+		{
+			using (_requestEmulator.Invoke())
+			{
+				var resultado = _agenda.Cancelar(_eventoId);
+				Assert.IsTrue(resultado.Succeful);
+			}
+		}
+
+		public void Descartar()
+		{
+			using (_requestEmulator.Invoke())
+			{
+				var resultado = _agenda.Descartar(_eventoId);
+				Assert.IsTrue(resultado.Succeful);
+			}
+		}
+
+		public void ReProponer()
+		{
+			using (_requestEmulator.Invoke())
+			{
+				var resultado = _agenda.ReProponer(_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