Mercurial > altnet-hispano
diff Agendas/trunk/src/Agendas.Tests/AgendarTests.cs @ 109:6bd9be78caa0
Merge
author | Nelo@Kenia.neluz.int |
---|---|
date | Tue, 07 Jun 2011 23:21:07 -0300 |
parents | 80c22175c9b5 |
children | b74734a1a755 |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Tue Jun 07 23:07:06 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Tue Jun 07 23:21:07 2011 -0300 @@ -31,7 +31,7 @@ var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository); - Assert.Throws<Exception>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion)); + Assert.Throws<Exception>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van)); Assert.AreEqual(0, agenda.GetEventosAgendados().Count); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); @@ -50,7 +50,7 @@ Assert.Throws<IdentityContextNotConfiguredException>( () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion)); + urlInvitacion, TipoEvento.Van)); repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); } @@ -65,7 +65,7 @@ var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository); Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion)); + urlInvitacion, TipoEvento.Van)); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(0)); repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); @@ -77,7 +77,7 @@ var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); var r = agenda.Agendar("Van para publicar", string.Empty, DateTime.Now, - urlInvitacion); + urlInvitacion, TipoEvento.Van); Assert.IsFalse(r.Succeful); } @@ -94,7 +94,7 @@ repository.Object, DefaultPersonaRepository); agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion); + urlInvitacion, TipoEvento.Van); publicador1.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); publicador2.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); @@ -109,7 +109,7 @@ var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository); agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion); + urlInvitacion, TipoEvento.Van); Assert.AreEqual(0, agenda.GetEventosPropuestos().Count); @@ -132,7 +132,7 @@ var agenda = new Agenda(publicador.Object, repository, DefaultPersonaRepository); agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion); + urlInvitacion, TipoEvento.Van); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); @@ -165,7 +165,7 @@ DefaultEventoRepository, DefaultPersonaRepository); agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion); + urlInvitacion, TipoEvento.Van); var van = agenda.GetEventosAgendados().Single(v => v.Titulo == "Van para publicar"); //agenda.Recordar(van.Id); @@ -184,7 +184,7 @@ var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), DefaultEventoRepository, DefaultPersonaRepository); - agenda.Proponer("Html 5", "jjmontes", urlInvitacion); + agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); Assert.AreEqual(1, agenda.GetEventosPropuestos().Count); Assert.AreEqual(0, agenda.GetEventosAgendados().Count); @@ -202,5 +202,116 @@ Assert.IsNotNull(agendado.Tracks.Where(t => t.Accion == Accion.Proponer).SingleOrDefault()); Assert.IsNotNull(agendado.Tracks.Where(t => t.Accion == Accion.Agendar).SingleOrDefault()); } + + [Test] + public void Al_proponer_un_evento_debe_quedar_con_estado_EventoPropuestoState_y_debe_generar_el_track_correspondiente() + { + var publicador1 = new Mock<IPublicador>(); + + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); + agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); + + var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5"); + + Assert.IsInstanceOf(typeof(EventoPropuestoState), evento.GetEstado()); + Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Proponer) == 1); + } + + [Test] + public void Al_agendar_un_evento_debe_quedar_con_estado_EventoAgendadoState_y_debe_generar_el_track_correspondiente() + { + var publicador1 = new Mock<IPublicador>(); + + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); + agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); + + var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5"); + + Assert.IsInstanceOf(typeof(EventoAgendadoState), evento.GetEstado()); + Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Agendar) == 1); + } + + [Test] + public void Al_confirmar_un_evento_debe_quedar_con_estado_EventoConfirmadoState_y_debe_generar_el_track_correspondiente() + { + var publicador1 = new Mock<IPublicador>(); + + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); + agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); + + var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5"); + + agenda.Confirmar(evento.Id); + + Assert.IsInstanceOf(typeof(EventoConfirmadoState), evento.GetEstado()); + Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Confirmar) == 1); + } + + [Test] + public void Al_publicar_un_evento_debe_quedar_con_estado_EventoPublicadoState_y_debe_generar_el_track_correspondiente() + { + var publicador1 = new Mock<IPublicador>(); + + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); + agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); + + var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5"); + + agenda.Confirmar(evento.Id); + agenda.Publicar(evento.Id, 0, string.Empty); + + Assert.IsInstanceOf(typeof(EventoPublicadoState), evento.GetEstado()); + Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Publicar) == 1); + } + + [Test] + public void Al_publicar_un_evento_debe_asignarse_el_nro_de_reunion_y_la_url_de_la_wiki() + { + var publicador1 = new Mock<IPublicador>(); + + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); + agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); + + var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5"); + agenda.Confirmar(evento.Id); + + const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx"; + agenda.Publicar(evento.Id, 71, urlWiki); + + Assert.AreEqual(71, evento.NumeroOrden); + Assert.AreEqual(urlWiki, evento.UrlWiki); + } + + [Test] + [ExpectedException(typeof(AccionNoSoportadaException))] + public void Al_confirmar_sin_agendar_debe_lanzarse_excepcion() + { + var publicador1 = new Mock<IPublicador>(); + + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); + agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); + + var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5"); + + Assert.IsFalse(evento.Estado.GetType() == typeof(EventoAgendadoState)); + + agenda.Confirmar(evento.Id); + } + + [Test] + [ExpectedException(typeof(AccionNoSoportadaException))] + public void Al_publicar_sin_confirmar_debe_lanzarse_excepcion() + { + var publicador1 = new Mock<IPublicador>(); + + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); + agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); + + var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5"); + + Assert.IsFalse(evento.Estado.GetType() == typeof(EventoConfirmadoState)); + + agenda.Publicar(evento.Id, 0, string.Empty); + } } } \ No newline at end of file