changeset 74:bc46e7426c80

Refactoring de acciones según la definición del diagrama de estados en assembla (https://www.assembla.com/spaces/altnet-hispano/wiki/Estados_de_un_evento)
author nelopauselli
date Mon, 23 May 2011 20:13:37 -0300
parents 76567a0d1e44
children 96d7609f2e08
files Agendas/trunk/src/Agendas.Blog/Impl/PostWriter.cs Agendas/trunk/src/Agendas.Blog/Impl/PostWriterFactory.cs Agendas/trunk/src/Agendas.Domain/Agenda.cs Agendas/trunk/src/Agendas.Domain/Evento.cs Agendas/trunk/src/Agendas.Domain/Track.cs Agendas/trunk/src/Agendas.Tests/PonentesTests.cs Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Agendas/trunk/src/Agendas.Tests/PulicarTests.cs Agendas/trunk/src/Agendas.Tests/TrackTests.cs Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs
diffstat 10 files changed, 96 insertions(+), 57 deletions(-) [+]
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Blog/Impl/PostWriter.cs	Mon May 23 19:54:05 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Blog/Impl/PostWriter.cs	Mon May 23 20:13:37 2011 -0300
@@ -19,7 +19,7 @@
 
     protected string GetNombreUsuario(Evento evento)
     {
-      return evento.Tracks.Single(t => t.Accion == Accion.Realizar).Usuario;
+      return evento.Tracks.Single(t => t.Accion == Accion.Publicar).Usuario;
     }
 
     protected void ExecuteService(string title, string body)
--- a/Agendas/trunk/src/Agendas.Blog/Impl/PostWriterFactory.cs	Mon May 23 19:54:05 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Blog/Impl/PostWriterFactory.cs	Mon May 23 20:13:37 2011 -0300
@@ -8,9 +8,9 @@
     {
       switch (accion)
       {
-        case Accion.Realizar:
+        case Accion.Publicar:
           return new RealizarReunionPostWriter();
-        case Accion.Publicar:
+        case Accion.Agendar:
           return new PublicarReunionPostWriter();
         default:
           return new NullObjectPostWriter();
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Mon May 23 19:54:05 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Mon May 23 20:13:37 2011 -0300
@@ -77,7 +77,7 @@
 			return new Resultado(true);
 		}
 
-    public Resultado Publicar(string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion)
+		public Resultado Agendar(string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion)
 		{
 			if (!fecha.HasValue)
 				return new Resultado(false);
@@ -88,9 +88,9 @@
 
 			Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo);
 			if (evento == null)
-				evento = Evento.Publicar(titulo, ponente, fecha.Value, urlInvitacion);
+				evento = Evento.Agendar(titulo, ponente, fecha.Value, urlInvitacion);
 			else
-				evento.Publicar(ponente, fecha, urlInvitacion);
+				evento.Agendar(ponente, fecha, urlInvitacion);
 
 			if (_publicador != null)
 				_publicador.Publicar(evento);
--- a/Agendas/trunk/src/Agendas.Domain/Evento.cs	Mon May 23 19:54:05 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Evento.cs	Mon May 23 20:13:37 2011 -0300
@@ -5,32 +5,24 @@
 {
 	public class Evento : Identificable
 	{
-		private readonly IList<Track> _tracks;
-		private IList<string> _enlaces;
-
-		public static Evento Proponer(string titulo, Ponente ponente)
-		{
-			var evento = new Evento { Titulo = titulo, Ponente = ponente };
-			evento.AddTracks(new Track(Accion.Proponer));
-			
-			return evento;
-		}
-
-		public static Evento Publicar(string titulo, Ponente ponente, DateTime fecha, string urlInvitacion)
-		{
-			var evento = new Evento { Titulo = titulo };
-			evento.Publicar(ponente, fecha, urlInvitacion);
-
-			return evento;
-		}
-
 		protected Evento()
 		{
-			_enlaces = new List<string>();
 			_tracks = new List<Track>();
 		}
 
+		#region Propiedades del Evento
+
+		private readonly IList<Track> _tracks;
+		private Ponente _ponente;
+
+		/// <summary>
+		/// Título del evento
+		/// </summary>
 		public virtual string Titulo { get; private set; }
+
+		/// <summary>
+		/// Fecha para la que se encuentra agendado el evento
+		/// </summary>
 		public virtual DateTime? Fecha { get; private set; }
 
 		/// <summary>
@@ -48,7 +40,9 @@
 		/// </summary>
 		public virtual short NumeroOrden { get; private set; }
 
-		private Ponente _ponente;
+		/// <summary>
+		/// Ponente o responsable del evento
+		/// </summary>
 		public virtual Ponente Ponente
 		{
 			get { return _ponente; }
@@ -62,11 +56,62 @@
 			}
 		}
 
+		/// <summary>
+		/// Track de cambios que ha sufrido el evento
+		/// </summary>
 		public virtual IEnumerable<Track> Tracks
 		{
 			get { return _tracks; }
 		}
 
+		#endregion
+
+		#region Acciones sobre el evento
+
+		/// <summary>
+		/// Propone un evento
+		/// </summary>
+		/// <param name="titulo">Título del evento propuesto</param>
+		/// <param name="ponente">Ponente para evento propuesto</param>
+		/// <returns></returns>
+		public static Evento Proponer(string titulo, Ponente ponente)
+		{
+			var evento = new Evento { Titulo = titulo, Ponente = ponente };
+			evento.AddTracks(new Track(Accion.Proponer));
+
+			return evento;
+		}
+
+		/// <summary>
+		/// Agenda un evento que no estaba propuesto
+		/// </summary>
+		/// <param name="titulo">Título del evento a agendar</param>
+		/// <param name="ponente">Ponente para el evento</param>
+		/// <param name="fecha">Fecha de realización del evento</param>
+		/// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param>
+		/// <returns></returns>
+		public static Evento Agendar(string titulo, Ponente ponente, DateTime fecha, string urlInvitacion)
+		{
+			var evento = new Evento { Titulo = titulo };
+			evento.Agendar(ponente, fecha, urlInvitacion);
+
+			return evento;
+		}
+
+		/// <summary>
+		/// Agenda el evento actual
+		/// </summary>
+		/// <param name="ponente">Ponente para el evento</param>
+		/// <param name="fecha">Fecha de realización del evento</param>
+		/// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param>
+		public virtual void Agendar(Ponente ponente, DateTime? fecha, string urlInvitacion)
+		{
+			Ponente = ponente;
+			Fecha = fecha;
+			UrlInvitacion = urlInvitacion;
+			AddTracks(new Track(Accion.Agendar));
+		}
+
 		public virtual void Actualizar(Ponente ponente, DateTime? fecha)
 		{
 			Ponente = ponente;
@@ -81,13 +126,7 @@
 			AddTracks(new Track(Accion.CambiarTitulo));
 		}
 
-		public virtual void Publicar(Ponente ponente, DateTime? fecha, string urlInvitacion)
-		{
-			Ponente = ponente;
-			Fecha = fecha;
-			UrlInvitacion = urlInvitacion;
-			AddTracks(new Track(Accion.Publicar));
-		}
+		#endregion
 
 		private void AddTracks(Track track)
 		{
--- a/Agendas/trunk/src/Agendas.Domain/Track.cs	Mon May 23 19:54:05 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Track.cs	Mon May 23 20:13:37 2011 -0300
@@ -20,10 +20,10 @@
 	public enum Accion
 	{
 		Proponer = 1,
-		Publicar = 2,
+		Agendar = 2,
 		Modificar = 3,
 		CambiarTitulo = 4,
-		Realizar = 5	
+		Publicar = 5
 	}
 
 }
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs	Mon May 23 19:54:05 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs	Mon May 23 20:13:37 2011 -0300
@@ -19,9 +19,9 @@
 
 			var agenda = new Agenda(publicador.Object, null, DefaultEventoRepository, DefaultPonenteRepository);
 
-			agenda.Publicar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), 
+			agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), 
 				urlInvitacion);
