# HG changeset patch # User nelopauselli # Date 1317774655 10800 # Node ID 51faeabfb9d949f2d0d6b3c531b8cbd1bfb03b01 # Parent 04d6b386afa7fbadabb182a8f6a49a186bbd0086 Todos los tests en verde quitando al ponente principal diff -r 04d6b386afa7 -r 51faeabfb9d9 Agendas/trunk/src/Agendas.Domain/Agenda.cs --- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Tue Oct 04 20:42:46 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Tue Oct 04 21:30:55 2011 -0300 @@ -50,7 +50,7 @@ { Evento evento = GetEvento(eventoId); - if (evento.Tipo == TipoEvento.Van && (ponentesId == null || !ponentesId.Any())) + if (evento.Tipo == TipoEvento.Van && (ponentesId == null || !ponentesId.Any(id=>id!=Guid.Empty))) return new EventoResultado(false, "Debe indicar el ponente para este tipo de evento", null); if (evento.Titulo != titulo) @@ -61,7 +61,7 @@ else if (evento.FechaInicio != fechaInicio || evento.UrlInvitacion != urlInvitacion || evento.FechaTermino != fechaTermino) evento.Actualizar(fechaInicio, fechaTermino, urlInvitacion); - var r = ActualizarPonentes(evento, ponentesId); + var r = ActualizarPonentes(evento, ponentesId, Accion.Modificar); if (!r.Succeful) return r; Notify(evento); @@ -83,7 +83,7 @@ var evento = Evento.Proponer(titulo, urlInvitacion, tipo); - var r = ActualizarPonentes(evento, ponentesId); + var r = ActualizarPonentes(evento, ponentesId, null); if (!r.Succeful) return r; Notify(evento); @@ -101,7 +101,7 @@ return new EventoResultado(false, "Debe indicar la fecha", null); if (!fechaTermino.HasValue) return new EventoResultado(false, "Debe indicar la hora y duración", null); - if (tipo==TipoEvento.Van && (ponentesId == null || !ponentesId.Any())) + if (tipo == TipoEvento.Van && (ponentesId == null || !ponentesId.Any(id => id != Guid.Empty))) return new EventoResultado(false, "Debe indicar el ponente para este tipo de evento", null); var existeOtroEvento = _eventosRepository.GetNoPropuestoByTitulo(titulo); @@ -126,7 +126,7 @@ else evento.Agendar(fechaInicio, fechaTermino, urlInvitacion); - var r = ActualizarPonentes(evento, ponentesId); + var r = ActualizarPonentes(evento, ponentesId, null); if (!r.Succeful) return r; Notify(evento); @@ -138,7 +138,7 @@ return new EventoResultado(true, "Evento creado", warnings); } - private EventoResultado ActualizarPonentes(Evento evento, IEnumerable ponentesId) + private EventoResultado ActualizarPonentes(Evento evento, IEnumerable ponentesId, Accion? action) { var ponentes = new List(); if (ponentesId != null) @@ -151,7 +151,7 @@ null); ponentes.Add(colaborador); } - evento.ActualizarOtrosPonentes(ponentes); + evento.ActualizarPonentes(ponentes, action); } return new EventoResultado(true, "Ponentes actualizados", null); } diff -r 04d6b386afa7 -r 51faeabfb9d9 Agendas/trunk/src/Agendas.Domain/Evento.cs --- a/Agendas/trunk/src/Agendas.Domain/Evento.cs Tue Oct 04 20:42:46 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Evento.cs Tue Oct 04 21:30:55 2011 -0300 @@ -98,17 +98,28 @@ get { return _ponentes; } } - public virtual void ActualizarOtrosPonentes(IEnumerable otrosPonentes) + public virtual void ActualizarPonentes(IEnumerable ponentes, Accion? action) { - foreach (var otro in otrosPonentes) + bool modificados = false; + + foreach (var ponente in ponentes) { - if (!_ponentes.Contains(otro)) - _ponentes.Add(otro); + if (!_ponentes.Contains(ponente)) + { + _ponentes.Add(ponente); + modificados = true; + } } - var sobran = _ponentes.Where(c => !otrosPonentes.Contains(c)).ToList(); + var sobran = _ponentes.Where(c => !ponentes.Contains(c)).ToList(); foreach (var sobra in sobran) + { _ponentes.Remove(sobra); + modificados = true; + } + + if (modificados && action.HasValue) + AddTrack(new Track(this, action.Value)); } //protected internal virtual void AddPatrocinador(Patrocinador patrocinador) diff -r 04d6b386afa7 -r 51faeabfb9d9 Agendas/trunk/src/Agendas.Repositories.NHibernate/EventoRepository.cs --- a/Agendas/trunk/src/Agendas.Repositories.NHibernate/EventoRepository.cs Tue Oct 04 20:42:46 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Repositories.NHibernate/EventoRepository.cs Tue Oct 04 21:30:55 2011 -0300 @@ -4,6 +4,7 @@ using AltNetHispano.Agendas.Domain; using AltNetHispano.Agendas.Domain.Repositories; using NHibernate; +using NHibernate.Linq; namespace AltNetHispano.Agendas.Repositories.NHibernate { @@ -50,7 +51,7 @@ public bool ExistePonente(Persona ponente) { - return Session.QueryOver().Where(ev => ev.Ponentes.Contains(ponente)).RowCount() > 0; + return Session.Query().Where(ev => ev.Ponentes.Contains(ponente)).Any(); } public IList GetByState(EventoState state) diff -r 04d6b386afa7 -r 51faeabfb9d9 Agendas/trunk/src/Agendas.Repositories.Tests/EventoCrud.cs --- a/Agendas/trunk/src/Agendas.Repositories.Tests/EventoCrud.cs Tue Oct 04 20:42:46 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Repositories.Tests/EventoCrud.cs Tue Oct 04 21:30:55 2011 -0300 @@ -56,7 +56,7 @@ _personaRepository.Save(usuario); var evento = Evento.Proponer("TDD - Diseño Basado en Ejemplos", string.Empty, TipoEvento.Van); - evento.ActualizarOtrosPonentes(colaboradores); + evento.ActualizarPonentes(colaboradores, null); evento.Tracks.First().LogAdd(new TrackLog(TrackLogPropietario.Twitter, "Mensaje", usuario, true)); @@ -114,7 +114,7 @@ ponentes.RemoveAll(p => p.Nombre == "Carlos Blé"); ponentes.Add(otroPonente); - van.ActualizarOtrosPonentes(ponentes); + van.ActualizarPonentes(ponentes, null); _eventoRepository.Update(van); } diff -r 04d6b386afa7 -r 51faeabfb9d9 Agendas/trunk/src/Agendas.Repositories.Tests/TestsHelper.cs --- a/Agendas/trunk/src/Agendas.Repositories.Tests/TestsHelper.cs Tue Oct 04 20:42:46 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Repositories.Tests/TestsHelper.cs Tue Oct 04 21:30:55 2011 -0300 @@ -22,7 +22,8 @@ persona = new Persona(nombre) { Twitter = nombre.Replace(" ", string.Empty).ToLower() }; _repository.Save(persona); - NhHelper.GetSessionFactory().GetCurrentSession().Flush(); + if (_repository is AltNetHispano.Agendas.Repositories.NHibernate.PersonaRepository) + NhHelper.GetSessionFactory().GetCurrentSession().Flush(); } return persona.Id; } diff -r 04d6b386afa7 -r 51faeabfb9d9 Agendas/trunk/src/Agendas.Twitter.Tests/Publicador_tests.cs --- a/Agendas/trunk/src/Agendas.Twitter.Tests/Publicador_tests.cs Tue Oct 04 20:42:46 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Twitter.Tests/Publicador_tests.cs Tue Oct 04 21:30:55 2011 -0300 @@ -81,7 +81,7 @@ foreach (var ponente in ponentes) DefaultPersonaRepository.Save(ponente); - var inicio = DateTime.Now.AddDays(3); + var inicio = new DateTime(2011, 10, 1); agenda.Agendar("Identity Providers Públicos y Empresariales", ponentes.Select(p=>p.Id), inicio, inicio.AddHours(2), null, TipoEvento.Van); @@ -117,7 +117,7 @@ var publicador = new TwitterPublicador(adapter.Object); var agenda = new Agenda(publicador, DefaultEventoRepository, DefaultPersonaRepository); - var inicio = DateTime.Now.AddDays(3); + var inicio = new DateTime(2011, 10, 1); agenda.Agendar("Identity Providers Públicos y Empresariales",new[]{ Guid.Empty}, inicio, inicio.AddHours(2), null, TipoEvento.Cafe); diff -r 04d6b386afa7 -r 51faeabfb9d9 Agendas/trunk/src/Agendas.Web.Tests/Agendas.Web.Tests.csproj --- a/Agendas/trunk/src/Agendas.Web.Tests/Agendas.Web.Tests.csproj Tue Oct 04 20:42:46 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web.Tests/Agendas.Web.Tests.csproj Tue Oct 04 21:30:55 2011 -0300 @@ -31,6 +31,8 @@ 4 + + ..\packages\NHibernate.Castle.3.1.0.4000\lib\Net35\NHibernate.ByteCode.Castle.dll @@ -56,15 +58,24 @@ {A14907DF-02E4-4FA7-BE27-4292AF50AA22} Agendas.Domain + + {9519A43A-9D5E-4BFD-9F88-AFFC53C9973A} + Agendas.NHibernate + + + {0973DF44-3B90-4D2A-B579-C64C93B6C853} + Agendas.Repositories.NHibernate + + + {BFCD197C-01D5-4645-B0DF-053867E16FDE} + Agendas.Repositories.Tests + {319A8E3D-C61E-455F-A1BF-A6B1B1636BAB} Agendas.Web - - Designer - Designer diff -r 04d6b386afa7 -r 51faeabfb9d9 Agendas/trunk/src/Agendas.Web.Tests/Controllers/EventoControllerTests.cs --- a/Agendas/trunk/src/Agendas.Web.Tests/Controllers/EventoControllerTests.cs Tue Oct 04 20:42:46 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web.Tests/Controllers/EventoControllerTests.cs Tue Oct 04 21:30:55 2011 -0300 @@ -2,43 +2,58 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Agendas.NHibernate; +using Agendas.Repositories.Tests.Infraestructure; using AltNetHispano.Agendas.Domain; +using AltNetHispano.Agendas.Repositories.NHibernate; using AltNetHispano.Agendas.Web.Controllers; using AltNetHispano.Agendas.Web.Models; +using Moq; using NUnit.Framework; namespace Agendas.Web.Tests.Controllers { - [TestFixture] - public class EventoControllerTests - { - [Test] - [Ignore] - public void Publicar_Evento() - { - var eventoController = new EventoController(); + [TestFixture] + public class EventoControllerTests + { + [SetUp] + public void SetearUsuario() + { + var seguridad = new Mock(); + seguridad.Setup(s => s.GetUserName()).Returns("neluz"); + IdentityContext.Init(seguridad.Object, new PersonaRepository(NhHelper.GetSessionFactory())); + } + + [Test] + [Ignore] + public void Publicar_Evento() + { + var eventoController = new EventoController(); - var eventoNew = new EventoNewModel - { - Duracion = new TimeSpan(0, 0, 0), - Fecha = DateTime.Today.AddDays(5), - Hora = new TimeSpan(18, 0, 0), - Ponente = new Guid(), - TipoEvento = (int)TipoEvento.Van, - Titulo = "Título 1" - }; - - var resultNuevo = eventoController.Nuevo(eventoNew); + var eventoNew = new EventoNewModel + { + Duracion = new TimeSpan(0, 0, 0), + Fecha = DateTime.Today.AddDays(5), + Hora = new TimeSpan(18, 0, 0), + Ponentes = new[] {Guid.NewGuid()}, + TipoEvento = (int) TipoEvento.Van, + Titulo = "Título 1" + }; - //var eventoPublicar = new EventoPublicarModel - // { - // NroOrden = 1, - // Titulo = "Título 1", - // UrlWiki = "http://www.altnethistpano.org/vans/titulo-1.ashx", - // DuracionReal = new TimeSpan() - // }; + using (new RequestEmulator(NhHelper.GetSessionFactory())) + { + var resultNuevo = eventoController.Nuevo(eventoNew); + } - //var resultPublicar = eventoController.Publicar(eventoPublicar); - } - } -} + //var eventoPublicar = new EventoPublicarModel + // { + // NroOrden = 1, + // Titulo = "Título 1", + // UrlWiki = "http://www.altnethistpano.org/vans/titulo-1.ashx", + // DuracionReal = new TimeSpan() + // }; + + //var resultPublicar = eventoController.Publicar(eventoPublicar); + } + } +} \ No newline at end of file diff -r 04d6b386afa7 -r 51faeabfb9d9 Agendas/trunk/src/Agendas.Web.Tests/hibernate.cfg.xml --- a/Agendas/trunk/src/Agendas.Web.Tests/hibernate.cfg.xml Tue Oct 04 20:42:46 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web.Tests/hibernate.cfg.xml Tue Oct 04 21:30:55 2011 -0300 @@ -5,7 +5,7 @@ AltNetHispano NHibernate.Dialect.MsSql2008Dialect - web + thread_static NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle \ No newline at end of file