view Agendas/trunk/src/Agendas.Tests/Cruds/PatrocinadorCrud.cs @ 138:62791999ad01

Agregando relación entre Evento y Patrocinador
author nelopauselli
date Thu, 28 Jul 2011 10:13:28 -0300
parents 2d1adbaf0373
children 5346c0500594
line wrap: on
line source

using System;
using AltNetHispano.Agendas.Domain;
using AltNetHispano.Agendas.Domain.Repositories;
using NUnit.Framework;

namespace AltNetHispano.Agendas.Tests.Cruds
{
	public class PatrocinadorCrud
	{
		private readonly IPatrocinadorRepository _patrocinadorRepository;
		private readonly Func<IDisposable> _requestEmulator;
		private byte[] _logo;

		public PatrocinadorCrud(Func<IPatrocinadorRepository> createPatrocinadorRepository, Func<IDisposable> requestEmulator)
		{
			_patrocinadorRepository = createPatrocinadorRepository.Invoke();
			_requestEmulator = requestEmulator;
		}

		public Guid Create()
		{
			using (_requestEmulator.Invoke())
			{
				var patrocinador = new Patrocinador("APRESS");

				patrocinador.LoadLogo("images/apress.gif");
				_logo = patrocinador.Logo;

				_patrocinadorRepository.Save(patrocinador);
				return patrocinador.Id;
			}
		}

		public void Read()
		{
			Guid patrocinadorId = Create();

			using (_requestEmulator.Invoke())
			{
				var patrocinador = _patrocinadorRepository.Get(patrocinadorId);

				Assert.IsNotNull(patrocinador);
				Assert.AreEqual("APRESS", patrocinador.Nombre);
				Assert.IsNotNull(patrocinador.Logo);
				Assert.AreEqual(_logo, patrocinador.Logo);
			}
		}

		public void Update()
		{
			Guid patrocinadorId = Create();

			using (_requestEmulator.Invoke())
			{
				var patrocinador = _patrocinadorRepository.Get(patrocinadorId);
				Assert.IsNotNull(patrocinador);

				patrocinador.Nombre = "Apress";
			}

			using (_requestEmulator.Invoke())
			{
				var patrocinador = _patrocinadorRepository.Get(patrocinadorId);

				Assert.IsNotNull(patrocinador);
				Assert.AreEqual("Apress", patrocinador.Nombre);
			}
		}

		public void Delete()
		{
			Guid patrocinadorId = Create();

			using (_requestEmulator.Invoke())
			{
				var patrocinador = _patrocinadorRepository.Get(patrocinadorId);
				Assert.IsNotNull(patrocinador);

				_patrocinadorRepository.Delete(patrocinador);
			}

			using (_requestEmulator.Invoke())
			{
				var patrocinador = _patrocinadorRepository.Get(patrocinadorId);
				Assert.IsNull(patrocinador);
			}
		}
	}
}