Mercurial > altnet-hispano
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