view Agendas/trunk/src/Agendas.Google.Test/PublicadorTest.cs @ 215:85ddae313408

Se soluciona ticket #178. Se resuelve ordenar Historico de Eventos solamente por NumeroOrden de forma descendente.
author alabra
date Sun, 04 Sep 2011 18:35:33 -0300
parents 5346c0500594
children 33976aea7546
line wrap: on
line source

using System;
using System.Linq;
using AltNetHispano.Agendas.Domain;
using AltNetHispano.Agendas.Google;
using AltNetHispano.Agendas.Google.DetailsEvents;
using AltNetHispano.Agendas.Tests;
using Moq;
using NUnit.Framework;

namespace Agendas.Google.Test
{
    [TestFixture]
    public class PublicadorTest : TestBase
    {
        [Test]
        public void CuandoPublicarEventoDadoAccionAgendarEntoncesEventoCreado()
        {
            var adapter = new Mock<IGCalendarAdapter>();
            string message;
            var fechaInicio = new DateTime(2011, 07, 09, 18, 0, 0, DateTimeKind.Utc);
            var fechaTermino = fechaInicio.AddHours(2);
            adapter.Setup(ad => ad.CreateEvent(It.IsAny<IGEventDetail>(), out message)).Returns(true);

            var publicador = new GooglePublicador(adapter.Object);
			var agenda = new Agenda(publicador, DefaultEventoRepository, DefaultPersonaRepository);
            
            agenda.Proponer("Agile Patterns", null, null, TipoEvento.Van);
            adapter.Verify(ad => ad.CreateEvent(It.IsAny<IGEventDetail>(), out message), Times.Never());


            agenda.Agendar("Agile Patterns", TestsHelper.GetOrCreatePonente("Alejandro Labra"), fechaInicio,
                           fechaTermino, "https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion",
                           TipoEvento.Van);
            adapter.Verify(ad => ad.CreateEvent(It.IsAny<IGEventDetail>(), out message), Times.Once());
        }

        [Test]
        public void CuandoPublicarEventoDadoTipoVanEntoncesDetalleCorrecto()
        {
            var adapter = new Mock<IGCalendarAdapter>();
            var detail = new VanGEventDetail();
            var fechaInicio = new DateTime(2011, 07, 09, 18, 0, 0, DateTimeKind.Utc);
            var fechaTermino = fechaInicio.AddHours(2);

            var publicador = new GooglePublicador(adapter.Object);
			var agenda = new Agenda(publicador, DefaultEventoRepository, DefaultPersonaRepository);
            agenda.Proponer("Agile Patterns", null, null, TipoEvento.Van);
            agenda.Agendar("Agile Patterns", TestsHelper.GetOrCreatePonente("Alejandro Labra"), fechaInicio,
                           fechaTermino, "https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion",
                           TipoEvento.Van);

            var ev = DefaultEventoRepository.GetActivos()[0];
            detail.Generate(ev);

            Assert.AreEqual("http://snipr.com/virtualaltnet", detail.Location);
            Assert.AreEqual("VAN sobre Agile Patterns", detail.Title);
            
            Assert.AreEqual(DateTimeKind.Utc, detail.StartEvent.Kind);
            Assert.AreEqual(ev.FechaInicio.Value.Hour, detail.StartEvent.Hour);
            Assert.AreEqual(ev.FechaInicio.Value.Day, detail.StartEvent.Day);
            Assert.AreEqual(ev.FechaInicio.Value.Month, detail.StartEvent.Month);
            Assert.AreEqual(ev.FechaInicio.Value.Year, detail.StartEvent.Year);

            Assert.AreEqual(DateTimeKind.Utc, detail.EndEvent.Kind);
            Assert.AreEqual(ev.FechaTermino.Value.Hour, detail.EndEvent.Hour);
            Assert.AreEqual(ev.FechaTermino.Value.Day, detail.EndEvent.Day);
            Assert.AreEqual(ev.FechaTermino.Value.Month, detail.EndEvent.Month);
            Assert.AreEqual(ev.FechaTermino.Value.Year, detail.EndEvent.Year);

            Assert.AreEqual("La comunidad ALT.NET Hispano (http://altnethispano.org) realizará una VAN sobre Agile Patterns, con Alejandro Labra." +
                           "\n\rFecha: sábado, 09 de julio de 2011 a las 18:00 hrs. Hora Internacional (GMT/UTC), con una duración aproximada de 2 horas." +
                           "\n\rPueden plantear sus comentarios e inquietudes sobre el tema de la reunión en: https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion" +
                           "\n\rPara mayor información sobre cómo atender la reunión consulten: http://tinyurl.com/van-hispano" +
                           "\n\rPueden vincular el Google Calendar al suyo (http://screenr.com/nr7)", detail.Summary);
        }

