diff Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs @ 62:c40b97bbed01

Verificando persistencia de Ponentes y Tracks en tests de CRUD
author nelopauselli
date Tue, 17 May 2011 01:55:19 -0300
parents 02e163f2ca38
children 96d7609f2e08
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs	Tue May 17 01:27:03 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs	Tue May 17 01:55:19 2011 -0300
@@ -1,4 +1,5 @@
 using System;
+using System.Linq;
 using AltNetHispano.Agendas.Domain;
 using AltNetHispano.Agendas.Domain.Repositories;
 using NUnit.Framework;
@@ -7,12 +8,15 @@
 {
 	public class EventoCrud
 	{
-		private readonly Func<IEventoRepository> _createRepository;
+		private readonly IEventoRepository _eventoRepository;
 		private readonly Func<IDisposable> _requestEmulator;
+		private readonly IPonenteRepository _ponenteRepository;
 
-		public EventoCrud(Func<IEventoRepository> createRepository, Func<IDisposable> requestEmulator)
+		public EventoCrud(Func<IEventoRepository> createEventoRepository, Func<IPonenteRepository> createPonenteRepository, Func<IDisposable> requestEmulator)
 		{
-			_createRepository = createRepository;
+			_eventoRepository = createEventoRepository.Invoke();
+			_ponenteRepository = createPonenteRepository.Invoke();
+
 			_requestEmulator = requestEmulator;
 		}
 
@@ -20,11 +24,11 @@
 		{
 			using (_requestEmulator.Invoke())
 			{
-				var van = Evento.Proponer("TDD - Diseño Basado en Ejemplos", new Ponente("Carlos Blé"));
+				var ponente = new Ponente("Carlos Blé");
+				_ponenteRepository.Save(ponente);
 
-				IEventoRepository eventoRepository = _createRepository.Invoke();
-
-				eventoRepository.Save(van);
+				var van = Evento.Proponer("TDD - Diseño Basado en Ejemplos", ponente);
+				_eventoRepository.Save(van);
 
 				return van.Id;
 			}
@@ -36,13 +40,16 @@
 
 			using (_requestEmulator.Invoke())
 			{
-				IEventoRepository eventoRepository = _createRepository.Invoke();
-
-				Evento van = eventoRepository.Get(eventoId);
+				Evento van = _eventoRepository.Get(eventoId);
 
 				Assert.IsNotNull(van);
 				Assert.IsNotNull(van.Ponente);
 				Assert.AreEqual("Carlos Blé", van.Ponente.Nombre);
+				Assert.AreEqual(1, van.Ponente.Eventos.Count());
+				Assert.AreEqual(van, van.Ponente.Eventos.First());
+
+				Assert.AreEqual(1, van.Tracks.Where(t => t.Accion == Accion.Proponer).Count());
+				
 				Assert.AreEqual("TDD - Diseño Basado en Ejemplos", van.Titulo);
 			}
 		}
@@ -53,29 +60,40 @@
 
 			using (_requestEmulator.Invoke())
 			{
-				IEventoRepository eventoRepository = _createRepository.Invoke();
-
-				Evento van = eventoRepository.Get(eventoId);
+				Evento van = _eventoRepository.Get(eventoId);
 
 				Assert.IsNotNull(van);
 
 				van.CambiarTitulo("TDD & Ejemplos");
-				van.Actualizar(van.Ponente, new DateTime(2010, 04, 17));
+
+				var otroPonente = new Ponente("José");
+				_ponenteRepository.Save(otroPonente);
 
-				eventoRepository.Update(van);
+				van.Actualizar(otroPonente, new DateTime(2010, 04, 17));
+
+				_eventoRepository.Update(van);
 			}
 
 			using (_requestEmulator.Invoke())
 			{
-				IEventoRepository eventoRepository = _createRepository.Invoke();
-
-				Evento van = eventoRepository.Get(eventoId);
+				Evento van = _eventoRepository.Get(eventoId);
 
 				Assert.IsNotNull(van);
 				Assert.IsNotNull(van.Ponente);
-				Assert.AreEqual("Carlos Blé", van.Ponente.Nombre);
+				Assert.AreEqual("José", van.Ponente.Nombre);
 				Assert.AreEqual("TDD & Ejemplos", van.Titulo);
 				Assert.AreEqual(new DateTime(2010, 04, 17), van.Fecha);
+
+				var ponente1 = _ponenteRepository.GetByNombre("Carlos Blé");
+				Assert.IsNotNull(ponente1);
+				Assert.AreEqual(0, ponente1.Eventos.Count());
+
+				var ponente2 = _ponenteRepository.GetByNombre("José");
+				Assert.IsNotNull(ponente2);
+				Assert.AreEqual(1, ponente2.Eventos.Count());
+
+				Assert.AreEqual(1, van.Tracks.Where(t => t.Accion == Accion.Proponer).Count());
+				Assert.AreEqual(1, van.Tracks.Where(t => t.Accion == Accion.Modificar).Count());
 			}
 		}
 
@@ -85,20 +103,22 @@
 
 			using (_requestEmulator.Invoke())
 			{
-				IEventoRepository eventoRepository = _createRepository.Invoke();
+				Evento van = _eventoRepository.Get(eventoId);
+				Assert.IsNotNull(van);
 
-				Evento van = eventoRepository.Get(eventoId);
-				Assert.IsNotNull(van);
-				eventoRepository.Delete(van);
+				_eventoRepository.Delete(van);
 			}
 
 			using (_requestEmulator.Invoke())
 			{
-				IEventoRepository eventoRepository = _createRepository.Invoke();
-
-				Evento van = eventoRepository.Get(eventoId);
+				Evento van = _eventoRepository.Get(eventoId);
 
 				Assert.IsNull(van);
+
+				var ponente = _ponenteRepository.GetByNombre("Carlos Blé");
+				
+				Assert.IsNotNull(ponente);
+				Assert.AreEqual(0, ponente.Eventos.Count());
 			}
 		}
 	}