view Agendas/trunk/src/Agendas.Google.Test/PublicadorTest.cs @ 298:9bc60d166c8a

Se corrigieron los tests por el cambio de Patrocinador, para que no persista el logo en disco. Se comentó el código de PatrocinadorApiController, que no se utiliza.
author juanjose.montesdeocaarbos
date Sun, 19 Feb 2012 16:00:38 -0300
parents a6037c6c88d8
children
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, DefaultPatrocinadorRepository);
            
            agenda.Proponer("Agile Patterns", null, null, TipoEvento.Van);
            adapter.Verify(ad => ad.CreateEvent(It.IsAny<IGEventDetail>(), out message), Times.Never());


            agenda.Agendar("Agile Patterns",new[]{ 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, DefaultPatrocinadorRepository);
            agenda.Proponer("Agile Patterns", null, null, TipoEvento.Van);
            agenda.Agendar("Agile Patterns", new[]{ 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, DefaultPatrocinadorRepository);
            agenda.Proponer("Agile Patterns", null, null, TipoEvento.Cafe);
            agenda.Agendar("Agile Patterns", new[]{ 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, DefaultPatrocinadorRepository);
            agenda.Proponer("Agile Patterns", null, null, TipoEvento.GrupoEstudio);
            agenda.Agendar("Agile Patterns", new[]{ 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, DefaultPatrocinadorRepository);

            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", new[]{ 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());
        }

		[Test]
		public void PublicarConMasDeUnPonente()
		{
			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, DefaultPatrocinadorRepository);
			agenda.Agendar("Identity Providers Públicos y Empresariales", new[]{ TestsHelper.GetOrCreatePonente("Carlos Peix"),TestsHelper.GetOrCreatePonente("Nelo Pauselli")}, fechaInicio,
						   fechaTermino, "https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion",
						   TipoEvento.Van);

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

			Assert.That(detail.Summary, Is.StringContaining("Carlos Peix y Nelo Pauselli."));
		}

		[Test]
		public void PublicarSinPonente()
		{
			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, DefaultPatrocinadorRepository);
			agenda.Agendar("Identity Providers Públicos y Empresariales", null, fechaInicio,
						   fechaTermino, "https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion",
						   TipoEvento.Cafe);

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

			Assert.AreEqual("La comunidad ALT.NET Hispano (http://altnethispano.org) realizará un Café sobre Identity Providers Públicos y Empresariales." +
						   "\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 CuandoHoraEventoDiferente1800DadoTipoVanEntoncesSummaryCorrecto()
        {
            var adapter = new Mock<IGCalendarAdapter>();
            var detail = new VanGEventDetail();
            var fechaInicio = new DateTime(2011, 07, 09, 17, 0, 0, DateTimeKind.Utc);
            var fechaTermino = fechaInicio.AddHours(2);

            var publicador = new GooglePublicador(adapter.Object);
            var agenda = new Agenda(publicador, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
            agenda.Proponer("Agile Patterns", null, null, TipoEvento.Van);
            agenda.Agendar("Agile Patterns", new[] { 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 17: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);
        }
    }
}