        [Test]
        public void CuandoPublicarEventoTipoCafeEntoncesDetalleCorrecto()
        {
            var adapter = new Mock<IGCalendarAdapter>();
            var detail = new CafeGEventDetail();
            var fechaInicio = new DateTime(2011, 07, 09, 18, 0, 0, DateTimeKind.Utc);
            var fechaTermino = fechaInicio.AddHours(2);

            var publicador = new GooglePublicador(adapter.Object);
			var agenda = new Agenda(publicador, DefaultEventoRepository, DefaultPersonaRepository);
            agenda.Proponer("Agile Patterns", null, null, TipoEvento.Cafe);
            agenda.Agendar("Agile Patterns", TestsHelper.GetOrCreatePonente("Alejandro Labra"), fechaInicio,
                           fechaTermino, "https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion",
                           TipoEvento.Cafe);

            var ev = DefaultEventoRepository.GetActivos()[0];
            detail.Generate(ev);

            Assert.AreEqual("http://snipr.com/virtualaltnet", detail.Location);
            Assert.AreEqual("Alt.Net Café Agile Patterns", detail.Title);

            Assert.AreEqual(DateTimeKind.Utc, detail.StartEvent.Kind);
            Assert.AreEqual(ev.FechaInicio.Value.Hour, detail.StartEvent.Hour);
            Assert.AreEqual(ev.FechaInicio.Value.Day, detail.StartEvent.Day);
            Assert.AreEqual(ev.FechaInicio.Value.Month, detail.StartEvent.Month);
            Assert.AreEqual(ev.FechaInicio.Value.Year, detail.StartEvent.Year);

            Assert.AreEqual(DateTimeKind.Utc, detail.EndEvent.Kind);
            Assert.AreEqual(ev.FechaTermino.Value.Hour, detail.EndEvent.Hour);
            Assert.AreEqual(ev.FechaTermino.Value.Day, detail.EndEvent.Day);
            Assert.AreEqual(ev.FechaTermino.Value.Month, detail.EndEvent.Month);
            Assert.AreEqual(ev.FechaTermino.Value.Year, detail.EndEvent.Year);

            Assert.AreEqual("La comunidad ALT.NET Hispano (http://altnethispano.org) realizará un Alt.Net Cafe virtual con el tema Agile Patterns." +
                           "\n\rFecha: sábado, 09 de julio de 2011 a las 18:00 hrs. Hora Internacional (GMT/UTC), con una duración aproximada de 2 horas." +
                           "\n\rPueden plantear sus comentarios e inquietudes sobre el tema de la reunión en: https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion" +
                           "\n\rPara mayor información sobre cómo atender la reunión consulten: http://tinyurl.com/van-hispano" +
                           "\n\rPueden vincular el Google Calendar al suyo (http://screenr.com/nr7)", detail.Summary);
        }

