view Agendas/trunk/src/Agendas.Repositories.Tests/PatrocinadorCrud.cs @ 285:c8f378272407

#123: Patrocinadores de las vans.
author juanjose.montesdeocaarbos
date Sat, 31 Dec 2011 14:45:55 -0300
parents 72a96459f910
children 9bc60d166c8a
line wrap: on
line source

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

namespace Agendas.Repositories.Tests
{
	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);
			}
		}
	}
}