diff Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs @ 60:02e163f2ca38

Refactoring de test de crud del evento
author nelopauselli
date Mon, 16 May 2011 21:40:40 -0300
parents
children c40b97bbed01
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs	Mon May 16 21:40:40 2011 -0300
@@ -0,0 +1,105 @@
+using System;
+using AltNetHispano.Agendas.Domain;
+using AltNetHispano.Agendas.Domain.Repositories;
+using NUnit.Framework;
+
+namespace AltNetHispano.Agendas.Tests.Cruds
+{
+	public class EventoCrud
+	{
+		private readonly Func<IEventoRepository> _createRepository;
+		private readonly Func<IDisposable> _requestEmulator;
+
+		public EventoCrud(Func<IEventoRepository> createRepository, Func<IDisposable> requestEmulator)
+		{
+			_createRepository = createRepository;
+			_requestEmulator = requestEmulator;
+		}
+
+		public Guid Create()
+		{
+			using (_requestEmulator.Invoke())
+			{
+				var van = Evento.Proponer("TDD - Diseño Basado en Ejemplos", new Ponente("Carlos Blé"));
+
+				IEventoRepository eventoRepository = _createRepository.Invoke();
+
+				eventoRepository.Save(van);
+
+				return van.Id;
+			}
+		}
+
+		public void Read()
+		{
+			Guid eventoId = Create();
+
+			using (_requestEmulator.Invoke())
+			{
+				IEventoRepository eventoRepository = _createRepository.Invoke();
+
+				Evento van = eventoRepository.Get(eventoId);
+
+				Assert.IsNotNull(van);
+				Assert.IsNotNull(van.Ponente);
+				Assert.AreEqual("Carlos Blé", van.Ponente.Nombre);
+				Assert.AreEqual("TDD - Diseño Basado en Ejemplos", van.Titulo);
+			}
+		}
+
+		public void Update()
+		{
+			Guid eventoId = Create();
+
+			using (_requestEmulator.Invoke())
+			{
+				IEventoRepository eventoRepository = _createRepository.Invoke();
+
+				Evento van = eventoRepository.Get(eventoId);
+
+				Assert.IsNotNull(van);
+
+				van.CambiarTitulo("TDD & Ejemplos");
+				van.Actualizar(van.Ponente, new DateTime(2010, 04, 17));
+
+				eventoRepository.Update(van);
+			}
+
+			using (_requestEmulator.Invoke())
+			{
+				IEventoRepository eventoRepository = _createRepository.Invoke();
+
+				Evento van = eventoRepository.Get(eventoId);
+
+				Assert.IsNotNull(van);
+				Assert.IsNotNull(van.Ponente);
+				Assert.AreEqual("Carlos Blé", van.Ponente.Nombre);
+				Assert.AreEqual("TDD & Ejemplos", van.Titulo);
+				Assert.AreEqual(new DateTime(2010, 04, 17), van.Fecha);
+			}
+		}
+
+		public void Delete()
+		{
+			Guid eventoId = Create();
+
+			using (_requestEmulator.Invoke())
+			{
+				IEventoRepository eventoRepository = _createRepository.Invoke();
+
+				Evento van = eventoRepository.Get(eventoId);
+				Assert.IsNotNull(van);
+				eventoRepository.Delete(van);
+			}
+
+			using (_requestEmulator.Invoke())
+			{
+				IEventoRepository eventoRepository = _createRepository.Invoke();
+
+				Evento van = eventoRepository.Get(eventoId);
+
+				Assert.IsNull(van);
+			}
+		}
+	}
+}
\ No newline at end of file