Mercurial > altnet-hispano
changeset 237:51faeabfb9d9
Todos los tests en verde quitando al ponente principal
author | nelopauselli |
---|---|
date | Tue, 04 Oct 2011 21:30:55 -0300 |
parents | 04d6b386afa7 |
children | b43dc14886e3 |
files | Agendas/trunk/src/Agendas.Domain/Agenda.cs Agendas/trunk/src/Agendas.Domain/Evento.cs Agendas/trunk/src/Agendas.Repositories.NHibernate/EventoRepository.cs Agendas/trunk/src/Agendas.Repositories.Tests/EventoCrud.cs Agendas/trunk/src/Agendas.Repositories.Tests/TestsHelper.cs Agendas/trunk/src/Agendas.Twitter.Tests/Publicador_tests.cs Agendas/trunk/src/Agendas.Web.Tests/Agendas.Web.Tests.csproj Agendas/trunk/src/Agendas.Web.Tests/Controllers/EventoControllerTests.cs Agendas/trunk/src/Agendas.Web.Tests/hibernate.cfg.xml |
diffstat | 9 files changed, 91 insertions(+), 52 deletions(-) [+] |
line wrap: on
line diff
--- 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<Guid> ponentesId) + private EventoResultado ActualizarPonentes(Evento evento, IEnumerable<Guid> ponentesId, Accion? action) { var ponentes = new List<Persona>(); 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); }
--- 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<Persona> otrosPonentes) + public virtual void ActualizarPonentes(IEnumerable<Persona> 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)
--- 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<Evento>().Where(ev => ev.Ponentes.Contains(ponente)).RowCount() > 0; + return Session.Query<Evento>().Where(ev => ev.Ponentes.Contains(ponente)).Any(); } public IList<Evento> GetByState(EventoState state)
--- 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); }
--- 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; }
--- 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);
--- 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 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> + <Reference Include="Moq, Version=4.0.10827.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL" /> + <Reference Include="NHibernate, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL" /> <Reference Include="NHibernate.ByteCode.Castle"> <HintPath>..\packages\NHibernate.Castle.3.1.0.4000\lib\Net35\NHibernate.ByteCode.Castle.dll</HintPath> </Reference> @@ -56,15 +58,24 @@ <Project>{A14907DF-02E4-4FA7-BE27-4292AF50AA22}</Project> <Name>Agendas.Domain</Name> </ProjectReference> + <ProjectReference Include="..\Agendas.NHibernate\Agendas.NHibernate.csproj"> + <Project>{9519A43A-9D5E-4BFD-9F88-AFFC53C9973A}</Project> + <Name>Agendas.NHibernate</Name> + </ProjectReference> + <ProjectReference Include="..\Agendas.Repositories.NHibernate\Agendas.Repositories.NHibernate.csproj"> + <Project>{0973DF44-3B90-4D2A-B579-C64C93B6C853}</Project> + <Name>Agendas.Repositories.NHibernate</Name> + </ProjectReference> + <ProjectReference Include="..\Agendas.Repositories.Tests\Agendas.Repositories.Tests.csproj"> + <Project>{BFCD197C-01D5-4645-B0DF-053867E16FDE}</Project> + <Name>Agendas.Repositories.Tests</Name> + </ProjectReference> <ProjectReference Include="..\Agendas.Web\Agendas.Web.csproj"> <Project>{319A8E3D-C61E-455F-A1BF-A6B1B1636BAB}</Project> <Name>Agendas.Web</Name> </ProjectReference> </ItemGroup> <ItemGroup> - <None Include="App_.config"> - <SubType>Designer</SubType> - </None> <Content Include="App.config"> <SubType>Designer</SubType> </Content>
--- 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<ISeguridad>(); + 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
--- 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 @@ <property name="connection.connection_string_name">AltNetHispano</property> <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property> - <property name="current_session_context_class">web</property> + <property name="current_session_context_class">thread_static</property> <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property> </session-factory> </hibernate-configuration> \ No newline at end of file