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