Mercurial > altnet-hispano
changeset 29:016b9b9b8d3a
Cuando se publica una van con el mismo titulo que una propuesta, se utiliza esta
Ășltima promoviendola a evento publicado.
author | nelo@MTEySS.neluz.int |
---|---|
date | Wed, 16 Mar 2011 08:25:02 -0300 |
parents | 18bb9fe40517 |
children | 3e5b80e58b1d |
files | Agendas/trunk/src/Agendas.Domain/Agenda.cs Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs |
diffstat | 4 files changed, 47 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Tue Mar 15 09:28:04 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Wed Mar 16 08:25:02 2011 -0300 @@ -26,20 +26,24 @@ { var ponente = GetPonente(ponenteNombre); - var evento = new Evento{Titulo=titulo, Ponente = ponente, Fecha = fecha}; + + var evento = _eventosRepository.GetPropuestaByTitulo(titulo) ?? new Evento {Titulo = titulo}; + evento.Ponente = ponente; + evento.Fecha = fecha; + - if (!evento.Fecha.HasValue) - throw new ValidationException(); - if (NoEstaAutenticado(_seguridad)) - throw new UsuarioNoAutenticadoException(); - if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre)) - throw new ValidationException(); + if (!evento.Fecha.HasValue) + throw new ValidationException(); + if (NoEstaAutenticado(_seguridad)) + throw new UsuarioNoAutenticadoException(); + if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre)) + throw new ValidationException(); - if (_publicador != null) - _publicador.Publicar(evento); - _eventosRepository.Save(evento); - _ponenteRepository.Save(ponente); - } + if (_publicador != null) + _publicador.Publicar(evento); + _eventosRepository.Save(evento); + _ponenteRepository.Save(ponente); + } public void Recordar(Guid eventoId) {
--- a/Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs Tue Mar 15 09:28:04 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs Wed Mar 16 08:25:02 2011 -0300 @@ -11,6 +11,7 @@ Evento Get(Guid vanId); IList<Evento> GetEventosSinFecha(); IList<Evento> GetEventosConFecha(); + Evento GetPropuestaByTitulo(string titulo); } public interface IPonenteRepository
--- a/Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs Tue Mar 15 09:28:04 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs Wed Mar 16 08:25:02 2011 -0300 @@ -43,6 +43,11 @@ return Objects.Values.Where(e => e.Fecha != null).ToList(); } + public Evento GetPropuestaByTitulo(string titulo) + { + return Objects.Values.SingleOrDefault(e => e.Fecha == null && e.Titulo == titulo); + } + public static void Clear() { Objects.Clear();
--- a/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Tue Mar 15 09:28:04 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Wed Mar 16 08:25:02 2011 -0300 @@ -94,5 +94,30 @@ Assert.Throws<ValidationException>(() => agenda.Publicar(van.Titulo, string.Empty, van.Fecha)); } } + + [Test] + public void Publicar_van_propuesta() + { + var agenda = new Agenda(null, null, SeguridadServiceDefault, DefaultEventoRepository, DefaultPonenteRepository); + + agenda.Proponer("Van", null); + { + IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); + IList<Evento> eventosPublicados = agenda.GetEventosPublicados(); + + Assert.AreEqual(1, eventosPropuestos.Count); + Assert.AreEqual(0, eventosPublicados.Count); + } + + agenda.Publicar("Van", "jjmontes", DateTime.Now); + { + IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); + IList<Evento> eventosPublicados = agenda.GetEventosPublicados(); + + Assert.AreEqual(0, eventosPropuestos.Count); + Assert.AreEqual(1, eventosPublicados.Count); + } + } + } } \ No newline at end of file