Mercurial > altnet-hispano
changeset 145:e6e6bfb1da9e
En la edición de un evento (nuevo, propuesta, modificación), el ponente se selecciona desde un combo.
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Mon Aug 01 11:42:24 2011 -0300 @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using System.Linq; using AltNetHispano.Agendas.Domain.Exceptions; @@ -7,159 +6,151 @@ namespace AltNetHispano.Agendas.Domain { - public class Agenda - { - private readonly IEventoRepository _eventosRepository; - private readonly IPersonaRepository _personaRepository; - private readonly IPatrocinadorRepository _patrocinadorRepository; + public class Agenda + { + private readonly IEventoRepository _eventosRepository; + private readonly IPersonaRepository _personaRepository; + private readonly IPatrocinadorRepository _patrocinadorRepository; - private readonly IPublicador _publicador; + private readonly IPublicador _publicador; - public Agenda(IPublicador publicador, IEventoRepository eventosRepository, - IPersonaRepository personaRepository, IPatrocinadorRepository patrocinadorRepository) - { - _publicador = publicador; - _patrocinadorRepository = patrocinadorRepository; - _personaRepository = personaRepository; - _eventosRepository = eventosRepository; - } + public Agenda(IPublicador publicador, IEventoRepository eventosRepository, + IPersonaRepository personaRepository, IPatrocinadorRepository patrocinadorRepository) + { + _publicador = publicador; + _patrocinadorRepository = patrocinadorRepository; + _personaRepository = personaRepository; + _eventosRepository = eventosRepository; + } - public Evento GetEvento(Guid eventoId) - { - Evento evento =_eventosRepository.Get(eventoId); - if (evento == null) - throw new EventoNotFoundException(eventoId); - return evento; - } + public Evento GetEvento(Guid eventoId) + { + Evento evento = _eventosRepository.Get(eventoId); + if (evento == null) + throw new EventoNotFoundException(eventoId); + return evento; + } - public IList<Evento> GetEventosActivos(EventoState state) - { - return _eventosRepository.GetByState(state) ?? new List<Evento>(); - } + public IList<Evento> GetEventosActivos(EventoState state) + { + return _eventosRepository.GetByState(state) ?? new List<Evento>(); + } - public IList<Evento> GetEventosActivos() - { - return _eventosRepository.GetActivos() ?? new List<Evento>(); - } + public IList<Evento> GetEventosActivos() + { + return _eventosRepository.GetActivos() ?? new List<Evento>(); + } - public IEnumerable<Evento> GetHistorico() - { - return _eventosRepository.GetByState(EventoPublicadoState.GetInstance()) ?? new List<Evento>(); - } + public IEnumerable<Evento> GetHistorico() + { + return _eventosRepository.GetByState(EventoPublicadoState.GetInstance()) ?? new List<Evento>(); + } - public Resultado ModificarEvento(Guid eventoId, string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion) - { - Evento evento = GetEvento(eventoId); + public Resultado ModificarEvento(Guid eventoId, string titulo, Guid ponenteId, DateTime? fecha, string urlInvitacion) + { + Evento evento = GetEvento(eventoId); + Persona persona = _personaRepository.Get(ponenteId); - Persona persona = null; - if (!string.IsNullOrWhiteSpace(ponenteNombre)) - persona = GetPonente(ponenteNombre); + if (evento.Titulo != titulo) + evento.CambiarTitulo(titulo); - if (evento.Titulo != titulo) - evento.CambiarTitulo(titulo); + if (evento.Fecha == null && fecha != null) + evento.Agendar(persona, fecha, urlInvitacion); + else if (evento.Fecha != fecha || evento.Ponente != persona || evento.UrlInvitacion != urlInvitacion) + evento.Actualizar(persona, fecha, urlInvitacion); - if (evento.Fecha == null && fecha != null) - evento.Agendar(persona, fecha, urlInvitacion); - else if (evento.Fecha != fecha || evento.Ponente != persona || evento.UrlInvitacion != urlInvitacion) - evento.Actualizar(persona, fecha, urlInvitacion); + Notify(evento); - Notify(evento); - - return new Resultado(true); - } + return new Resultado(true); + } - public Resultado ModificarPropuesta(Guid id, string titulo, string ponenteNombre, string urlInvitacion) - { - return ModificarEvento(id, titulo, ponenteNombre, null, urlInvitacion); - } + public Resultado ModificarPropuesta(Guid id, string titulo, Guid ponenteId, string urlInvitacion) + { + return ModificarEvento(id, titulo, ponenteId, null, urlInvitacion); + } - public Resultado Proponer(string titulo, string ponenteNombre, string urlInvitacion, TipoEvento tipo) - { - Persona persona = GetPonente(ponenteNombre); - var evento = Evento.Proponer(titulo, persona, urlInvitacion, tipo); + public Resultado Proponer(string titulo, Guid? ponenteId, string urlInvitacion, TipoEvento tipo) + { + Persona persona = null; + if (ponenteId.HasValue) + persona = _personaRepository.Get(ponenteId.Value); - if (string.IsNullOrWhiteSpace(evento.Titulo)) - return new Resultado(false); + var evento = Evento.Proponer(titulo, persona, urlInvitacion, tipo); - Notify(evento); + if (string.IsNullOrWhiteSpace(evento.Titulo)) + return new Resultado(false); - _eventosRepository.Save(evento); - _personaRepository.Save(persona); + Notify(evento); - return new Resultado(true); - } + _eventosRepository.Save(evento); - public Resultado Agendar(string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion, TipoEvento tipo) - { - if (!fecha.HasValue) - return new Resultado(false); - if (string.IsNullOrWhiteSpace(ponenteNombre)) - return new Resultado(false); + return new Resultado(true); + } - Persona persona = GetPonente(ponenteNombre); + public Resultado Agendar(string titulo, Guid ponenteId, DateTime? fecha, string urlInvitacion, TipoEvento tipo) + { + if (!fecha.HasValue) + return new Resultado(false); - Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo); - if (evento == null) - evento = Evento.Agendar(titulo, persona, fecha.Value, urlInvitacion, tipo); - else - evento.Agendar(persona, fecha, urlInvitacion); - - Notify(evento); + Persona persona = _personaRepository.Get(ponenteId); + if (persona == null) + return new Resultado(false) + {Message = string.Format("No se encontró el ponente indicado ({0})", ponenteId)}; - _eventosRepository.Save(evento); - _personaRepository.Save(persona); - - return new Resultado(true); - } + Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo); + if (evento == null) + evento = Evento.Agendar(titulo, persona, fecha.Value, urlInvitacion, tipo); + else + evento.Agendar(persona, fecha, urlInvitacion); - public Resultado Confirmar(Guid eventoId) - { - Evento evento = GetEvento(eventoId); + Notify(evento); - evento.Confirmar(); + _eventosRepository.Save(evento); + + return new Resultado(true); + } - Notify(evento); + public Resultado Confirmar(Guid eventoId) + { + Evento evento = GetEvento(eventoId); - _eventosRepository.Save(evento); + evento.Confirmar(); - return new Resultado(true); - } + Notify(evento); - public Resultado Publicar(Guid eventoId, short numeroOrden, string urlWiki) - { - Evento evento = GetEvento(eventoId); + _eventosRepository.Save(evento); - evento.Publicar(numeroOrden, urlWiki); + return new Resultado(true); + } - Notify(evento); + public Resultado Publicar(Guid eventoId, short numeroOrden, string urlWiki) + { + Evento evento = GetEvento(eventoId); - _eventosRepository.Save(evento); - - return new Resultado(true); - } + evento.Publicar(numeroOrden, urlWiki); - private void Notify(Evento evento) - { - var tracks = evento.GetTrackNews(); - if (_publicador != null) - _publicador.Publicar(tracks); - } + Notify(evento); + + _eventosRepository.Save(evento); + + return new Resultado(true); + } - public void RegistrarPonente(string nombre, string mail, string twitter, string blog) - { - var ponente = new Persona(nombre, mail, twitter, blog); - _personaRepository.Save(ponente); - } + private void Notify(Evento evento) + { + var tracks = evento.GetTrackNews(); + if (_publicador != null) + _publicador.Publicar(tracks); + } - private Persona GetPonente(string nombre) - { - Persona persona = _personaRepository.GetByNombre(nombre) ?? new Persona(nombre); - _personaRepository.Save(persona); - return persona; - } + public void RegistrarPonente(string nombre, string mail, string twitter, string blog) + { + var ponente = new Persona(nombre, mail, twitter, blog); + _personaRepository.Save(ponente); + } public Resultado Cancelar(Guid eventoId) - { + { Evento evento = GetEvento(eventoId); evento.Cancelar(); @@ -169,10 +160,10 @@ _eventosRepository.Save(evento); return new Resultado(true); - } + } - public Resultado Descartar(Guid eventoId) - { + public Resultado Descartar(Guid eventoId) + { Evento evento = GetEvento(eventoId); evento.Descartar(); @@ -182,10 +173,10 @@ _eventosRepository.Save(evento); return new Resultado(true); - } + } - public Resultado ReProponer(Guid eventoId) - { + public Resultado ReProponer(Guid eventoId) + { Evento evento = GetEvento(eventoId); evento.ReProponer(); @@ -195,10 +186,10 @@ _eventosRepository.Save(evento); return new Resultado(true); - } + } - public Resultado ReAgendar(Guid eventoId) - { + public Resultado ReAgendar(Guid eventoId) + { Evento evento = GetEvento(eventoId); evento.ReAgendar(); @@ -208,35 +199,35 @@ _eventosRepository.Save(evento); return new Resultado(true); - } + } - public void IndicarPatrocinadores(Guid eventoId, Guid[] patrocinadores) - { - var evento = GetEvento(eventoId); + public void IndicarPatrocinadores(Guid eventoId, IEnumerable<Guid> patrocinadores) + { + var evento = GetEvento(eventoId); - var agregar = new List<Patrocinador>(); - var quitar = new List<Patrocinador>(); + var agregar = new List<Patrocinador>(); + var quitar = new List<Patrocinador>(); - foreach (var patrocinadorId in patrocinadores) - { - if (!evento.Patrocinadores.Any(p => p.Id == patrocinadorId)) - { - var patrocinador = _patrocinadorRepository.Get(patrocinadorId); - agregar.Add(patrocinador); - } - } + foreach (var patrocinadorId in patrocinadores) + { + if (!evento.Patrocinadores.Any(p => p.Id == patrocinadorId)) + { + var patrocinador = _patrocinadorRepository.Get(patrocinadorId); + agregar.Add(patrocinador); + } + } - foreach (var patrocinador in evento.Patrocinadores) - { - if (!patrocinadores.Any(p => p == patrocinador.Id)) - quitar.Add(patrocinador); - } + foreach (var patrocinador in evento.Patrocinadores) + { + if (!patrocinadores.Any(p => p == patrocinador.Id)) + quitar.Add(patrocinador); + } - foreach (var patrocinador in agregar) - evento.AddPatrocinador(patrocinador); + foreach (var patrocinador in agregar) + evento.AddPatrocinador(patrocinador); - foreach (var patrocinador in quitar) - evento.RemovePatrocinador(patrocinador); - } - } + foreach (var patrocinador in quitar) + evento.RemovePatrocinador(patrocinador); + } + } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Google.Test/PublicadorTest.cs Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Google.Test/PublicadorTest.cs Mon Aug 01 11:42:24 2011 -0300 @@ -25,7 +25,7 @@ agenda.Proponer("Agile Patterns", null, null, TipoEvento.Van); adapter.Verify(ad => ad.CreateEvent(It.IsAny<IGEventDetail>(), out message), Times.Never()); - agenda.Agendar("Agile Patterns", "Alejandro Labra", new DateTime(2011, 07, 09), "https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion", TipoEvento.Van); + agenda.Agendar("Agile Patterns", TestsHelper.GetOrCreatePonente("Alejandro Labra"), new DateTime(2011, 07, 09), "https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion", TipoEvento.Van); adapter.Verify(ad => ad.CreateEvent(It.IsAny<IGEventDetail>(), out message), Times.Once()); } @@ -38,7 +38,7 @@ 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", "Alejandro Labra", new DateTime(2011, 07, 09), "https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion", TipoEvento.Van); + agenda.Agendar("Agile Patterns", TestsHelper.GetOrCreatePonente("Alejandro Labra"), new DateTime(2011, 07, 09), "https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion", TipoEvento.Van); var ev = DefaultEventoRepository.GetActivos()[0]; detail.Generate(ev); @@ -74,7 +74,7 @@ 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", "Alejandro Labra", new DateTime(2011, 07, 09), "https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion", TipoEvento.Cafe); + agenda.Agendar("Agile Patterns", TestsHelper.GetOrCreatePonente("Alejandro Labra"), new DateTime(2011, 07, 09), "https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion", TipoEvento.Cafe); var ev = DefaultEventoRepository.GetActivos()[0]; detail.Generate(ev); @@ -110,7 +110,7 @@ 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", "Alejandro Labra", new DateTime(2011, 07, 09), "https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion", TipoEvento.GrupoEstudio); + agenda.Agendar("Agile Patterns", TestsHelper.GetOrCreatePonente("Alejandro Labra"), new DateTime(2011, 07, 09), "https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion", TipoEvento.GrupoEstudio); var ev = DefaultEventoRepository.GetActivos()[0]; detail.Generate(ev); @@ -150,7 +150,7 @@ 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", "Alejandro Labra", new DateTime(2011, 07, 09), "https://groups.google.com/d/topic/altnet-hispano/arYEMsPiAtY/discussion", TipoEvento.Van); + agenda.Agendar("Agile Patterns", TestsHelper.GetOrCreatePonente("Alejandro Labra"), new DateTime(2011, 07, 09), "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");
--- a/Agendas/trunk/src/Agendas.Resources/Properties/DataAnnotationResources.Designer.cs Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Resources/Properties/DataAnnotationResources.Designer.cs Mon Aug 01 11:42:24 2011 -0300 @@ -61,6 +61,24 @@ } /// <summary> + /// Looks up a localized string similar to Correo electrónico. + /// </summary> + public static string EMail { + get { + return ResourceManager.GetString("EMail", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Correo electrónico de la persona para contactarse con ella. + /// </summary> + public static string EMailDescription { + get { + return ResourceManager.GetString("EMailDescription", resourceCulture); + } + } + + /// <summary> /// Looks up a localized string similar to debe ingresar la fecha del evento. /// </summary> public static string FechaRequired { @@ -70,6 +88,24 @@ } /// <summary> + /// Looks up a localized string similar to Nombre de la persona que identifica a esta persona entre todas. + /// </summary> + public static string NombreDescription { + get { + return ResourceManager.GetString("NombreDescription", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Seleccione el ponente o responsable del evento. + /// </summary> + public static string PonenteDescription { + get { + return ResourceManager.GetString("PonenteDescription", resourceCulture); + } + } + + /// <summary> /// Looks up a localized string similar to debe ingresar el nombre del ponente. /// </summary> public static string PonenteRequired { @@ -124,6 +160,15 @@ } /// <summary> + /// Looks up a localized string similar to Cuenta de Twitter de la persona, con esta cuenta podrá autenticarse. + /// </summary> + public static string TwitterDescription { + get { + return ResourceManager.GetString("TwitterDescription", resourceCulture); + } + } + + /// <summary> /// Looks up a localized string similar to Url de la invitación. /// </summary> public static string UrlInvitacion { @@ -133,6 +178,15 @@ } /// <summary> + /// Looks up a localized string similar to Ingrese la url de la cadena de mails donde se realizó la invitación para el evento. + /// </summary> + public static string UrlInvitacionDescription { + get { + return ResourceManager.GetString("UrlInvitacionDescription", resourceCulture); + } + } + + /// <summary> /// Looks up a localized string similar to la url ingresada no es válida. /// </summary> public static string UrlInvitacionUrl {
--- a/Agendas/trunk/src/Agendas.Resources/Properties/DataAnnotationResources.resx Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Resources/Properties/DataAnnotationResources.resx Mon Aug 01 11:42:24 2011 -0300 @@ -117,9 +117,21 @@ <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> + <data name="EMail" xml:space="preserve"> + <value>Correo electrónico</value> + </data> + <data name="EMailDescription" xml:space="preserve"> + <value>Correo electrónico de la persona para contactarse con ella</value> + </data> <data name="FechaRequired" xml:space="preserve"> <value>debe ingresar la fecha del evento</value> </data> + <data name="NombreDescription" xml:space="preserve"> + <value>Nombre de la persona que identifica a esta persona entre todas</value> + </data> + <data name="PonenteDescription" xml:space="preserve"> + <value>Seleccione el ponente o responsable del evento</value> + </data> <data name="PonenteRequired" xml:space="preserve"> <value>debe ingresar el nombre del ponente</value> </data> @@ -138,9 +150,15 @@ <data name="TituloRequired" xml:space="preserve"> <value>debe ingresar el título</value> </data> + <data name="TwitterDescription" xml:space="preserve"> + <value>Cuenta de Twitter de la persona, con esta cuenta podrá autenticarse</value> + </data> <data name="UrlInvitacion" xml:space="preserve"> <value>Url de la invitación</value> </data> + <data name="UrlInvitacionDescription" xml:space="preserve"> + <value>Ingrese la url de la cadena de mails donde se realizó la invitación para el evento</value> + </data> <data name="UrlInvitacionUrl" xml:space="preserve"> <value>la url ingresada no es válida</value> </data>
--- a/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Mon Aug 01 11:42:24 2011 -0300 @@ -32,7 +32,7 @@ var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository, DefaultPatrocinadorRepository); Assert.Throws<Exception>( - () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van)); + () => agenda.Agendar("Van para publicar", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.Now, urlInvitacion, TipoEvento.Van)); Assert.AreEqual(0, agenda.GetEventosActivos().Count); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); @@ -50,7 +50,7 @@ var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository, DefaultPatrocinadorRepository); Assert.Throws<IdentityContextNotConfiguredException>( - () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, + () => agenda.Agendar("Van para publicar", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.Now, 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, DefaultPatrocinadorRepository); - Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, + Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Agendar("Van para publicar", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.Now, urlInvitacion, TipoEvento.Van)); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(0)); @@ -77,7 +77,7 @@ { var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - var r = agenda.Agendar("Van para publicar", string.Empty, DateTime.Now, + var r = agenda.Agendar("Van para publicar", Guid.Empty, DateTime.Now, urlInvitacion, TipoEvento.Van); Assert.IsFalse(r.Succeful); @@ -94,7 +94,7 @@ var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), repository.Object, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, + agenda.Agendar("Van para publicar", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.Now, urlInvitacion, TipoEvento.Van); publicador1.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); @@ -109,7 +109,7 @@ var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, + agenda.Agendar("Van para publicar", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.Now, urlInvitacion, TipoEvento.Van); Assert.AreEqual(0, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count); @@ -132,7 +132,7 @@ var agenda = new Agenda(publicador.Object, repository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, + agenda.Agendar("Van para publicar", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.Now, urlInvitacion, TipoEvento.Van); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); @@ -142,7 +142,7 @@ Assert.IsNotNull(evento.Fecha); DateTime fecha = evento.Fecha.Value.AddDays(7); - agenda.ModificarEvento(evento.Id, "otro titulo", "otro ponente", fecha, urlInvitacion); + agenda.ModificarEvento(evento.Id, "otro titulo", TestsHelper.GetOrCreatePonente("otro ponente"), fecha, urlInvitacion); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2)); @@ -153,7 +153,7 @@ var idEventoNoExistente = new Guid("99999999999999999999999999999999"); Assert.Throws<EventoNotFoundException>( - () => agenda.ModificarEvento(idEventoNoExistente, "algún título", "un ponente", DateTime.Now, urlInvitacion)); + () => agenda.ModificarEvento(idEventoNoExistente, "algún título", TestsHelper.GetOrCreatePonente("un ponente"), DateTime.Now, urlInvitacion)); } [Test, Ignore("Por ahora no existe el concepto de recordar")] @@ -165,7 +165,7 @@ var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, + agenda.Agendar("Van para publicar", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.Now, urlInvitacion, TipoEvento.Van); var van = agenda.GetEventosActivos().Single(v => v.Titulo == "Van para publicar"); @@ -185,14 +185,14 @@ var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); + agenda.Proponer("Html 5", TestsHelper.GetOrCreatePonente("jjmontes"), urlInvitacion, TipoEvento.Van); Assert.AreEqual(1, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count); Assert.AreEqual(1, agenda.GetEventosActivos().Count); 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); + agenda.ModificarEvento(publicado.Id, "Html 5", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.Today.AddDays(5), urlInvitacion); Assert.AreEqual(0, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count); Assert.AreEqual(1, agenda.GetEventosActivos(EventoAgendadoState.GetInstance()).Count); Assert.AreEqual(1, agenda.GetEventosActivos().Count); @@ -211,7 +211,7 @@ var publicador1 = new Mock<IPublicador>(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); + agenda.Proponer("Html 5", TestsHelper.GetOrCreatePonente("jjmontes"), urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5"); @@ -226,7 +226,7 @@ var publicador1 = new Mock<IPublicador>(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); + agenda.Agendar("Html 5", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.MinValue, urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); @@ -240,7 +240,7 @@ var publicador1 = new Mock<IPublicador>(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); + agenda.Agendar("Html 5", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.MinValue, urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); @@ -257,7 +257,7 @@ var publicador1 = new Mock<IPublicador>(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); + agenda.Agendar("Html 5", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.MinValue, urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); @@ -275,7 +275,7 @@ var publicador1 = new Mock<IPublicador>(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); + agenda.Agendar("Html 5", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.MinValue, urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); @@ -291,7 +291,7 @@ var publicador1 = new Mock<IPublicador>(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); + agenda.Agendar("Html 5", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.MinValue, urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); @@ -308,7 +308,7 @@ var publicador1 = new Mock<IPublicador>(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); + agenda.Agendar("Html 5", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.MinValue, urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); agenda.Confirmar(evento.Id); @@ -327,7 +327,7 @@ var publicador1 = new Mock<IPublicador>(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); + agenda.Proponer("Html 5", TestsHelper.GetOrCreatePonente("jjmontes"), urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5"); @@ -344,7 +344,7 @@ var publicador1 = new Mock<IPublicador>(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); + agenda.Proponer("Html 5", TestsHelper.GetOrCreatePonente("jjmontes"), urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5");
--- a/Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj Mon Aug 01 11:42:24 2011 -0300 @@ -90,6 +90,7 @@ <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="AgendarTests.cs" /> <Compile Include="TestBase.cs" /> + <Compile Include="TestsHelper.cs" /> <Compile Include="TrackTests.cs" /> <Compile Include="Workflows\Workflow.cs" /> <Compile Include="Workflows\WorkflowTests.cs" />
--- a/Agendas/trunk/src/Agendas.Tests/Eventos_y_patrocinadores_tests.cs Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/Eventos_y_patrocinadores_tests.cs Mon Aug 01 11:42:24 2011 -0300 @@ -98,7 +98,7 @@ private Guid CrearEvento() { - _agenda.Agendar("ADFS", "Nelo Pauselli", DateTime.Today.AddDays(7), null, TipoEvento.Van); + _agenda.Agendar("ADFS", TestsHelper.GetOrCreatePonente("Nelo Pauselli"), DateTime.Today.AddDays(7), null, TipoEvento.Van); var evento = DefaultEventoRepository.GetActivos().First(); return evento.Id;
--- a/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs Mon Aug 01 11:42:24 2011 -0300 @@ -7,141 +7,141 @@ namespace AltNetHispano.Agendas.Tests { - [TestFixture] - public class PonentesTests : TestBase - { - private const string urlInvitacion = "http://groups.google.com/group/altnet-hispano/browse_thread/thread/65d6d26eb381386e"; + [TestFixture] + public class PonentesTests : TestBase + { + private const string urlInvitacion = "http://groups.google.com/group/altnet-hispano/browse_thread/thread/65d6d26eb381386e"; - [Test] - public void Publicar_dos_eventos_con_el_mismo_ponente_no_registrado() - { - var publicador = new Mock<IPublicador>(); - Assert.AreEqual(1, DefaultPersonaRepository.GetAll().Count); + [Test] + public void Publicar_dos_eventos_con_el_mismo_ponente_no_registrado() + { + var publicador = new Mock<IPublicador>(); + Assert.AreEqual(1, DefaultPersonaRepository.GetAll().Count); - var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); + var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), + agenda.Agendar("Audit (parallel model) con NHibernate 3", TestsHelper.GetOrCreatePonente("Fabio Maulo"), new DateTime(2011, 2, 26), urlInvitacion, TipoEvento.Van); - agenda.Agendar("Conform - Parte 2", "Fabio Maulo", new DateTime(2011, 3, 5), + agenda.Agendar("Conform - Parte 2", TestsHelper.GetOrCreatePonente("Fabio Maulo"), new DateTime(2011, 3, 5), urlInvitacion, TipoEvento.Van); - var eventos = agenda.GetEventosActivos(); - Assert.AreEqual(2, eventos.Count); + var eventos = agenda.GetEventosActivos(); + Assert.AreEqual(2, eventos.Count); - publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2)); + publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2)); - Assert.AreEqual(2, DefaultPersonaRepository.GetAll().Count); + Assert.AreEqual(2, DefaultPersonaRepository.GetAll().Count); - var evento = eventos[0]; + var evento = eventos[0]; - Assert.IsNotNull(evento.Ponente); - } + Assert.IsNotNull(evento.Ponente); + } - [Test] - public void Publicar_evento_con_ponente_registrado() - { - var publicador = new Mock<IPublicador>(); - Evento evento = null; - publicador.Setup(p => p.Publicar(It.IsAny<IEnumerable<Track>>())).Callback<IEnumerable<Track>>( - t => evento = t.First().Evento); + [Test] + public void Publicar_evento_con_ponente_registrado() + { + var publicador = new Mock<IPublicador>(); + Evento evento = null; + publicador.Setup(p => p.Publicar(It.IsAny<IEnumerable<Track>>())).Callback<IEnumerable<Track>>( + t => evento = t.First().Evento); - var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); + var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.RegistrarPonente("Fabio Maulo", "fabiomaulo@gmail.com", "@fabiomaulo", "http://fabiomaulo.blogspot.com"); + agenda.RegistrarPonente("Fabio Maulo", "fabiomaulo@gmail.com", "@fabiomaulo", "http://fabiomaulo.blogspot.com"); - agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), urlInvitacion, TipoEvento.Van); + agenda.Agendar("Audit (parallel model) con NHibernate 3", TestsHelper.GetOrCreatePonente("Fabio Maulo"), new DateTime(2011, 2, 26), urlInvitacion, TipoEvento.Van); - Assert.AreEqual(1, agenda.GetEventosActivos().Count); + Assert.AreEqual(1, agenda.GetEventosActivos().Count); - publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); + publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); - Assert.IsNotNull(evento); - Assert.AreEqual("Fabio Maulo", evento.Ponente.Nombre); - Assert.AreEqual("fabiomaulo@gmail.com", evento.Ponente.Mail); - Assert.AreEqual("@fabiomaulo", evento.Ponente.Twitter); - Assert.AreEqual("http://fabiomaulo.blogspot.com", evento.Ponente.Blog); - } + Assert.IsNotNull(evento); + Assert.AreEqual("Fabio Maulo", evento.Ponente.Nombre); + Assert.AreEqual("fabiomaulo@gmail.com", evento.Ponente.Mail); + Assert.AreEqual("@fabiomaulo", evento.Ponente.Twitter); + Assert.AreEqual("http://fabiomaulo.blogspot.com", evento.Ponente.Blog); + } - [Test] - public void Publicar_evento_sin_ponente_registrado() - { - var publicador = new Mock<IPublicador>(); - Evento evento = null; - publicador.Setup(p => p.Publicar(It.IsAny<IEnumerable<Track>>())).Callback<IEnumerable<Track>>( - t => evento = t.First().Evento); + [Test] + public void Publicar_evento_sin_ponente_registrado() + { + var publicador = new Mock<IPublicador>(); + Evento evento = null; + publicador.Setup(p => p.Publicar(It.IsAny<IEnumerable<Track>>())).Callback<IEnumerable<Track>>( + t => evento = t.First().Evento); - var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); + var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), + agenda.Agendar("Audit (parallel model) con NHibernate 3", TestsHelper.GetOrCreatePonente("Fabio Maulo"), new DateTime(2011, 2, 26), urlInvitacion, TipoEvento.Van); - Assert.AreEqual(1, agenda.GetEventosActivos().Count); + Assert.AreEqual(1, agenda.GetEventosActivos().Count); - publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); + publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); - Assert.IsNotNull(evento); - Assert.AreEqual("Fabio Maulo", evento.Ponente.Nombre); - Assert.IsNullOrEmpty(evento.Ponente.Twitter); - } + Assert.IsNotNull(evento); + Assert.AreEqual("Fabio Maulo", evento.Ponente.Nombre); + Assert.AreEqual("fabiomaulo", evento.Ponente.Twitter); + } - [Test] - public void Quitar_ponente_de_un_evento() - { - var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); + [Test] + public void Quitar_ponente_de_un_evento() + { + var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - const string titulo = "Audit (parallel model) con NHibernate 3"; - Guid eventoId; + const string titulo = "Audit (parallel model) con NHibernate 3"; + Guid eventoId; - agenda.Proponer(titulo, "Fabio", urlInvitacion, TipoEvento.Van); - Persona persona; - { - var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); - Assert.AreEqual(1, eventos.Count); + agenda.Proponer(titulo, TestsHelper.GetOrCreatePonente("Fabio"), urlInvitacion, TipoEvento.Van); + Persona persona; + { + var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); + Assert.AreEqual(1, eventos.Count); - Evento evento = eventos[0]; - Assert.AreEqual("Fabio", evento.Ponente.Nombre); + Evento evento = eventos[0]; + Assert.AreEqual("Fabio", evento.Ponente.Nombre); - eventoId = evento.Id; - persona = evento.Ponente; - } + eventoId = evento.Id; + persona = evento.Ponente; + } - agenda.ModificarPropuesta(eventoId, titulo, null, urlInvitacion); - { - var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); - Assert.AreEqual(1, eventos.Count); + agenda.ModificarPropuesta(eventoId, titulo, Guid.Empty, urlInvitacion); + { + var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); + Assert.AreEqual(1, eventos.Count); - Evento evento = eventos[0]; - Assert.IsNull(evento.Ponente); - } - } + Evento evento = eventos[0]; + Assert.IsNull(evento.Ponente); + } + } - [Test] - public void Cambiar_ponente_de_un_evento() - { - var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); + [Test] + public void Cambiar_ponente_de_un_evento() + { + var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - const string titulo = "Audit (parallel model) con NHibernate 3"; - Guid eventoId; + const string titulo = "Audit (parallel model) con NHibernate 3"; + Guid eventoId; - agenda.Proponer(titulo, "Fabio", urlInvitacion, TipoEvento.Van); - { - var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); - Assert.AreEqual(1, eventos.Count); + agenda.Proponer(titulo, TestsHelper.GetOrCreatePonente("Fabio"), urlInvitacion, TipoEvento.Van); + { + var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); + Assert.AreEqual(1, eventos.Count); - Evento evento = eventos[0]; - Assert.AreEqual("Fabio", evento.Ponente.Nombre); + Evento evento = eventos[0]; + Assert.AreEqual("Fabio", evento.Ponente.Nombre); - eventoId = evento.Id; - } + eventoId = evento.Id; + } - agenda.ModificarPropuesta(eventoId, titulo, "José", urlInvitacion); - { - var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); - Assert.AreEqual(1, eventos.Count); + agenda.ModificarPropuesta(eventoId, titulo, TestsHelper.GetOrCreatePonente("José"), urlInvitacion); + { + var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); + Assert.AreEqual(1, eventos.Count); - Evento evento = eventos[0]; - Assert.IsNotNull(evento.Ponente); - } - } - } + Evento evento = eventos[0]; + Assert.IsNotNull(evento.Ponente); + } + } + } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Mon Aug 01 11:42:24 2011 -0300 @@ -28,7 +28,7 @@ Assert.AreEqual(0, eventosAgendados.Count); var evento = eventosPropuestos.FirstOrDefault(); - agenda.ModificarPropuesta(evento.Id, "Van 2", "otro ponente", urlInvitacion); + agenda.ModificarPropuesta(evento.Id, "Van 2", TestsHelper.GetOrCreatePonente("otro ponente"), urlInvitacion); eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); Assert.AreEqual(1, eventosPropuestos.Count); @@ -38,7 +38,7 @@ 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", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.Now, urlInvitacion, TipoEvento.Van); Assert.IsTrue(r.Succeful); { IList<Evento> eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()); @@ -61,7 +61,7 @@ { var van = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).FirstOrDefault(); Assert.IsNotNull(van); - var r = agenda.Agendar(van.Titulo, "Ponente", null, + var r = agenda.Agendar(van.Titulo, TestsHelper.GetOrCreatePonente("Ponente"), null, urlInvitacion, TipoEvento.Van); Assert.IsFalse(r.Succeful); } @@ -81,7 +81,7 @@ Assert.IsNotNull(van); van.Actualizar(null, DateTime.Today.AddDays(5), urlInvitacion); - var r = agenda.Agendar(van.Titulo, string.Empty, van.Fecha, + var r = agenda.Agendar(van.Titulo, Guid.Empty, van.Fecha, urlInvitacion, TipoEvento.Van); Assert.IsFalse(r.Succeful); } @@ -138,7 +138,7 @@ var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van); - var r = agenda.Agendar("Van publicada", "jjmontes", DateTime.Now, + var r = agenda.Agendar("Van publicada", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.Now, urlInvitacion, TipoEvento.Van); Assert.IsTrue(r.Succeful);
--- a/Agendas/trunk/src/Agendas.Tests/TestBase.cs Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/TestBase.cs Mon Aug 01 11:42:24 2011 -0300 @@ -1,4 +1,5 @@ -using AltNetHispano.Agendas.Domain; +using System; +using AltNetHispano.Agendas.Domain; using AltNetHispano.Agendas.Domain.Repositories; using AltNetHispano.Agendas.Repositories.Memory; using Moq; @@ -23,7 +24,6 @@ get { return new PatrocinadorRepository(); } } - [SetUp] public void LimpiarEventos() { @@ -61,7 +61,6 @@ personaRepository.Save(persona); IdentityContext.Init(seguridad.Object, personaRepository); - } } } \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Tests/TestsHelper.cs Mon Aug 01 11:42:24 2011 -0300 @@ -0,0 +1,23 @@ +using System; +using AltNetHispano.Agendas.Domain; +using AltNetHispano.Agendas.Repositories.Memory; + +namespace AltNetHispano.Agendas.Tests +{ + public static class TestsHelper + { + public static Guid GetOrCreatePonente(string nombre) + { + var repository = new PersonaRepository(); + + var persona = repository.GetByNombre(nombre); + if (persona == null) + { + persona = new Persona(nombre) { Twitter = nombre.Replace(" ", string.Empty).ToLower() }; + repository.Save(persona); + } + return persona.Id; + } + + } +} \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/TrackTests.cs Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/TrackTests.cs Mon Aug 01 11:42:24 2011 -0300 @@ -5,61 +5,61 @@ namespace AltNetHispano.Agendas.Tests { - [TestFixture] - public class TrackTests : TestBase - { - private const string urlInvitacion = "http://groups.google.com/group/altnet-hispano/browse_thread/thread/65d6d26eb381386e"; + [TestFixture] + public class TrackTests : TestBase + { + private const string urlInvitacion = "http://groups.google.com/group/altnet-hispano/browse_thread/thread/65d6d26eb381386e"; - [Test] - public void Track_al_publicar_y_modificar_evento() - { - var repository = DefaultEventoRepository; + [Test] + public void Track_al_publicar_y_modificar_evento() + { + var repository = DefaultEventoRepository; - var agenda = new Agenda(null, repository, DefaultPersonaRepository, DefaultPatrocinadorRepository); + var agenda = new Agenda(null, repository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - var fecha = DateTime.Now.AddDays(5); - agenda.Agendar("Html 5", "jjmontes", fecha, urlInvitacion, TipoEvento.Van); - var evento = repository.GetActivos().First(); + var fecha = DateTime.Now.AddDays(5); + agenda.Agendar("Html 5", TestsHelper.GetOrCreatePonente("jjmontes"), fecha, urlInvitacion, TipoEvento.Van); + var evento = repository.GetActivos().First(); - Assert.AreEqual(1, evento.Tracks.Count()); - var ultimo = evento.Tracks.Last(); - Assert.AreEqual(evento, ultimo.Evento); - Assert.AreEqual(Accion.Agendar, ultimo.Accion); - Assert.IsNotNull(ultimo.Usuario); - Assert.AreEqual("Nelo Pauselli", ultimo.Usuario.Nombre); + Assert.AreEqual(1, evento.Tracks.Count()); + var ultimo = evento.Tracks.Last(); + Assert.AreEqual(evento, ultimo.Evento); + Assert.AreEqual(Accion.Agendar, ultimo.Accion); + Assert.IsNotNull(ultimo.Usuario); + Assert.AreEqual("Nelo Pauselli", ultimo.Usuario.Nombre); - agenda.ModificarEvento(evento.Id, "Html 5", "otro ponente", fecha, urlInvitacion); - Assert.AreEqual(2, evento.Tracks.Count()); - ultimo = evento.Tracks.Last(); - Assert.AreEqual(evento, ultimo.Evento); - Assert.AreEqual(Accion.Modificar, ultimo.Accion); - Assert.IsNotNull(ultimo.Usuario); - Assert.AreEqual("Nelo Pauselli", ultimo.Usuario.Nombre); + agenda.ModificarEvento(evento.Id, "Html 5", TestsHelper.GetOrCreatePonente("otro ponente"), fecha, urlInvitacion); + Assert.AreEqual(2, evento.Tracks.Count()); + ultimo = evento.Tracks.Last(); + Assert.AreEqual(evento, ultimo.Evento); + Assert.AreEqual(Accion.Modificar, ultimo.Accion); + Assert.IsNotNull(ultimo.Usuario); + Assert.AreEqual("Nelo Pauselli", ultimo.Usuario.Nombre); - agenda.ModificarEvento(evento.Id, "Html 5 y Css 3", "otro ponente", fecha, urlInvitacion); - Assert.AreEqual(3, evento.Tracks.Count()); - ultimo = evento.Tracks.Last(); - Assert.AreEqual(evento, ultimo.Evento); - Assert.AreEqual(Accion.CambiarTitulo, ultimo.Accion); - Assert.IsNotNull(ultimo.Usuario); - Assert.AreEqual("Nelo Pauselli", ultimo.Usuario.Nombre); - } + agenda.ModificarEvento(evento.Id, "Html 5 y Css 3", TestsHelper.GetOrCreatePonente("otro ponente"), fecha, urlInvitacion); + Assert.AreEqual(3, evento.Tracks.Count()); + ultimo = evento.Tracks.Last(); + Assert.AreEqual(evento, ultimo.Evento); + Assert.AreEqual(Accion.CambiarTitulo, ultimo.Accion); + Assert.IsNotNull(ultimo.Usuario); + Assert.AreEqual("Nelo Pauselli", ultimo.Usuario.Nombre); + } - [Test] - public void Track_al_publicar_y_confirmar_evento() - { - var repository = DefaultEventoRepository; + [Test] + public void Track_al_publicar_y_confirmar_evento() + { + var repository = DefaultEventoRepository; - var agenda = new Agenda(null, repository, DefaultPersonaRepository, DefaultPatrocinadorRepository); + var agenda = new Agenda(null, repository, DefaultPersonaRepository, DefaultPatrocinadorRepository); - agenda.Agendar("Html 5", "jjmontes", DateTime.Now, + agenda.Agendar("Html 5", TestsHelper.GetOrCreatePonente("jjmontes"), DateTime.Now, urlInvitacion, TipoEvento.Van); - var evento = repository.GetActivos().First(); + var evento = repository.GetActivos().First(); - Assert.AreEqual(1, evento.Tracks.Count()); - Assert.AreEqual(Accion.Agendar, evento.Tracks.Last().Accion); + Assert.AreEqual(1, evento.Tracks.Count()); + Assert.AreEqual(Accion.Agendar, evento.Tracks.Last().Accion); - //TODO: confirmar evento y evaluar .tracks - } - } + //TODO: confirmar evento y evaluar .tracks + } + } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/Workflows/Workflow.cs Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/Workflows/Workflow.cs Mon Aug 01 11:42:24 2011 -0300 @@ -17,14 +17,14 @@ public void Proponer() { - var resultado = _agenda.Proponer("SOLID", "Jorge", null, TipoEvento.Van); + var resultado = _agenda.Proponer("SOLID", TestsHelper.GetOrCreatePonente("Jorge"), null, TipoEvento.Van); Assert.IsTrue(resultado.Succeful); } public void Agendar() { - var resultado = _agenda.Agendar("SOLID", "Jorge", DateTime.Today.AddDays(5), null, TipoEvento.Van); + var resultado = _agenda.Agendar("SOLID", TestsHelper.GetOrCreatePonente("Jorge"), DateTime.Today.AddDays(5), null, TipoEvento.Van); Assert.IsTrue(resultado.Succeful); }
--- a/Agendas/trunk/src/Agendas.Twitter.Tests/Publicador_tests.cs Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Twitter.Tests/Publicador_tests.cs Mon Aug 01 11:42:24 2011 -0300 @@ -61,7 +61,7 @@ adapter.Verify(a => a.UpdateStatus(It.IsAny<OAuthTokens>(), It.IsAny<string>()), Times.Once()); - agenda.Agendar("Identity Providers", "Nelo Pauselli", DateTime.Today.AddDays(7), null, TipoEvento.GrupoEstudio); + agenda.Agendar("Identity Providers", TestsHelper.GetOrCreatePonente("Nelo Pauselli"), DateTime.Today.AddDays(7), null, TipoEvento.GrupoEstudio); adapter.Verify(a => a.UpdateStatus(It.IsAny<OAuthTokens>(), It.IsAny<string>()), Times.Exactly(2));
--- a/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Mon Aug 01 11:42:24 2011 -0300 @@ -215,6 +215,9 @@ <ItemGroup> <Content Include="Views\Persona\Modificar.cshtml" /> </ItemGroup> + <ItemGroup> + <Content Include="Views\Shared\EditorTemplates\Ponente.cshtml" /> + </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
--- a/Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs Mon Aug 01 11:42:24 2011 -0300 @@ -93,7 +93,7 @@ { Id = id, Titulo = evento.Titulo, - Ponente = evento.Ponente != null ? evento.Ponente.Nombre : string.Empty, + Ponente = evento.Ponente != null ? evento.Ponente.Id : Guid.Empty, Fecha = evento.Fecha, UrlInvitacion = evento.UrlInvitacion }; @@ -129,7 +129,7 @@ { Id = id, Titulo = evento.Titulo, - Ponente = evento.Ponente != null ? evento.Ponente.Nombre : string.Empty, + Ponente = evento.Ponente != null ? evento.Ponente.Id : Guid.Empty, Fecha = evento.Fecha, UrlInvitacion = evento.UrlInvitacion };
--- a/Agendas/trunk/src/Agendas.Web/DataProviders.cs Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/DataProviders.cs Mon Aug 01 11:42:24 2011 -0300 @@ -1,6 +1,8 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; using System.Web.Mvc; +using AltNetHispano.Agendas.Factories; using AltNetHispano.Agendas.Web.Models; namespace AltNetHispano.Agendas.Web @@ -12,5 +14,15 @@ return from t in EventoModelHelper.GetTiposEventos() select new SelectListItem {Text = t.TipoEventoStr, Value = t.TipoEvento.ToString()}; } + + public static IEnumerable<SelectListItem> GetPonentes(this HtmlHelper helper, Guid id) + { + var personas = AgendaFactory.GetPersonaService(); + return from p in personas.GetAll() + orderby p.Nombre + select + new SelectListItem {Text = p.Nombre, Value = p.Id.ToString(), Selected = p.Id.Equals(id)}; + } + } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Web/Models/EventoModel.cs Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Models/EventoModel.cs Mon Aug 01 11:42:24 2011 -0300 @@ -21,7 +21,8 @@ public string Titulo { get; set; } [Required] - public string Ponente { get; set; } + [UIHint("Ponente")] + public Guid Ponente { get; set; } [Required] public DateTime Fecha { get; set; } @@ -39,7 +40,8 @@ public string Titulo { get; set; } [Required] - public string Ponente { get; set; } + [UIHint("Ponente")] + public Guid Ponente { get; set; } [Required] public DateTime? Fecha { get; set; } @@ -57,7 +59,8 @@ public string Titulo { get; set; } [Required] - public string Ponente { get; set; } + [UIHint("Ponente")] + public Guid Ponente { get; set; } [Required] public DateTime? Fecha { get; set; }
--- a/Agendas/trunk/src/Agendas.Web/Models/PropuestaModel.cs Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Models/PropuestaModel.cs Mon Aug 01 11:42:24 2011 -0300 @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Web.Mvc; using DataAnnotationsExtensions; @@ -14,7 +15,8 @@ [Required] public string Titulo { get; set; } - public string Ponente { get; set; } + [UIHint("Ponente")] + public Guid Ponente { get; set; } [Url] public string UrlInvitacion { get; set; }
--- a/Agendas/trunk/src/Agendas.Web/Views/Evento/Modificar.cshtml Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Views/Evento/Modificar.cshtml Mon Aug 01 11:42:24 2011 -0300 @@ -22,6 +22,7 @@ @Html.EditorForModel() <p> <input type="submit" value="Guardar" /> + @Html.ActionLink("Cancelar", "Index") </p> </fieldset> </div>