Mercurial > altnet-hispano
view Agendas/trunk/src/Agendas.Repositories.Tests/PersonaCrud.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/Cruds/PersonaCrud.cs@b9850b647a4e |
children | 50442a103281 |
line wrap: on
line source
using System; using System.Collections.Generic; using System.Linq; using Agendas.Repositories.Tests.Infraestructure; using AltNetHispano.Agendas.Domain; using AltNetHispano.Agendas.Domain.Repositories; using AltNetHispano.Agendas.Domain.Services; using NUnit.Framework; namespace Agendas.Repositories.Tests { public abstract class PersonaCrud<T> where T : IInfraestrutureFactory, new() { private readonly IPersonaRepository _personaRepository; private readonly Func<IDisposable> _requestEmulator; private readonly PersonaService _personaService; private readonly IEventoRepository _eventoRepository; protected PersonaCrud() { var infraestrutureFactory = new T(); _eventoRepository = infraestrutureFactory.GetEventoRepository(); _personaRepository = infraestrutureFactory.GetPonenteRepository(); _requestEmulator = infraestrutureFactory.GetRequestEmulator(); _personaService = new PersonaService(_personaRepository, _eventoRepository); } [Test] public void CreateAdministrador() { Guid id; using (_requestEmulator.Invoke()) { var r = CreatePersona("Nelo Pauselli", "nelopauselli", "nelopauselli@gmail.com", "http://nelopauselli.blogspot.com", null); Assert.AreEqual("Nelo Pauselli", r.Nombre); Assert.AreNotEqual(Guid.Empty, r.Id); id = r.Id; } using (_requestEmulator.Invoke()) { var persona = _personaRepository.GetByNombre("Nelo Pauselli"); Assert.IsNotNull(persona); Assert.AreEqual(id, persona.Id); } } private ResultadoAdd CreatePersona(string nombre, string twitter, string mail, string blog, IEnumerable<string> roles) { return _personaService.Add(nombre, twitter, mail, blog, roles); } [Test] public void ReadAdministrador() { Guid personaId; using (_requestEmulator.Invoke()) { var r = CreatePersona("Nelo Pauselli", "nelopauselli", "nelopauselli@gmail.com", "http://nelopauselli.blogspot.com", null); personaId = r.Id; } using (_requestEmulator.Invoke()) { var persona = _personaRepository.Get(personaId); Assert.IsNotNull(persona); Assert.AreEqual("Nelo Pauselli", persona.Nombre); Assert.AreEqual("nelopauselli", persona.Twitter); Assert.AreEqual("nelopauselli@gmail.com", persona.Mail); Assert.AreEqual("http://nelopauselli.blogspot.com", persona.Blog); Assert.IsTrue(persona.Cuentas.Any()); Assert.AreEqual("nelopauselli", persona.Cuentas.First().LogonName); Assert.AreEqual(IdentityProviderEnum.Twitter, persona.Cuentas.First().IdentityProvider); Assert.IsTrue(persona.Roles.Any()); Assert.IsTrue(persona.Roles.Contains(Roles.Usuario)); Assert.IsTrue(persona.Roles.Contains(Roles.Administrador)); } } [Test] public void CreateUsuario() { using (_requestEmulator.Invoke()) { CreatePersona("Pablo Morales", "pablomorales", "pablomorales@gmail.com", "http://pablomorales.blogspot.com", new[] {Roles.Usuario}); } using (_requestEmulator.Invoke()) { var persona = _personaRepository.GetByNombre("Pablo Morales"); Assert.IsNotNull(persona); } } [Test] public void ReadUsuario() { Guid personaId; using (_requestEmulator.Invoke()) { var r = CreatePersona("Pablo Morales", "pablomorales", "pablomorales@gmail.com", "http://pablomorales.blogspot.com", new[] {Roles.Usuario}); personaId = r.Id; } using (_requestEmulator.Invoke()) { var persona = _personaRepository.Get(personaId); Assert.IsNotNull(persona); Assert.AreEqual("Pablo Morales", persona.Nombre); Assert.AreEqual("pablomorales", persona.Twitter); Assert.AreEqual("pablomorales@gmail.com", persona.Mail); Assert.AreEqual("http://pablomorales.blogspot.com", persona.Blog); Assert.IsTrue(persona.Cuentas.Any()); Assert.AreEqual("pablomorales", persona.Cuentas.First().LogonName); Assert.AreEqual(IdentityProviderEnum.Twitter, persona.Cuentas.First().IdentityProvider); Assert.IsTrue(persona.Roles.Any()); Assert.IsTrue(persona.Roles.Contains(Roles.Usuario)); Assert.IsFalse(persona.Roles.Contains(Roles.Administrador)); } } [Test] public void Update() { Guid personaId; using (_requestEmulator.Invoke()) { var r = CreatePersona("Nelo Pauselli", "nelopauselli", "nelopauselli@gmail.com", "http://nelopauselli.blogspot.com", null); personaId = r.Id; } using (_requestEmulator.Invoke()) { var persona = _personaRepository.Get(personaId); Assert.IsNotNull(persona); persona.Nombre = "Nelo Mariano Pauselli"; } using (_requestEmulator.Invoke()) { var persona = _personaRepository.Get(personaId); Assert.IsNotNull(persona); Assert.AreEqual("Nelo Mariano Pauselli", persona.Nombre); } } [Test] public void Delete() { Guid personaId; using (_requestEmulator.Invoke()) { var r = CreatePersona("Nelo Pauselli", "nelopauselli", "nelopauselli@gmail.com", "http://nelopauselli.blogspot.com", null); personaId = r.Id; } using (_requestEmulator.Invoke()) { var persona = _personaRepository.Get(personaId); Assert.IsNotNull(persona); _personaService.Delete(personaId); } using (_requestEmulator.Invoke()) { var persona = _personaRepository.Get(personaId); Assert.IsNull(persona); } } } }