Mercurial > altnet-hispano
view Agendas/trunk/src/Agendas.Tests/PonentesTests.cs @ 257:730b80afa70d
Ticket #191: Perfil de Usuarios
author | juanjose.montesdeocaarbos |
---|---|
date | Wed, 19 Oct 2011 09:19:20 -0300 |
parents | c61954d24c8c |
children | 72a96459f910 |
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); var fechaInicioNHibernate = new DateTime(2011, 2, 26, 18, 0, 0, DateTimeKind.Utc); var fechaTerminoNHibernate = fechaInicioNHibernate.AddHours(2); agenda.Agendar("Audit (parallel model) con NHibernate 3", new[]{TestsHelper.GetOrCreatePonente("Fabio Maulo")}, fechaInicioNHibernate, fechaTerminoNHibernate, urlInvitacion, TipoEvento.Van); var fechaInicioConform = new DateTime(2011, 3, 5, 18, 0, 0, DateTimeKind.Utc); var fechaTerminoConform = fechaInicioNHibernate.AddHours(2); agenda.Agendar("Conform - Parte 2", new[]{TestsHelper.GetOrCreatePonente("Fabio Maulo")}, fechaInicioConform, fechaTerminoConform, urlInvitacion, TipoEvento.Van); var eventos = agenda.GetEventosActivos(); 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.Ponentes); Assert.AreEqual(1, evento.Ponentes.Count()); } [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"); var fechaInicio = new DateTime(2011, 2, 26, 18, 0, 0, DateTimeKind.Utc); var fechaTermino = fechaInicio.AddHours(2); agenda.Agendar("Audit (parallel model) con NHibernate 3", new[]{TestsHelper.GetOrCreatePonente("Fabio Maulo")}, fechaInicio, fechaTermino, urlInvitacion, TipoEvento.Van); Assert.AreEqual(1, agenda.GetEventosActivos().Count); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); Assert.IsNotNull(evento); var ponente = evento.Ponentes.First(); Assert.AreEqual("Fabio Maulo", ponente.Nombre); Assert.AreEqual("fabiomaulo@gmail.com", ponente.Mail); Assert.AreEqual("@fabiomaulo", ponente.Twitter); Assert.AreEqual("http://fabiomaulo.blogspot.com", ponente.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); var fechaInicio = new DateTime(2011, 2, 26, 18, 0, 0, DateTimeKind.Utc); var fechaTermino = fechaInicio.AddHours(2); agenda.Agendar("Audit (parallel model) con NHibernate 3", new[]{TestsHelper.GetOrCreatePonente("Fabio Maulo")}, fechaInicio, fechaTermino, urlInvitacion, TipoEvento.Van); Assert.AreEqual(1, agenda.GetEventosActivos().Count); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); Assert.IsNotNull(evento); var ponente = evento.Ponentes.First(); Assert.AreEqual("Fabio Maulo", ponente.Nombre); Assert.AreEqual("fabiomaulo", ponente.Twitter); } [Test] public void Quitar_ponente_de_una_van() { var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); const string titulo = "Audit (parallel model) con NHibernate 3"; Guid eventoId; DateTime fechaInicio=DateTime.Now; var r = agenda.Agendar(titulo, new[]{TestsHelper.GetOrCreatePonente("Fabio")}, fechaInicio, fechaInicio.AddHours(2), urlInvitacion, TipoEvento.Van); { Assert.IsTrue(r.Succeful); var eventos = agenda.GetEventosActivos(EventoAgendadoState.GetInstance()); Assert.AreEqual(1, eventos.Count); Evento evento = eventos[0]; var ponente = evento.Ponentes.First(); Assert.AreEqual("Fabio", ponente.Nombre); eventoId = evento.Id; } r = agenda.ModificarEvento(eventoId, titulo, new[]{Guid.Empty}, fechaInicio, fechaInicio.AddHours(2), urlInvitacion); Assert.IsFalse(r.Succeful); } [Test] public void Quitar_ponente_de_un_cafe() { var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); const string titulo = "Audit (parallel model) con NHibernate 3"; Guid eventoId; DateTime fechaInicio = DateTime.Now; var r = agenda.Agendar(titulo, new[]{TestsHelper.GetOrCreatePonente("Fabio")}, fechaInicio, fechaInicio.AddHours(2), urlInvitacion, TipoEvento.Cafe); { Assert.IsTrue(r.Succeful); var eventos = agenda.GetEventosActivos(EventoAgendadoState.GetInstance()); Assert.AreEqual(1, eventos.Count); Evento evento = eventos[0]; var ponente = evento.Ponentes.First(); Assert.AreEqual("Fabio", ponente.Nombre); eventoId = evento.Id; } r = agenda.ModificarEvento(eventoId, titulo, new[]{Guid.Empty}, fechaInicio, fechaInicio.AddHours(2), urlInvitacion); { Console.WriteLine(r.Message); Assert.IsTrue(r.Succeful); var eventos = agenda.GetEventosActivos(EventoAgendadoState.GetInstance()); Assert.AreEqual(1, eventos.Count); Evento evento = eventos[0]; Assert.AreEqual(0, evento.Ponentes.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, new[]{TestsHelper.GetOrCreatePonente("Fabio")}, urlInvitacion, TipoEvento.Van); { var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); Assert.AreEqual(1, eventos.Count); Evento evento = eventos[0]; Assert.IsTrue(evento.Ponentes.Any(p => p.Nombre == "Fabio")); eventoId = evento.Id; } agenda.ModificarPropuesta(eventoId, titulo, new[]{TestsHelper.GetOrCreatePonente("José")}, urlInvitacion); { var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); Assert.AreEqual(1, eventos.Count); Evento evento = eventos[0]; Assert.IsTrue(evento.Ponentes.Any(p => p.Nombre == "José")); } } } }