# HG changeset patch # User nelopauselli # Date 1306272357 10800 # Node ID c2d98fd6593f94b182f12496391af9bf88e38c55 # Parent 8df9db937434e81d681bb17f5620e040afe1d433 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 diff -r 8df9db937434 -r c2d98fd6593f Agendas/trunk/src/Agendas.Domain/Evento.cs --- 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 diff -r 8df9db937434 -r c2d98fd6593f Agendas/trunk/src/Agendas.Domain/Track.cs --- 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; } } diff -r 8df9db937434 -r c2d98fd6593f Agendas/trunk/src/Agendas.NHibernate/NhHelper.cs --- 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(); + orm.TablePerClass(); orm.TablePerClass(); orm.Cascade(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 diff -r 8df9db937434 -r c2d98fd6593f Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs --- 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); } diff -r 8df9db937434 -r c2d98fd6593f Agendas/trunk/src/Agendas.Tests/TrackTests.cs --- 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]