Mercurial > altnet-hispano
view Agendas/trunk/src/Agendas.Tests/PonentesTests.cs @ 94:db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Se agrega la clase Cuenta para identificar cada una de las cuentas con que se puede autenticar una persona
Alta Automatica de cuentas de twitter creando la persona
author | Nelo@Kenia.neluz.int |
---|---|
date | Sat, 04 Jun 2011 12:11:17 -0300 |
parents | 26d0513a8410 |
children | 83d76f6e0a3c |
line wrap: on
line source
using System; using System.Collections.Generic; using System.Linq; using AltNetHispano.Agendas.Domain; using Moq; using NUnit.Framework; namespace AltNetHispano.Agendas.Tests { [TestFixture] public class PonentesTests : TestBase { private const string urlInvitacion = "http://groups.google.com/group/altnet-hispano/browse_thread/thread/65d6d26eb381386e"; [Test] public void Publicar_dos_eventos_con_el_mismo_ponente_no_registrado() { var publicador = new Mock<IPublicador>(); Assert.AreEqual(1, DefaultPersonaRepository.GetAll().Count); var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository); agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), urlInvitacion); agenda.Agendar("Conform - Parte 2", "Fabio Maulo", new DateTime(2011, 3, 5), urlInvitacion); var eventos = agenda.GetEventosAgendados(); Assert.AreEqual(2, eventos.Count); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2)); Assert.AreEqual(2, DefaultPersonaRepository.GetAll().Count); var evento = eventos[0]; Assert.IsNotNull(evento.Persona); var ponente = evento.Persona; Assert.IsNotNull(evento.Persona.Eventos); Assert.Contains(eventos[0], new List<Evento>(ponente.Eventos)); Assert.Contains(eventos[1], new List<Evento>(ponente.Eventos)); } [Test] public void Publicar_evento_con_ponente_registrado() { var publicador = new Mock<IPublicador>(); Evento evento = null; publicador.Setup(p => p.Publicar(It.IsAny<IEnumerable<Track>>())).Callback<IEnumerable<Track>>( t => evento = t.First().Evento); var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository); agenda.RegistrarPonente("Fabio Maulo", "fabiomaulo@gmail.com", "@fabiomaulo", "http://fabiomaulo.blogspot.com"); agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), urlInvitacion); Assert.AreEqual(1, agenda.GetEventosAgendados().Count); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); Assert.IsNotNull(evento); Assert.AreEqual("Fabio Maulo", evento.Persona.Nombre); Assert.AreEqual("fabiomaulo@gmail.com", evento.Persona.Mail); Assert.AreEqual("@fabiomaulo", evento.Persona.Twitter); Assert.AreEqual("http://fabiomaulo.blogspot.com", evento.Persona.Blog); } [Test] public void Publicar_evento_sin_ponente_registrado() { var publicador = new Mock<IPublicador>(); Evento evento = null; publicador.Setup(p => p.Publicar(It.IsAny<IEnumerable<Track>>())).Callback<IEnumerable<Track>>( t => evento = t.First().Evento); var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository); agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), urlInvitacion); Assert.AreEqual(1, agenda.GetEventosAgendados().Count); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); Assert.IsNotNull(evento); Assert.AreEqual("Fabio Maulo", evento.Persona.Nombre); Assert.IsNullOrEmpty(evento.Persona.Twitter); } [Test] public void Quitar_ponente_de_un_evento() { var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); const string titulo = "Audit (parallel model) con NHibernate 3"; Guid eventoId; agenda.Proponer(titulo, "Fabio", urlInvitacion); Persona persona; { var eventos = agenda.GetEventosPropuestos(); Assert.AreEqual(1, eventos.Count); Evento evento = eventos[0]; Assert.AreEqual("Fabio", evento.Persona.Nombre); eventoId = evento.Id; persona = evento.Persona; } agenda.ModificarPropuesta(eventoId, titulo, null, urlInvitacion); { var eventos = agenda.GetEventosPropuestos(); Assert.AreEqual(1, eventos.Count); Evento evento = eventos[0]; Assert.IsNull(evento.Persona); } Assert.AreEqual(0, persona.Eventos.Count()); } [Test] public void Cambiar_ponente_de_un_evento() { var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); const string titulo = "Audit (parallel model) con NHibernate 3"; Guid eventoId; agenda.Proponer(titulo, "Fabio", urlInvitacion); Persona ponente1; { var eventos = agenda.GetEventosPropuestos(); Assert.AreEqual(1, eventos.Count); Evento evento = eventos[0]; Assert.AreEqual("Fabio", evento.Persona.Nombre); eventoId = evento.Id; ponente1 = evento.Persona; } agenda.ModificarPropuesta(eventoId, titulo, "José", urlInvitacion); Persona ponente2; { var eventos = agenda.GetEventosPropuestos(); Assert.AreEqual(1, eventos.Count); Evento evento = eventos[0]; Assert.IsNotNull(evento.Persona); ponente2 = evento.Persona; } Assert.AreEqual(0, ponente1.Eventos.Count()); Assert.AreEqual(1, ponente2.Eventos.Count()); } } }