view Agendas/trunk/src/Agendas.Tests/PonentesTests.cs @ 24:41b283d27e3e

Ponentes como entidad Agenda no es una entidad persistente (por ahora)
author nelo@MTEySS.neluz.int
date Tue, 15 Mar 2011 07:49:53 -0300
parents
children 3ebe89c88caa
line wrap: on
line source

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

namespace AltNetHispano.Agendas.Tests
{
	[TestFixture]
	public class PonentesTests : TestBase
	{
		[Test]
		public void Publicar_van_con_ponente_registrado()
		{
			var publicador = new Mock<IPublicador>();
			Evento evento = null;
			publicador.Setup(p => p.Publicar(It.IsAny<Evento>())).Callback<Evento>(e => evento = e);

			var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, DefaultEventoRepository, DefaultPonenteRepository);

			agenda.RegistrarPonente("Fabio Maulo", "fabiomaulo@gmail.com", "@fabiomaulo", "http://fabiomaulo.blogspot.com");

			agenda.Publicar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26));

			Assert.AreEqual(1, agenda.GetEventosPublicados().Count);

			publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));

			Assert.IsNotNull(evento);
			Assert.AreEqual("Fabio Maulo", evento.Ponente.Nombre);
			Assert.AreEqual("fabiomaulo@gmail.com", evento.Ponente.Mail);
			Assert.AreEqual("@fabiomaulo", evento.Ponente.Twitter);
			Assert.AreEqual("http://fabiomaulo.blogspot.com", evento.Ponente.Blog);
		}

		[Test]
		public void Publicar_van_sin_ponente_registrado()
		{
			var publicador = new Mock<IPublicador>();
			Evento evento = null;
			publicador.Setup(p => p.Publicar(It.IsAny<Evento>())).Callback<Evento>(e => evento = e);

			var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, DefaultEventoRepository, DefaultPonenteRepository);

			agenda.Publicar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26));

			Assert.AreEqual(1, agenda.GetEventosPublicados().Count);

			publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));

			Assert.IsNotNull(evento);
			Assert.AreEqual("Fabio Maulo", evento.Ponente.Nombre);
			Assert.IsNullOrEmpty(evento.Ponente.Twitter);
		}

		[Test]
		public void Publicar_dos_vans_sin_ponente_registrado()
		{
			var publicador = new Mock<IPublicador>();

			var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, DefaultEventoRepository, DefaultPonenteRepository);

			agenda.Publicar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26));
			agenda.Publicar("Conform - Parte 2", "Fabio Maulo", new DateTime(2011, 3, 5));

			Assert.AreEqual(2, agenda.GetEventosPublicados().Count);

			publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(2));

			Assert.AreEqual(1, DefaultPonenteRepository.GetAll().Count);
		}
	}
}