-			agenda.Publicar("Conform - Parte 2", "Fabio Maulo", new DateTime(2011, 3, 5),
+			agenda.Agendar("Conform - Parte 2", "Fabio Maulo", new DateTime(2011, 3, 5),
 				urlInvitacion);
 
 			var eventos = agenda.GetEventosPublicados();
@@ -51,7 +51,7 @@
 
 			agenda.RegistrarPonente("Fabio Maulo", "fabiomaulo@gmail.com", "@fabiomaulo", "http://fabiomaulo.blogspot.com");
 
-			agenda.Publicar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), urlInvitacion);
+			agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), urlInvitacion);
 
 			Assert.AreEqual(1, agenda.GetEventosPublicados().Count);
 
@@ -73,7 +73,7 @@
 
 			var agenda = new Agenda(publicador.Object, null, DefaultEventoRepository, DefaultPonenteRepository);
 
-			agenda.Publicar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26),
+			agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26),
 				urlInvitacion);
 
 			Assert.AreEqual(1, agenda.GetEventosPublicados().Count);
--- a/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs	Mon May 23 19:54:05 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs	Mon May 23 20:13:37 2011 -0300
@@ -38,7 +38,7 @@
 				Assert.AreEqual("otro ponente", evento.Ponente.Nombre);
 			}
 
