view Agendas/trunk/src/Agendas.Tests/Cruds/PatrocinadorCrud.cs @ 137:2d1adbaf0373

CRUD de Patrocinador
author nelopauselli
date Thu, 28 Jul 2011 09:26:24 -0300
parents
children 62791999ad01
line wrap: on
line source

using System;
using System.Drawing;
using System.IO;
using System.Linq;
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");

				var image = Image.FromFile("images/apress.gif");
				var ms = new MemoryStream();
				image.Save(ms, image.RawFormat);
				_logo = ms.ToArray();

				patrocinador.Logo = _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);
			}
		}
	}
}