view Agendas/trunk/src/Agendas.Tests/Cruds/PersonaCrud.cs @ 195:4d0b2552edb2

Ticket 170: Cuando se agenda o confirma un evento, verificar que no existan otros dentro del rango horario en que se desarrollarĂ¡ el evento actual.
author juanjose.montesdeocaarbos
date Sat, 13 Aug 2011 01:01:54 -0300
parents 222362c29416
children a36a76bd6ec3
line wrap: on
line source

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", null);
			}

			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", new[]{Roles.Usuario});
			}

			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);
			}
		}
	}
}