# HG changeset patch # User jorge.rowies # Date 1307285854 10800 # Node ID 92c5a12015f394faa8923c9cb2e23432a5b06d07 # Parent 9bfdd5bf3ad245a97c3149310f61a4a7d548ccb7 agregado de tests sobre los estados de un Evento diff -r 9bfdd5bf3ad2 -r 92c5a12015f3 Agendas/trunk/src/Agendas.Tests/AgendarTests.cs --- a/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Sun Jun 05 11:10:32 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Sun Jun 05 11:57:34 2011 -0300 @@ -202,5 +202,98 @@ 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(); + + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); + agenda.Proponer("Html 5", "jjmontes", urlInvitacion); + + var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5"); + + Assert.IsInstanceOf(typeof(EventoPropuestoState), evento.Estado); + 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(); + + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); + agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion); + + var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5"); + + Assert.IsInstanceOf(typeof(EventoAgendadoState), evento.Estado); + 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(); + + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); + agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion); + + var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5"); + + agenda.Confirmar(evento.Id); + + Assert.IsInstanceOf(typeof(EventoConfirmadoState), evento.Estado); + 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(); + + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); + agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion); + + var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5"); + + agenda.Confirmar(evento.Id); + agenda.Publicar(evento.Id); + + Assert.IsInstanceOf(typeof(EventoPublicadoState), evento.Estado); + Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Publicar) == 1); + } + + [Test] + [ExpectedException(typeof(AccionNoSoportadaException))] + public void Al_confirmar_sin_agendar_debe_lanzarse_excepcion() + { + var publicador1 = new Mock(); + + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); + agenda.Proponer("Html 5", "jjmontes", urlInvitacion); + + 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(); + + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); + agenda.Proponer("Html 5", "jjmontes", urlInvitacion); + + var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5"); + + Assert.IsFalse(evento.Estado.GetType() == typeof(EventoConfirmadoState)); + + agenda.Publicar(evento.Id); + } } } \ No newline at end of file