changeset 80:c2d98fd6593f

Track como objeto identificable y con referencia al evento correspondiente. Puede que con estos cambios sea necesario borrar las tablas en la db y dejar que se vuelvan a generar, ya sea en los test o en la aplicación web
author nelopauselli
date Tue, 24 May 2011 18:25:57 -0300
parents 8df9db937434
children c76661cff260
files Agendas/trunk/src/Agendas.Domain/Evento.cs Agendas/trunk/src/Agendas.Domain/Track.cs Agendas/trunk/src/Agendas.NHibernate/NhHelper.cs Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs Agendas/trunk/src/Agendas.Tests/TrackTests.cs
diffstat 5 files changed, 34 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Evento.cs	Tue May 24 18:08:59 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Evento.cs	Tue May 24 18:25:57 2011 -0300
@@ -77,7 +77,7 @@
 		public static Evento Proponer(string titulo, Ponente ponente, string urlInvitacion)
 		{
 			var evento = new Evento {Titulo = titulo, Ponente = ponente, UrlInvitacion = urlInvitacion};
-			evento.AddTracks(new Track(Accion.Proponer));
+			evento.AddTracks(new Track(evento, Accion.Proponer));
 
 			return evento;
 		}
@@ -109,7 +109,7 @@
 			Ponente = ponente;
 			Fecha = fecha;
 			UrlInvitacion = urlInvitacion;
-			AddTracks(new Track(Accion.Agendar));
+			AddTracks(new Track(this, Accion.Agendar));
 		}
 
 		public virtual void Actualizar(Ponente ponente, DateTime? fecha, string urlInvitacion)
@@ -118,13 +118,13 @@
 			Fecha = fecha;
 			UrlInvitacion = urlInvitacion;
 
-			AddTracks(new Track(Accion.Modificar));
+			AddTracks(new Track(this, Accion.Modificar));
 		}
 
 		public virtual void CambiarTitulo(string titulo)
 		{
 			Titulo = titulo;
-			AddTracks(new Track(Accion.CambiarTitulo));
+			AddTracks(new Track(this, Accion.CambiarTitulo));
 		}
 
 		#endregion
--- a/Agendas/trunk/src/Agendas.Domain/Track.cs	Tue May 24 18:08:59 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Track.cs	Tue May 24 18:25:57 2011 -0300
@@ -1,18 +1,20 @@
 namespace AltNetHispano.Agendas.Domain
 {
-	public class Track
+	public class Track : Identificable
 	{
 		protected Track()
 		{
 			//ctor para NHibernate
 		}
 
-		public Track(Accion accion)
+		public Track(Evento evento, Accion accion)
 		{
 			Usuario = IdentityContext.GetUserName();
+			Evento = evento;
 			Accion = accion;
 		}
 
+		public virtual Evento Evento { get; private set; }
 		public virtual Accion Accion { get; private set; }
 		public virtual string Usuario { get; private set; }
 	}
--- a/Agendas/trunk/src/Agendas.NHibernate/NhHelper.cs	Tue May 24 18:08:59 2011 -0300
+++ b/Agendas/trunk/src/Agendas.NHibernate/NhHelper.cs	Tue May 24 18:25:57 2011 -0300
@@ -19,6 +19,7 @@
 			{
 				var orm = new ObjectRelationalMapper();
 				orm.TablePerClass<Evento>();
+				orm.TablePerClass<Track>();
 				orm.TablePerClass<Ponente>();
 
 				orm.Cascade<Evento, Ponente>(Cascade.None);
@@ -47,10 +48,20 @@
 				{
 					schemaValidator.Validate();
 				}
-				catch(Exception ex)
+				catch
 				{
-					var schemaExport = new SchemaExport(cfg);
-					schemaExport.Create(false, true);
+					try
+					{
+						var schemaUpdate = new SchemaUpdate(cfg);
+						schemaUpdate.Execute(false, true);
+
+						schemaValidator.Validate();
+					}
+					catch
+					{
+						var schemaExport = new SchemaExport(cfg);
+						schemaExport.Create(false, true);
+					}
 				}
 
 #endif
--- a/Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs	Tue May 24 18:08:59 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs	Tue May 24 18:25:57 2011 -0300
@@ -48,7 +48,9 @@
 				Assert.AreEqual(1, van.Ponente.Eventos.Count());
 				Assert.AreEqual(van, van.Ponente.Eventos.First());
 
-				Assert.AreEqual(1, van.Tracks.Where(t => t.Accion == Accion.Proponer).Count());
+				var track1 = van.Tracks.Where(t => t.Accion == Accion.Proponer).FirstOrDefault();
+				Assert.IsNotNull(track1);
+				Assert.AreEqual(van, track1.Evento);
 				
 				Assert.AreEqual("TDD - Diseño Basado en Ejemplos", van.Titulo);
 			}
--- a/Agendas/trunk/src/Agendas.Tests/TrackTests.cs	Tue May 24 18:08:59 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/TrackTests.cs	Tue May 24 18:25:57 2011 -0300
@@ -22,15 +22,21 @@
 			var evento = repository.GetEventosConFecha().First();
 
 			Assert.AreEqual(1, evento.Tracks.Count());
-			Assert.AreEqual(Accion.Agendar, evento.Tracks.Last().Accion);
+			var ultimo = evento.Tracks.Last();
+			Assert.AreEqual(evento, ultimo.Evento);
+			Assert.AreEqual(Accion.Agendar, ultimo.Accion);
 
 			agenda.ModificarEvento(evento.Id, "Html 5", "otro ponente", fecha, urlInvitacion);
 			Assert.AreEqual(2, evento.Tracks.Count());
-			Assert.AreEqual(Accion.Modificar, evento.Tracks.Last().Accion);
+			ultimo = evento.Tracks.Last();
+			Assert.AreEqual(evento, ultimo.Evento);
+			Assert.AreEqual(Accion.Modificar, ultimo.Accion);
 
 			agenda.ModificarEvento(evento.Id, "Html 5 y Css 3", "otro ponente", fecha, urlInvitacion);
 			Assert.AreEqual(3, evento.Tracks.Count());
-			Assert.AreEqual(Accion.CambiarTitulo, evento.Tracks.Last().Accion);
+			ultimo = evento.Tracks.Last();
+			Assert.AreEqual(evento, ultimo.Evento);
+			Assert.AreEqual(Accion.CambiarTitulo, ultimo.Accion);
 		}
 
 		[Test]