Mercurial > altnet-hispano
changeset 282:bc8dfbde0523
#123: Patrocinadores de las vans: Se verifica que para publicar una Van, debe tener al menos un Patrocinador.
author | juanjose.montesdeocaarbos |
---|---|
date | Mon, 26 Dec 2011 14:21:44 -0300 |
parents | 6382e35625c5 |
children | 2e17dfd1ba35 |
files | Agendas/trunk/src/Agendas.Domain/Agenda.cs Agendas/trunk/src/Agendas.Repositories.Tests/Infraestructure/NhHelperTest.cs Agendas/trunk/src/Agendas.Repositories.Tests/TestsHelper.cs Agendas/trunk/src/Agendas.Repositories.Tests/Workflow.cs Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Agendas/trunk/src/Agendas.Tests/TestsHelper.cs |
diffstat | 7 files changed, 76 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Mon Dec 26 13:48:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Mon Dec 26 14:21:44 2011 -0300 @@ -187,7 +187,10 @@ return new EventoResultado(false, "El nĂºmero de evento ya se encuentra en uso", null); } - Evento evento = GetEvento(eventoId); + var evento = GetEvento(eventoId); + + if (/*evento.Tipo == TipoEvento.Van &&*/ evento.Patrocinadores.Count() == 0) + return new EventoResultado(false, "La VAN debe tener al menos un Patrocinador para ser publicada.", null); evento.Publicar(numeroOrden, urlWiki, duracion);
--- a/Agendas/trunk/src/Agendas.Repositories.Tests/Infraestructure/NhHelperTest.cs Mon Dec 26 13:48:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Repositories.Tests/Infraestructure/NhHelperTest.cs Mon Dec 26 14:21:44 2011 -0300 @@ -10,9 +10,9 @@ var session = sf.OpenStatelessSession(); session.CreateSQLQuery("DELETE FROM Ponentes").ExecuteUpdate(); + session.CreateSQLQuery("DELETE FROM Patrocinador").ExecuteUpdate(); session.CreateSQLQuery("DELETE FROM Evento").ExecuteUpdate(); session.CreateSQLQuery("DELETE FROM Persona").ExecuteUpdate(); - session.CreateSQLQuery("DELETE FROM Patrocinador").ExecuteUpdate(); } } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Repositories.Tests/TestsHelper.cs Mon Dec 26 13:48:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Repositories.Tests/TestsHelper.cs Mon Dec 26 14:21:44 2011 -0300 @@ -7,26 +7,41 @@ { public class TestsHelper { - private readonly IPersonaRepository _repository; + private readonly IPersonaRepository _repositoryPersona; + private readonly IPatrocinadorRepository _repositoryPatrocinador; - public TestsHelper(IPersonaRepository repository) + public TestsHelper(IPersonaRepository repositoryPersona, IPatrocinadorRepository repositoryPatrocinador) { - _repository = repository; + _repositoryPersona = repositoryPersona; + _repositoryPatrocinador = repositoryPatrocinador; } public Guid GetOrCreatePonente(string nombre) { - var persona = _repository.GetByNombre(nombre); + var persona = _repositoryPersona.GetByNombre(nombre); if (persona == null) { persona = new Persona(nombre) { Twitter = nombre.Replace(" ", string.Empty).ToLower() }; - _repository.Save(persona); + _repositoryPersona.Save(persona); - if (_repository is AltNetHispano.Agendas.Repositories.NHibernate.PersonaRepository) + if (_repositoryPersona is AltNetHispano.Agendas.Repositories.NHibernate.PersonaRepository) NhHelper.GetSessionFactory().GetCurrentSession().Flush(); } return persona.Id; } + public Guid GetOrCreatePatrocinador(string nombre) + { + var patrocinador = _repositoryPatrocinador.GetByNombre(nombre); + if (patrocinador == null) + { + patrocinador = new Patrocinador(nombre); + _repositoryPatrocinador.Save(patrocinador); + + if (_repositoryPatrocinador is AltNetHispano.Agendas.Repositories.NHibernate.PatrocinadorRepository) + NhHelper.GetSessionFactory().GetCurrentSession().Flush(); + } + return patrocinador.Id; + } } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Repositories.Tests/Workflow.cs Mon Dec 26 13:48:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Repositories.Tests/Workflow.cs Mon Dec 26 14:21:44 2011 -0300 @@ -3,6 +3,7 @@ using AltNetHispano.Agendas.Domain; using AltNetHispano.Agendas.Domain.Repositories; using NUnit.Framework; +using System.Collections.Generic; namespace Agendas.Repositories.Tests { @@ -21,7 +22,7 @@ _eventoRepository = eventoRepository; _agenda = new Agenda(publicador, eventoRepository, personaRepository, patrocinadorRepository); - _testsHelper = new TestsHelper(personaRepository); + _testsHelper = new TestsHelper(personaRepository, patrocinadorRepository); } public void Proponer() @@ -74,6 +75,10 @@ { using (_requestEmulator.Invoke()) { + _agenda.IndicarPatrocinadores(_eventoId, new List<Guid> {_testsHelper.GetOrCreatePatrocinador("Apress")}); + } + using (_requestEmulator.Invoke()) + { var resultado = _agenda.Publicar(_eventoId, 1, "http://www.altnethispano.org/", new TimeSpan(2, 11, 0)); Assert.IsTrue(resultado.Succeful); }
--- a/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Mon Dec 26 13:48:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Mon Dec 26 14:21:44 2011 -0300 @@ -405,6 +405,7 @@ var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); agenda.Confirmar(evento.Id); + agenda.IndicarPatrocinadores(evento.Id, new List<Guid> { TestsHelper.GetOrCreatePatrocinador("Apress") }); agenda.Publicar(evento.Id, 1, urlWiki, duracion); Assert.IsInstanceOf(typeof(EventoPublicadoState), evento.Estado); @@ -426,7 +427,7 @@ var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); agenda.Confirmar(evento.Id); - + agenda.IndicarPatrocinadores(evento.Id, new List<Guid> { TestsHelper.GetOrCreatePatrocinador("Apress") }); agenda.Publicar(evento.Id, 71, urlWiki, duracion); Assert.AreEqual(71, evento.NumeroOrden); @@ -465,6 +466,8 @@ var evento = DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5"); + agenda.IndicarPatrocinadores(evento.Id, new List<Guid> { TestsHelper.GetOrCreatePatrocinador("Apress") }); + Assert.IsFalse(evento.Estado.GetType() == typeof(EventoConfirmadoState)); Assert.Throws<AccionNoSoportadaException>(() => agenda.Publicar(evento.Id, 1, urlWiki, duracion)); }
--- a/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Mon Dec 26 13:48:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Mon Dec 26 14:21:44 2011 -0300 @@ -179,6 +179,8 @@ agenda.Confirmar(evento.Id); + agenda.IndicarPatrocinadores(evento.Id, new List<Guid> { TestsHelper.GetOrCreatePatrocinador("Apress") }); + var r = agenda.Publicar(evento.Id, 1, "http://www.url.com", new TimeSpan(1, 58, 0)); Assert.IsTrue(r.Succeful); @@ -197,6 +199,7 @@ agenda.Confirmar(evento.Id); + agenda.IndicarPatrocinadores(evento.Id, new List<Guid> {TestsHelper.GetOrCreatePatrocinador("Apress")}); var r = agenda.Publicar(evento.Id, 1, "http://www.url.com", new TimeSpan(1, 58, 0)); Assert.IsFalse(r.Succeful); @@ -204,5 +207,30 @@ } } } + + [Test] + public void Publicar_sin_Patrocinado_No_Permitido() + { + var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository); + { + var fechaInicio = DateTime.Now.ToUniversalTime(); + var fechaTermino = fechaInicio.AddHours(2); + + agenda.Agendar("Van", new[] { TestsHelper.GetOrCreatePonente("jjmontes") }, fechaInicio, fechaTermino, + urlInvitacion, TipoEvento.Van); + { + var eventosAgendado = agenda.GetEventosActivos(EventoAgendadoState.GetInstance()); + + var evento = eventosAgendado.FirstOrDefault(); + + agenda.Confirmar(evento.Id); + + var r = agenda.Publicar(evento.Id, 1, "http://www.url.com", new TimeSpan(1, 58, 0)); + + Assert.IsFalse(r.Succeful); + Assert.AreEqual("La VAN debe tener al menos un Patrocinador para ser publicada.", r.Message); + } + } + } } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/TestsHelper.cs Mon Dec 26 13:48:21 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/TestsHelper.cs Mon Dec 26 14:21:44 2011 -0300 @@ -19,5 +19,17 @@ return persona.Id; } + public static Guid GetOrCreatePatrocinador(string nombre) + { + var repository = new PatrocinadorRepository(); + + var patrocinador = repository.GetByNombre(nombre); + if (patrocinador == null) + { + patrocinador = new Patrocinador(nombre); + repository.Save(patrocinador); + } + return patrocinador.Id; + } } } \ No newline at end of file