-			var r = agenda.Publicar("Van 2", "jjmontes", DateTime.Now, urlInvitacion);
+			var r = agenda.Agendar("Van 2", "jjmontes", DateTime.Now, urlInvitacion);
 			Assert.IsTrue(r.Succeful);
 			{
 				IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos();
@@ -61,7 +61,7 @@
 			{
 				var van = agenda.GetEventosPropuestos().FirstOrDefault();
 				Assert.IsNotNull(van);
-				var r = agenda.Publicar(van.Titulo, "Ponente", null,
+				var r = agenda.Agendar(van.Titulo, "Ponente", null,
 					urlInvitacion);
 				Assert.IsFalse(r.Succeful);
 			}
@@ -81,7 +81,7 @@
 				Assert.IsNotNull(van);
 
 				van.Actualizar(null, DateTime.Today.AddDays(5));
-				var r = agenda.Publicar(van.Titulo, string.Empty, van.Fecha,
+				var r = agenda.Agendar(van.Titulo, string.Empty, van.Fecha,
 					urlInvitacion);
 				Assert.IsFalse(r.Succeful);
 			}
@@ -138,7 +138,7 @@
 			var agenda = new Agenda(null, null, DefaultEventoRepository, DefaultPonenteRepository);
 
 			agenda.Proponer("Van propuesta", null);
-			var r = agenda.Publicar("Van publicada", "jjmontes", DateTime.Now,
+			var r = agenda.Agendar("Van publicada", "jjmontes", DateTime.Now,
 				urlInvitacion);
 			Assert.IsTrue(r.Succeful);
 
--- a/Agendas/trunk/src/Agendas.Tests/PulicarTests.cs	Mon May 23 19:54:05 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/PulicarTests.cs	Mon May 23 20:13:37 2011 -0300
@@ -29,7 +29,7 @@
 
 			var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository);
 
-			Assert.Throws<Exception>(() => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion));
+			Assert.Throws<Exception>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion));
 			Assert.AreEqual(0, agenda.GetEventosPublicados().Count);
 
 			publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
@@ -47,7 +47,7 @@
 			var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository);
 
 			Assert.Throws<IdentityContextNotConfiguredException>(
-				() => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now,
+				() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
 					urlInvitacion));
 			repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
 		}
