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