        [Test]
        public void CuandoPublicarEventoTipoEstudioEntoncesDetalleCorrecto()
        {
            var adapter = new Mock<IGCalendarAdapter>();
            var detail = new EstudioGEventDetail();
            var fechaInicio = new DateTime(2011, 07, 09, 18, 0, 0, DateTimeKind.Utc);
            var fechaTermino = fechaInicio.AddHours(2);

            var publicador = new GooglePublicador(adapter.Object);
			var agenda = new Agenda(publicador, DefaultEventoRepository, DefaultPersonaRepository);
            agenda.Proponer("Agile Patterns", null, null, TipoEvento.GrupoEstudio);
            agenda.Agendar("Agile Patterns", TestsHelper.GetOrCreatePonente("Alejandro Labra"), fechaInicio,
                           fechaTermino, "https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion",
                           TipoEvento.GrupoEstudio);

            var ev = DefaultEventoRepository.GetActivos()[0];
            detail.Generate(ev);

            Assert.AreEqual("http://snipr.com/virtualaltnet", detail.Location);
            Assert.AreEqual("Grupo de Estudio Agile Patterns", detail.Title);

            Assert.AreEqual(DateTimeKind.Utc, detail.StartEvent.Kind);
            Assert.AreEqual(ev.FechaInicio.Value.Hour, detail.StartEvent.Hour);
            Assert.AreEqual(ev.FechaInicio.Value.Day, detail.StartEvent.Day);
            Assert.AreEqual(ev.FechaInicio.Value.Month, detail.StartEvent.Month);
            Assert.AreEqual(ev.FechaInicio.Value.Year, detail.StartEvent.Year);

            Assert.AreEqual(DateTimeKind.Utc, detail.EndEvent.Kind);
            Assert.AreEqual(ev.FechaTermino.Value.Hour, detail.EndEvent.Hour);
            Assert.AreEqual(ev.FechaTermino.Value.Day, detail.EndEvent.Day);
            Assert.AreEqual(ev.FechaTermino.Value.Month, detail.EndEvent.Month);
            Assert.AreEqual(ev.FechaTermino.Value.Year, detail.EndEvent.Year);

            Assert.AreEqual("La comunidad ALT.NET Hispano (http://altnethispano.org) realizará un grupo de estudio sobre Agile Patterns." +
                           "\n\rFecha: sábado, 09 de julio de 2011 a las 18:00 hrs. Hora Internacional (GMT/UTC), con una duración aproximada de 2 horas." +
                           "\n\rPueden plantear sus comentarios e inquietudes sobre el tema de la reunión en: https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion" +
                           "\n\rPara mayor información sobre cómo atender la reunión consulten: http://tinyurl.com/van-hispano" +
                           "\n\rPueden vincular el Google Calendar al suyo (http://screenr.com/nr7)", detail.Summary);
        }

        [Test]
        public void CuandoPublicarEventoDadoAccionCancelarEntoncesEventoEliminado()
        {
            var adapter = new Mock<IGCalendarAdapter>();
            string message;
            var fechaInicio = new DateTime(2011, 07, 09, 18, 0, 0, DateTimeKind.Utc);
            var fechaTermino = fechaInicio.AddHours(2);
            adapter.Setup(ad => ad.DeleteEvent(It.IsAny<DateTime>(), It.IsAny<DateTime>(), out message)).Returns(true);

            var publicador = new GooglePublicador(adapter.Object);
			var agenda = new Agenda(publicador, DefaultEventoRepository, DefaultPersonaRepository);

            agenda.Proponer("Agile Patterns", null, null, TipoEvento.Van);
            adapter.Verify(ad => ad.DeleteEvent(It.IsAny<DateTime>(), It.IsAny<DateTime>(), out message), Times.Never());

            agenda.Agendar("Agile Patterns", TestsHelper.GetOrCreatePonente("Alejandro Labra"), fechaInicio,
                           fechaTermino, "https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion",
                           TipoEvento.Van);
            adapter.Verify(ad => ad.DeleteEvent(It.IsAny<DateTime>(), It.IsAny<DateTime>(), out message), Times.Never());

            var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Agile Patterns");

            agenda.Cancelar(evento.Id);
            adapter.Verify(ad => ad.DeleteEvent(It.IsAny<DateTime>(), It.IsAny<DateTime>(), out message), Times.Once());
        }
    }
}