@@ -62,7 +62,7 @@
 
 			var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository);
 
-			Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now,
+			Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
 				urlInvitacion));
 
 			publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(0));
@@ -74,7 +74,7 @@
 		{
 			var agenda = new Agenda(null, null, DefaultEventoRepository, DefaultPonenteRepository);
 
-			var r = agenda.Publicar("Van para publicar", string.Empty, DateTime.Now,
+			var r = agenda.Agendar("Van para publicar", string.Empty, DateTime.Now,
 				urlInvitacion);
 
 			Assert.IsFalse(r.Succeful);
@@ -91,7 +91,7 @@
 			var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), null,
 															repository.Object, DefaultPonenteRepository);
 
-			agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now,
+			agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
 				urlInvitacion);
 
 			publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
@@ -106,7 +106,7 @@
 
 			var agenda = new Agenda(publicador.Object, null, DefaultEventoRepository, DefaultPonenteRepository);
 
-			agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now,
+			agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
 				urlInvitacion);
 			var eventos = agenda.GetEventosPublicados();
 			Assert.AreEqual(1, eventos.Count);
@@ -130,7 +130,7 @@
 
 			var agenda = new Agenda(publicador.Object, null, repository, DefaultPonenteRepository);
 
-			agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now,
+			agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
 				urlInvitacion);
 
 			publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
@@ -164,7 +164,7 @@
 			var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), recordador1.Object,
 															DefaultEventoRepository, DefaultPonenteRepository);
 
-			agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now,
+			agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
 				urlInvitacion);
 
 			var van = agenda.GetEventosPublicados().Single(v => v.Titulo == "Van para publicar");
--- a/Agendas/trunk/src/Agendas.Tests/TrackTests.cs	Mon May 23 19:54:05 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/TrackTests.cs	Mon May 23 20:13:37 2011 -0300
@@ -18,11 +18,11 @@
 			var agenda = new Agenda(null, null, repository, DefaultPonenteRepository);
 
 			var fecha = DateTime.Now.AddDays(5);
-			agenda.Publicar("Html 5", "jjmontes", fecha, urlInvitacion);
+			agenda.Agendar("Html 5", "jjmontes", fecha, urlInvitacion);
 			var evento = repository.GetEventosConFecha().First();
 
 			Assert.AreEqual(1, evento.Tracks.Count());
-			Assert.AreEqual(Accion.Publicar, evento.Tracks.Last().Accion);
+			Assert.AreEqual(Accion.Agendar, evento.Tracks.Last().Accion);
 
 			agenda.ModificarEvento(evento.Id, "Html 5", "otro ponente", fecha);
 			Assert.AreEqual(2, evento.Tracks.Count());
@@ -40,12 +40,12 @@
 
 			var agenda = new Agenda(null, null, repository, DefaultPonenteRepository);
 
-			agenda.Publicar("Html 5", "jjmontes", DateTime.Now,
+			agenda.Agendar("Html 5", "jjmontes", DateTime.Now,
 				urlInvitacion);
 			var evento = repository.GetEventosConFecha().First();
 
 			Assert.AreEqual(1, evento.Tracks.Count());
-			Assert.AreEqual(Accion.Publicar, evento.Tracks.Last().Accion);
+			Assert.AreEqual(Accion.Agendar, evento.Tracks.Last().Accion);
 
 			//TODO: confirmar evento y evaluar .tracks
 		}
--- a/Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs	Mon May 23 19:54:05 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs	Mon May 23 20:13:37 2011 -0300
@@ -35,7 +35,7 @@
             {
                 var agenda = AgendaFactory.GetAgenda();
 
-                var r = agenda.Publicar(model.Titulo, model.Ponente, model.Fecha, 
+                var r = agenda.Agendar(model.Titulo, model.Ponente, model.Fecha, 
                   model.UrlInvitacion);
 				if (r.Succeful)
 					return RedirectToAction("Index");