# HG changeset patch # User Jorge@Jorge-PC # Date 1308961182 10800 # Node ID 683cc27450ceee7d6b56c1c9e106fbcb246b2c92 # Parent c3573defd18f1a5a8de3a35ecf3d5e69b2e51f82# Parent 8fa58a79656a3a6a8656896823cd908c24d0ec71 Merge diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Domain/Agenda.cs --- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Fri Jun 24 21:19:42 2011 -0300 @@ -27,14 +27,19 @@ return evento; } - public IList GetEventosPropuestos() + public IList GetEventosActivos(EventoState state) { - return _eventosRepository.GetEventosSinFecha() ?? new List(); + return _eventosRepository.GetByState(state) ?? new List(); } - public IList GetEventosAgendados() + public IList GetEventosActivos() { - return _eventosRepository.GetEventosConFecha() ?? new List(); + return _eventosRepository.GetActivos() ?? new List(); + } + + public IEnumerable GetHistorico() + { + return _eventosRepository.GetByState(EventoPublicadoState.GetInstance()) ?? new List(); } public Resultado ModificarEvento(Guid eventoId, string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion) diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Domain/Cuenta.cs --- a/Agendas/trunk/src/Agendas.Domain/Cuenta.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Cuenta.cs Fri Jun 24 21:19:42 2011 -0300 @@ -15,5 +15,28 @@ LogonName = logonName; IdentityProvider = identityProvider; } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != typeof (Cuenta)) return false; + return Equals((Cuenta) obj); + } + + public virtual bool Equals(Cuenta other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return Equals(other.LogonName, LogonName) && Equals(other.IdentityProvider, IdentityProvider); + } + + public override int GetHashCode() + { + unchecked + { + return ((LogonName != null ? LogonName.GetHashCode() : 0)*397) ^ IdentityProvider.GetHashCode(); + } + } } } \ No newline at end of file diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Domain/EventoAgendadoState.cs --- a/Agendas/trunk/src/Agendas.Domain/EventoAgendadoState.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/EventoAgendadoState.cs Fri Jun 24 21:19:42 2011 -0300 @@ -1,4 +1,5 @@ -using AltNetHispano.Agendas.Domain.Exceptions; +using System; +using AltNetHispano.Agendas.Domain.Exceptions; namespace AltNetHispano.Agendas.Domain { @@ -33,5 +34,10 @@ { return Descripcion; } + + public override bool PuedePromover(Accion accion) + { + return accion == Accion.Confirmar; + } } } \ No newline at end of file diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Domain/EventoConfirmadoState.cs --- a/Agendas/trunk/src/Agendas.Domain/EventoConfirmadoState.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/EventoConfirmadoState.cs Fri Jun 24 21:19:42 2011 -0300 @@ -1,4 +1,5 @@ -using AltNetHispano.Agendas.Domain.Exceptions; +using System; +using AltNetHispano.Agendas.Domain.Exceptions; namespace AltNetHispano.Agendas.Domain { @@ -33,5 +34,10 @@ { return Descripcion; } + + public override bool PuedePromover(Accion accion) + { + return accion == Accion.Publicar; + } } } \ No newline at end of file diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Domain/EventoNullState.cs --- a/Agendas/trunk/src/Agendas.Domain/EventoNullState.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/EventoNullState.cs Fri Jun 24 21:19:42 2011 -0300 @@ -1,4 +1,5 @@ -using AltNetHispano.Agendas.Domain.Exceptions; +using System; +using AltNetHispano.Agendas.Domain.Exceptions; namespace AltNetHispano.Agendas.Domain { @@ -37,5 +38,10 @@ { return Descripcion; } + + public override bool PuedePromover(Accion accion) + { + return accion == Accion.Proponer || accion == Accion.Agendar; + } } } \ No newline at end of file diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Domain/EventoPropuestoState.cs --- a/Agendas/trunk/src/Agendas.Domain/EventoPropuestoState.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/EventoPropuestoState.cs Fri Jun 24 21:19:42 2011 -0300 @@ -1,4 +1,5 @@ -using AltNetHispano.Agendas.Domain.Exceptions; +using System; +using AltNetHispano.Agendas.Domain.Exceptions; namespace AltNetHispano.Agendas.Domain { @@ -33,5 +34,10 @@ { return Descripcion; } + + public override bool PuedePromover(Accion accion) + { + return accion == Accion.Agendar; + } } } \ No newline at end of file diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Domain/EventoPublicadoState.cs --- a/Agendas/trunk/src/Agendas.Domain/EventoPublicadoState.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/EventoPublicadoState.cs Fri Jun 24 21:19:42 2011 -0300 @@ -1,4 +1,5 @@ -using AltNetHispano.Agendas.Domain.Exceptions; +using System; +using AltNetHispano.Agendas.Domain.Exceptions; namespace AltNetHispano.Agendas.Domain { @@ -25,5 +26,10 @@ { return Descripcion; } + + public override bool PuedePromover(Accion accion) + { + return false; + } } } \ No newline at end of file diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Domain/EventoState.cs --- a/Agendas/trunk/src/Agendas.Domain/EventoState.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/EventoState.cs Fri Jun 24 21:19:42 2011 -0300 @@ -10,5 +10,7 @@ public abstract void Promover(Evento evento, Accion accion); public abstract string GetDescripcion(); + + public abstract bool PuedePromover(Accion accion); } } diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Domain/IdentityContext.cs --- a/Agendas/trunk/src/Agendas.Domain/IdentityContext.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/IdentityContext.cs Fri Jun 24 21:19:42 2011 -0300 @@ -27,15 +27,21 @@ public static string GetUserName() { - string username = Current.GetUserName(); - if (string.IsNullOrWhiteSpace(username)) - throw new UsuarioNoAutenticadoException(); - return username; + return Current.GetUserName(); + } + + public static bool IsAuthenticated() + { + return !string.IsNullOrWhiteSpace(GetUserName()); } public static Persona GetUsuario() { - var identification = new Identification(GetUserName()); + var userName = GetUserName(); + if (string.IsNullOrWhiteSpace(userName)) + throw new UsuarioNoAutenticadoException(); + + var identification = new Identification(userName); var cuenta = _personaRepository.GetCuenta(identification.IdentityProvider, identification.LogonName); return cuenta != null ? cuenta.Persona : null; diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs --- a/Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs Fri Jun 24 21:19:42 2011 -0300 @@ -7,8 +7,8 @@ { void Delete(Evento evento); Evento Get(Guid vanId); - IList GetEventosConFecha(); - IList GetEventosSinFecha(); + IList GetByState(EventoState state); + IList GetActivos(); Evento GetPropuestaByTitulo(string titulo); void Save(Evento evento); void Update(Evento evento); diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs --- a/Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs Fri Jun 24 21:19:42 2011 -0300 @@ -19,12 +19,12 @@ return cuenta != null; } - public bool Validate(IdentityProviderEnum identityProvider, string username, string nombre) + public bool CreateIfNotExist(IdentityProviderEnum identityProvider, string username, string nombre) { var cuenta = _personaRepository.GetCuenta(identityProvider, username); if (cuenta==null) { - var persona=new Persona(nombre); + var persona = IdentityContext.IsAuthenticated() ? IdentityContext.GetUsuario() : new Persona(nombre); persona.AddCuenta(new Cuenta(identityProvider, username)); if (identityProvider == IdentityProviderEnum.Twitter) diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs --- a/Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs Fri Jun 24 21:19:42 2011 -0300 @@ -13,6 +13,11 @@ //nada que hacer en este método para este repositorio } + public IList GetByState(EventoState state) + { + return Objects.Values.Where(e => e.Estado == state.GetDescripcion()).ToList(); + } + public void Delete(Evento evento) { Objects.Remove(evento.Id); @@ -24,14 +29,12 @@ return Objects.TryGetValue(vanId, out evento) ? evento : null; } - public IList GetEventosSinFecha() + public IList GetActivos() { - return Objects.Values.Where(e => e.Fecha == null).ToList(); - } - - public IList GetEventosConFecha() - { - return Objects.Values.Where(e => e.Fecha != null).ToList(); + return + Objects.Values.Where( + e => + e.Estado != EventoPublicadoState.GetInstance().GetDescripcion()).ToList(); } public Evento GetPropuestaByTitulo(string titulo) diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Repositories.NHibernate/EventoRepository.cs --- a/Agendas/trunk/src/Agendas.Repositories.NHibernate/EventoRepository.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Repositories.NHibernate/EventoRepository.cs Fri Jun 24 21:19:42 2011 -0300 @@ -22,14 +22,12 @@ return Session.Get(vanId); } - public IList GetEventosConFecha() + public IList GetActivos() { - return Session.QueryOver().Where(e => e.Fecha != null).List(); - } - - public IList GetEventosSinFecha() - { - return Session.QueryOver().Where(e => e.Fecha == null).List(); + return + Session.QueryOver().Where( + e => + e.Estado != EventoPublicadoState.GetInstance().GetDescripcion()).List(); } public Evento GetPropuestaByTitulo(string titulo) @@ -41,5 +39,10 @@ { //No es necesario implementarlo } + + public IList GetByState(EventoState state) + { + return Session.QueryOver().Where(e => e.Estado == state.GetDescripcion()).List(); + } } } diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Tests/AgendarTests.cs --- a/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Fri Jun 24 21:19:42 2011 -0300 @@ -31,8 +31,9 @@ var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository); - Assert.Throws(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van)); - Assert.AreEqual(0, agenda.GetEventosAgendados().Count); + Assert.Throws( + () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van)); + Assert.AreEqual(0, agenda.GetEventosActivos().Count); publicador.Verify(p => p.Publicar(It.IsAny>()), Times.Exactly(1)); repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(0)); @@ -50,7 +51,7 @@ Assert.Throws( () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion, TipoEvento.Van)); + urlInvitacion, TipoEvento.Van)); repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(0)); } @@ -65,7 +66,7 @@ var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository); Assert.Throws(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion, TipoEvento.Van)); + urlInvitacion, TipoEvento.Van)); publicador.Verify(p => p.Publicar(It.IsAny>()), Times.Exactly(0)); repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(0)); @@ -77,7 +78,7 @@ var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); var r = agenda.Agendar("Van para publicar", string.Empty, DateTime.Now, - urlInvitacion, TipoEvento.Van); + urlInvitacion, TipoEvento.Van); Assert.IsFalse(r.Succeful); } @@ -90,11 +91,11 @@ var repository = new Mock(); - var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), + var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), repository.Object, DefaultPersonaRepository); agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion, TipoEvento.Van); + urlInvitacion, TipoEvento.Van); publicador1.Verify(p => p.Publicar(It.IsAny>()), Times.Exactly(1)); publicador2.Verify(p => p.Publicar(It.IsAny>()), Times.Exactly(1)); @@ -109,17 +110,17 @@ var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository); agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion, TipoEvento.Van); + urlInvitacion, TipoEvento.Van); - Assert.AreEqual(0, agenda.GetEventosPropuestos().Count); + Assert.AreEqual(0, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count); - var eventos = agenda.GetEventosAgendados(); + var eventos = agenda.GetEventosActivos(); Assert.AreEqual(1, eventos.Count); publicador.Verify(p => p.Publicar(It.IsAny>()), Times.Exactly(1)); var evento = eventos[0]; - + Assert.IsNotNull(evento.Ponente); } @@ -132,11 +133,11 @@ var agenda = new Agenda(publicador.Object, repository, DefaultPersonaRepository); agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion, TipoEvento.Van); + urlInvitacion, TipoEvento.Van); publicador.Verify(p => p.Publicar(It.IsAny>()), Times.Exactly(1)); - var evento = repository.GetEventosConFecha().First(); + var evento = repository.GetActivos().First(); Assert.AreNotEqual(Guid.Empty, evento.Id); Assert.IsNotNull(evento.Fecha); @@ -145,7 +146,7 @@ publicador.Verify(p => p.Publicar(It.IsAny>()), Times.Exactly(2)); - evento = repository.GetEventosConFecha().First(); + evento = repository.GetActivos().First(); Assert.AreEqual("otro titulo", evento.Titulo); Assert.AreEqual("otro ponente", evento.Ponente.Nombre); Assert.AreEqual(fecha, evento.Fecha); @@ -161,13 +162,13 @@ var publicador1 = new Mock(); var publicador2 = new Mock(); - var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), + var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), DefaultEventoRepository, DefaultPersonaRepository); agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion, TipoEvento.Van); + urlInvitacion, TipoEvento.Van); - var van = agenda.GetEventosAgendados().Single(v => v.Titulo == "Van para publicar"); + var van = agenda.GetEventosActivos().Single(v => v.Titulo == "Van para publicar"); //agenda.Recordar(van.Id); publicador1.Verify(p => p.Publicar(It.IsAny>()), Times.Exactly(1)); @@ -184,18 +185,19 @@ var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), DefaultEventoRepository, DefaultPersonaRepository); - agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); - Assert.AreEqual(1, agenda.GetEventosPropuestos().Count); - Assert.AreEqual(0, agenda.GetEventosAgendados().Count); + agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); + Assert.AreEqual(1, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count); + Assert.AreEqual(1, agenda.GetEventosActivos().Count); - var publicado = agenda.GetEventosPropuestos().First(); + var publicado = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).First(); Assert.AreEqual(1, publicado.Tracks.Count()); agenda.ModificarEvento(publicado.Id, "Html 5", "jjmontes", DateTime.Today.AddDays(5), urlInvitacion); - Assert.AreEqual(0, agenda.GetEventosPropuestos().Count); - Assert.AreEqual(1, agenda.GetEventosAgendados().Count); + Assert.AreEqual(0, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count); + Assert.AreEqual(1, agenda.GetEventosActivos(EventoAgendadoState.GetInstance()).Count); + Assert.AreEqual(1, agenda.GetEventosActivos().Count); - var agendado = agenda.GetEventosAgendados().First(); + var agendado = agenda.GetEventosActivos().First(); Assert.AreSame(publicado, agendado); Assert.AreEqual(2, agendado.Tracks.Count()); @@ -203,115 +205,118 @@ 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(); + [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, TipoEvento.Van); + 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"); + var evento = + DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5"); - Assert.IsInstanceOf(typeof(EventoPropuestoState), evento.GetEstado()); - Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Proponer) == 1); - } + 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(); + [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, TipoEvento.Van); + 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"); + var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); - Assert.IsInstanceOf(typeof(EventoAgendadoState), evento.GetEstado()); - Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Agendar) == 1); - } + 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(); + [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, TipoEvento.Van); + 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"); + var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); - agenda.Confirmar(evento.Id); + agenda.Confirmar(evento.Id); - Assert.IsInstanceOf(typeof(EventoConfirmadoState), evento.GetEstado()); - Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Confirmar) == 1); - } + 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(); + [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, TipoEvento.Van); + 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"); + var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); - agenda.Confirmar(evento.Id); - agenda.Publicar(evento.Id, 0, string.Empty); + 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); - } + 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(); + [Test] + public void Al_publicar_un_evento_debe_asignarse_el_nro_de_reunion_y_la_url_de_la_wiki() + { + var publicador1 = new Mock(); - var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); - agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); + 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); + var evento = DefaultEventoRepository.GetActivos().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); + 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); - } + 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(); + [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, TipoEvento.Van); - - var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5"); + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); + agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); - Assert.IsFalse(evento.Estado.GetType() == typeof(EventoAgendadoState)); + var evento = + DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5"); - agenda.Confirmar(evento.Id); - } + 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(); + [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, TipoEvento.Van); - - var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5"); + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); + agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); - Assert.IsFalse(evento.Estado.GetType() == typeof(EventoConfirmadoState)); + var evento = + DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5"); - agenda.Publicar(evento.Id, 0, string.Empty); - } + Assert.IsFalse(evento.Estado.GetType() == typeof(EventoConfirmadoState)); + + agenda.Publicar(evento.Id, 0, string.Empty); + } } } \ No newline at end of file diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Tests/PersonaServiceTests.cs --- a/Agendas/trunk/src/Agendas.Tests/PersonaServiceTests.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PersonaServiceTests.cs Fri Jun 24 21:19:42 2011 -0300 @@ -19,7 +19,7 @@ var personaService = new PersonaService(personaRepository.Object); - Assert.IsTrue(personaService.Validate(IdentityProviderEnum.Twitter, "nelopauselli", "Nelo Pauselli")); + Assert.IsTrue(personaService.CreateIfNotExist(IdentityProviderEnum.Twitter, "nelopauselli", "Nelo Pauselli")); personaRepository.Verify(r=>r.Save(It.IsAny()), Times.Once()); Assert.IsNotNull(persona); Assert.AreEqual(1, persona.Cuentas.Count()); @@ -32,7 +32,7 @@ personaRepository.Setup(r => r.GetCuenta(IdentityProviderEnum.Twitter, "nelopauselli")).Returns(cuenta); Assert.AreEqual(1, persona.Cuentas.Count()); - Assert.IsTrue(personaService.Validate(IdentityProviderEnum.Twitter, "nelopauselli", "Nelo Pauselli")); + Assert.IsTrue(personaService.CreateIfNotExist(IdentityProviderEnum.Twitter, "nelopauselli", "Nelo Pauselli")); Assert.AreEqual(1, persona.Cuentas.Count()); } diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Tests/PonentesTests.cs --- a/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs Fri Jun 24 21:19:42 2011 -0300 @@ -25,7 +25,7 @@ agenda.Agendar("Conform - Parte 2", "Fabio Maulo", new DateTime(2011, 3, 5), urlInvitacion, TipoEvento.Van); - var eventos = agenda.GetEventosAgendados(); + var eventos = agenda.GetEventosActivos(); Assert.AreEqual(2, eventos.Count); publicador.Verify(p => p.Publicar(It.IsAny>()), Times.Exactly(2)); @@ -51,7 +51,7 @@ agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), urlInvitacion, TipoEvento.Van); - Assert.AreEqual(1, agenda.GetEventosAgendados().Count); + Assert.AreEqual(1, agenda.GetEventosActivos().Count); publicador.Verify(p => p.Publicar(It.IsAny>()), Times.Exactly(1)); @@ -75,7 +75,7 @@ agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), urlInvitacion, TipoEvento.Van); - Assert.AreEqual(1, agenda.GetEventosAgendados().Count); + Assert.AreEqual(1, agenda.GetEventosActivos().Count); publicador.Verify(p => p.Publicar(It.IsAny>()), Times.Exactly(1)); @@ -95,7 +95,7 @@ agenda.Proponer(titulo, "Fabio", urlInvitacion, TipoEvento.Van); Persona persona; { - var eventos = agenda.GetEventosPropuestos(); + var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); Assert.AreEqual(1, eventos.Count); Evento evento = eventos[0]; @@ -107,7 +107,7 @@ agenda.ModificarPropuesta(eventoId, titulo, null, urlInvitacion); { - var eventos = agenda.GetEventosPropuestos(); + var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); Assert.AreEqual(1, eventos.Count); Evento evento = eventos[0]; @@ -125,7 +125,7 @@ agenda.Proponer(titulo, "Fabio", urlInvitacion, TipoEvento.Van); { - var eventos = agenda.GetEventosPropuestos(); + var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); Assert.AreEqual(1, eventos.Count); Evento evento = eventos[0]; @@ -136,7 +136,7 @@ agenda.ModificarPropuesta(eventoId, titulo, "José", urlInvitacion); { - var eventos = agenda.GetEventosPropuestos(); + var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); Assert.AreEqual(1, eventos.Count); Evento evento = eventos[0]; diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs --- a/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Fri Jun 24 21:19:42 2011 -0300 @@ -19,18 +19,18 @@ { var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); - agenda.Proponer("Van", null, urlInvitacion, TipoEvento.Van); + agenda.Proponer("Van", null, urlInvitacion, TipoEvento.Van); { - IList eventosPropuestos = agenda.GetEventosPropuestos(); - IList eventosPublicados = agenda.GetEventosAgendados(); + IList eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); + IList eventosAgendados = agenda.GetEventosActivos(EventoAgendadoState.GetInstance()); Assert.AreEqual(1, eventosPropuestos.Count); - Assert.AreEqual(0, eventosPublicados.Count); + Assert.AreEqual(0, eventosAgendados.Count); var evento = eventosPropuestos.FirstOrDefault(); agenda.ModificarPropuesta(evento.Id, "Van 2", "otro ponente", urlInvitacion); - eventosPropuestos = agenda.GetEventosPropuestos(); + eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); Assert.AreEqual(1, eventosPropuestos.Count); evento = eventosPropuestos.FirstOrDefault(); @@ -38,14 +38,14 @@ Assert.AreEqual("otro ponente", evento.Ponente.Nombre); } - var r = agenda.Agendar("Van 2", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van); + var r = agenda.Agendar("Van 2", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van); Assert.IsTrue(r.Succeful); { - IList eventosPropuestos = agenda.GetEventosPropuestos(); - IList eventosPublicados = agenda.GetEventosAgendados(); + IList eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); + IList eventosAgendados = agenda.GetEventosActivos(EventoAgendadoState.GetInstance()); Assert.AreEqual(0, eventosPropuestos.Count); - Assert.AreEqual(1, eventosPublicados.Count); + Assert.AreEqual(1, eventosAgendados.Count); } } @@ -55,14 +55,14 @@ var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); { - agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van); + agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van); } { - var van = agenda.GetEventosPropuestos().FirstOrDefault(); + var van = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).FirstOrDefault(); Assert.IsNotNull(van); var r = agenda.Agendar(van.Titulo, "Ponente", null, - urlInvitacion, TipoEvento.Van); + urlInvitacion, TipoEvento.Van); Assert.IsFalse(r.Succeful); } } @@ -73,16 +73,16 @@ var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); { - agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van); + agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van); } { - var van = agenda.GetEventosPropuestos().FirstOrDefault(); + var van = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).FirstOrDefault(); Assert.IsNotNull(van); van.Actualizar(null, DateTime.Today.AddDays(5), urlInvitacion); var r = agenda.Agendar(van.Titulo, string.Empty, van.Fecha, - urlInvitacion, TipoEvento.Van); + urlInvitacion, TipoEvento.Van); Assert.IsFalse(r.Succeful); } } @@ -104,7 +104,7 @@ var agenda = new Agenda(null, repository.Object, DefaultPersonaRepository); - var r = agenda.Proponer(string.Empty, null, urlInvitacion, TipoEvento.Van); + var r = agenda.Proponer(string.Empty, null, urlInvitacion, TipoEvento.Van); Assert.IsFalse(r.Succeful); repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(0)); @@ -117,16 +117,16 @@ SetCurrentUser(null, null); - Assert.Throws(() => agenda.Proponer("Inmortalidad de la meduza.", null, urlInvitacion, TipoEvento.Van)); + Assert.Throws(() => agenda.Proponer("Inmortalidad de la meduza.", null, urlInvitacion, TipoEvento.Van)); } [Test] public void Proponer_evento_correctamente() { var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); - agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van); + agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van); - IList eventosPropuestos = agenda.GetEventosPropuestos(); + IList eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); Assert.IsNotNull(eventosPropuestos); Assert.AreEqual(1, eventosPropuestos.Count); Assert.AreEqual("Van propuesta", eventosPropuestos[0].Titulo); @@ -137,16 +137,16 @@ { var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); - agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van); + agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van); var r = agenda.Agendar("Van publicada", "jjmontes", DateTime.Now, - urlInvitacion, TipoEvento.Van); + urlInvitacion, TipoEvento.Van); Assert.IsTrue(r.Succeful); - IList eventosPropuestos = agenda.GetEventosPropuestos(); - IList eventosPublicados = agenda.GetEventosAgendados(); + IList eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); + IList eventosAgendados = agenda.GetEventosActivos(EventoAgendadoState.GetInstance()); Assert.AreEqual(1, eventosPropuestos.Count); - Assert.AreEqual(1, eventosPublicados.Count); + Assert.AreEqual(1, eventosAgendados.Count); } } } \ No newline at end of file diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Tests/TestBase.cs --- a/Agendas/trunk/src/Agendas.Tests/TestBase.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/TestBase.cs Fri Jun 24 21:19:42 2011 -0300 @@ -43,8 +43,11 @@ seguridad.Setup(s => s.GetUserName()).Returns(logonName); IPersonaRepository personaRepository = new PersonaRepository(); - var service = new PersonaService(personaRepository); - service.Validate(identityProvider, username, nombre); + var persona = new Persona(nombre); + persona.AddCuenta(new Cuenta(identityProvider, username)); + persona.Twitter = username; + + personaRepository.Save(persona); IdentityContext.Init(seguridad.Object, personaRepository); diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Tests/TrackTests.cs --- a/Agendas/trunk/src/Agendas.Tests/TrackTests.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/TrackTests.cs Fri Jun 24 21:19:42 2011 -0300 @@ -19,7 +19,7 @@ var fecha = DateTime.Now.AddDays(5); agenda.Agendar("Html 5", "jjmontes", fecha, urlInvitacion, TipoEvento.Van); - var evento = repository.GetEventosConFecha().First(); + var evento = repository.GetActivos().First(); Assert.AreEqual(1, evento.Tracks.Count()); var ultimo = evento.Tracks.Last(); @@ -54,7 +54,7 @@ agenda.Agendar("Html 5", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van); - var evento = repository.GetEventosConFecha().First(); + var evento = repository.GetActivos().First(); Assert.AreEqual(1, evento.Tracks.Count()); Assert.AreEqual(Accion.Agendar, evento.Tracks.Last().Accion); diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Tests/Workflows/WorkflowTests.cs --- a/Agendas/trunk/src/Agendas.Tests/Workflows/WorkflowTests.cs Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/Workflows/WorkflowTests.cs Fri Jun 24 21:19:42 2011 -0300 @@ -43,7 +43,7 @@ _workflow.Agendar(); - var evento = DefaultEventoRepository.GetEventosConFecha().SingleOrDefault(); + var evento = DefaultEventoRepository.GetActivos().SingleOrDefault(); Assert.IsNotNull(evento); _workflow.Confirmar(evento.Id); @@ -58,7 +58,7 @@ _workflow.Agendar(); - var evento = DefaultEventoRepository.GetEventosConFecha().SingleOrDefault(); + var evento = DefaultEventoRepository.GetActivos().SingleOrDefault(); Assert.IsNotNull(evento); _workflow.Confirmar(evento.Id); diff -r c3573defd18f -r 683cc27450ce Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj --- a/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Fri Jun 24 21:18:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Fri Jun 24 21:19:42 2011 -0300 @@ -62,10 +62,11 @@ + + - Global.asax @@ -77,6 +78,7 @@ + @@ -86,6 +88,7 @@ + @@ -154,14 +157,12 @@ - + - + - - - + @@ -199,6 +200,15 @@ + + + + + + + + +