Mercurial > altnet-hispano
diff Agendas/trunk/src/Agendas.Tests/Cruds/PersonaCrud.cs @ 178:33e57fd1a6c9
Roles: en dominio y autoregistración
author | nelopauselli |
---|---|
date | Mon, 08 Aug 2011 12:30:37 -0300 |
parents | |
children | 222362c29416 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Tests/Cruds/PersonaCrud.cs Mon Aug 08 12:30:37 2011 -0300 @@ -0,0 +1,122 @@ +using System; +using System.Linq; +using AltNetHispano.Agendas.Domain; +using AltNetHispano.Agendas.Domain.Repositories; +using AltNetHispano.Agendas.Domain.Services; +using NUnit.Framework; + +namespace AltNetHispano.Agendas.Tests.Cruds +{ + public class PersonaCrud + { + private readonly IPersonaRepository _personaRepository; + private readonly Func<IDisposable> _requestEmulator; + private readonly PersonaService _personaService; + + public PersonaCrud(Func<IPersonaRepository> createpersonaRepository, Func<IDisposable> requestEmulator) + { + _personaRepository = createpersonaRepository.Invoke(); + _personaService = new PersonaService(_personaRepository); + _requestEmulator = requestEmulator; + } + + public Guid CreateAdministrador() + { + using (_requestEmulator.Invoke()) + { + _personaService.Add("Nelo Pauselli", "nelopauselli", "nelopauselli@gmail.com", "http://nelopauselli.blogspot.com"); + } + + using (_requestEmulator.Invoke()) + { + var persona = _personaRepository.GetByNombre("Nelo Pauselli"); + Assert.IsNotNull(persona); + return persona.Id; + } + } + + public void ReadAdministrador() + { + Guid personaId = CreateAdministrador(); + + 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)); + } + } + + public Guid CreateUsuario() + { + using (_requestEmulator.Invoke()) + { + _personaService.Add("Pablo Morales", "pablomorales", "pablomorales@gmail.com", "http://pablomorales.blogspot.com"); + } + + using (_requestEmulator.Invoke()) + { + var persona = _personaRepository.GetByNombre("Pablo Morales"); + Assert.IsNotNull(persona); + return persona.Id; + } + } + + public void ReadUsuario() + { + Guid personaId = CreateUsuario(); + + 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)); + } + } + + public void Update() + { + Guid personaId = CreateAdministrador(); + + 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); + } + } + } +} \ No newline at end of file