changeset 38:3c5657d99727

Cambio de setters de las propiedades a private
author nelo@MTEySS.neluz.int
date Thu, 17 Mar 2011 23:16:35 -0300
parents 90f0cab1febc
children e548379cc314
files Agendas/trunk/src/Agendas.Domain/Agenda.cs Agendas/trunk/src/Agendas.Domain/Evento.cs Agendas/trunk/src/Agendas.Domain/Ponente.cs Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs Agendas/trunk/src/Agendas.Repositories.Memory/PonenteRepository.cs Agendas/trunk/src/Agendas.Tests/EventoTests.cs Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs
diffstat 7 files changed, 85 insertions(+), 45 deletions(-) [+]
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Thu Mar 17 17:04:03 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Thu Mar 17 23:16:35 2011 -0300
@@ -26,9 +26,8 @@
         {
         	var ponente = GetPonente(ponenteNombre);
 
-        	var evento = _eventosRepository.GetPropuestaByTitulo(titulo) ?? new Evento {Titulo = titulo};
-        	evento.Ponente = ponente;
-        	evento.Fecha = fecha;
+        	var evento = _eventosRepository.GetPropuestaByTitulo(titulo) ?? new Evento (titulo);
+            evento.Actualizar(ponente, fecha);
 
         	if (!evento.Fecha.HasValue)
         		throw new ValidationException();
@@ -53,7 +52,8 @@
 		public void Proponer(string titulo, string ponenteNombre)
 		{
 			var ponente = GetPonente(ponenteNombre);
-			var evento = new Evento {Titulo = titulo, Ponente = ponente};
+			var evento = new Evento (titulo);
+		    evento.Actualizar(ponente);
 
 			if (string.IsNullOrWhiteSpace(evento.Titulo))
 				throw new ValidationException();
@@ -87,9 +87,10 @@
 
 			var ponente = GetPonente(ponenteNombre);
 
-			evento.Titulo = titulo;
-			evento.Ponente = ponente;
-			evento.Fecha = fecha;
+            if (evento.Titulo != titulo)
+			    evento.CambiarTitulo(titulo);
+
+		    evento.Actualizar(ponente, fecha);
 
 			if (_publicador != null)
 				_publicador.Publicar(evento);
@@ -102,13 +103,13 @@
 
 		public void RegistrarPonente(string nombre, string mail, string twitter, string blog)
 		{
-			var ponente = new Ponente {Nombre = nombre, Mail = mail, Twitter = twitter, Blog = blog};
+		    var ponente = new Ponente(nombre, mail, twitter, blog);
 			_ponenteRepository.Save(ponente);
 		}
 
 		private Ponente GetPonente(string nombre)
 		{
-			return _ponenteRepository.GetByNombre(nombre) ?? new Ponente { Nombre = nombre };
+		    return _ponenteRepository.GetByNombre(nombre) ?? new Ponente(nombre);
 		}
 
 		public void ModificarPropuesta(Guid id, string titulo, string ponenteNombre)
--- a/Agendas/trunk/src/Agendas.Domain/Evento.cs	Thu Mar 17 17:04:03 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Evento.cs	Thu Mar 17 23:16:35 2011 -0300
@@ -5,11 +5,46 @@
 {
 	public class Evento
 	{
-		public Guid Id { get; set; }
-		public string Titulo { get; set; }
-		public DateTime? Fecha { get; set; }
-		public string Sintesis { get; set; }
-        public Ponente Ponente { get; set; }
-        public IList<string> Enlaces { get; set; }
-    }
+	    public Evento(string titulo)
+	    {
+	        Id = Guid.NewGuid();
+	        Titulo = titulo;
+	        _enlaces = new List<string>();
+	    }
+
+	    public Guid Id { get; private set; }
+		public string Titulo { get; private set; }
+		public DateTime? Fecha { get; private set; }
+		public string Sintesis { get; private set; }
+        public Ponente Ponente { get; private set; }
+
+	    private IList<string> _enlaces;
+	    public IEnumerable<string> Enlaces
+	    {
+	        get { return _enlaces; }
+	    }
+
+	    public void Actualizar(Ponente ponente, DateTime? fecha)
+	    {
+	        Ponente = ponente;
+	        Fecha = fecha;
+	    }
+
+	    public void Actualizar(Ponente ponente)
+	    {
+	        Ponente = ponente;
+	    }
+
+	    public void CambiarTitulo(string titulo)
+	    {
+	        Titulo = titulo;
+	    }
+
+	    public void Realizado(DateTime fecha, string sintesis, IList<string> enlaces)
+	    {
+	        Fecha = fecha;
+	        Sintesis = sintesis;
+	        _enlaces = enlaces;
+	    }
+	}
 }
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Domain/Ponente.cs	Thu Mar 17 17:04:03 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Ponente.cs	Thu Mar 17 23:16:35 2011 -0300
@@ -3,15 +3,29 @@
 namespace AltNetHispano.Agendas.Domain
 {
 	public class Ponente {
-		public Guid Id { get; set; }
-
-		public string Nombre { get; set; }
+	    public Ponente(string nombre, string mail, string twitter, string blog)
+            : this(nombre)
+	    {
+	        Mail = mail;
+	        Twitter = twitter;
+	        Blog = blog;
+	    }
 
-		public string Mail { get; set; }
+	    public Ponente(string nombre)
+	    {
+            Id = Guid.NewGuid();
+            Nombre = nombre;
+	    }
+
+	    public Guid Id { get; private set; }
 
-		public string Twitter { get; set; }
+		public string Nombre { get; private set; }
+
+		public string Mail { get; private set; }
 
-		public string Blog { get; set; }
+		public string Twitter { get; private set; }
+
+		public string Blog { get; private set; }
 
 	}
 }
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs	Thu Mar 17 17:04:03 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs	Thu Mar 17 23:16:35 2011 -0300
@@ -10,11 +10,8 @@
 	{
 		public void Save(Evento evento)
 		{
-			if (Guid.Empty.Equals(evento.Id))
-			{
-				evento.Id = Guid.NewGuid();
+			if (!Objects.Keys.Contains(evento.Id))
 				Objects.Add(evento.Id, evento);
-			}
 		}
 
 		public void Update(Evento evento)
--- a/Agendas/trunk/src/Agendas.Repositories.Memory/PonenteRepository.cs	Thu Mar 17 17:04:03 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Repositories.Memory/PonenteRepository.cs	Thu Mar 17 23:16:35 2011 -0300
@@ -10,11 +10,8 @@
 	{
 		public void Save(Ponente ponente)
 		{
-			if (Guid.Empty.Equals(ponente.Id))
-			{
-				ponente.Id = Guid.NewGuid();
+			if (!Objects.Keys.Contains(ponente.Id))
 				Objects.Add(ponente.Id, ponente);
-			}
 		}
 
 		public void Update(Ponente ponente)
--- a/Agendas/trunk/src/Agendas.Tests/EventoTests.cs	Thu Mar 17 17:04:03 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/EventoTests.cs	Thu Mar 17 23:16:35 2011 -0300
@@ -1,4 +1,5 @@
 using System;
+using System.Linq;
 using AltNetHispano.Agendas.Domain;
 using AltNetHispano.Agendas.Domain.Repositories;
 using AltNetHispano.Agendas.Repositories.Memory;
@@ -13,14 +14,11 @@
 		public void Van_crud()
 		{
 			Guid vanId;
-			{
-				var van = new Evento
-				          	{
-				          		Titulo = "TDD - Diseño Basado en Ejemplos",
-				          		Ponente = new Ponente {Nombre = "Carlos Blé"},
-				          		Fecha = new DateTime(2010, 04, 16)
-				          	};
-				IEventoRepository eventoRepository = new EventoRepository();
+		    {
+		        var van = new Evento("TDD - Diseño Basado en Ejemplos");
+                van.Actualizar(new Ponente ("Carlos Blé"), new DateTime(2010, 04, 16));
+
+                IEventoRepository eventoRepository = new EventoRepository();
 
 				eventoRepository.Save(van);
 				vanId = van.Id;
@@ -39,9 +37,7 @@
 				Assert.AreEqual("TDD - Diseño Basado en Ejemplos", van.Titulo);
 				Assert.AreEqual(new DateTime(2010, 04, 16), van.Fecha);
 
-				van.Sintesis = sintesis;
-				van.Enlaces = new[] {"www.carlosble.com", "www.dirigidoPorTests.com"};
-				van.Fecha = new DateTime(2010, 04, 17);
+			    van.Realizado(new DateTime(2010, 04, 17), sintesis, new[] {"www.carlosble.com", "www.dirigidoPorTests.com"});
 
 				eventoRepository.Update(van);
 			}
@@ -57,9 +53,9 @@
 				Assert.AreEqual(new DateTime(2010, 04, 17), van.Fecha);
 				Assert.AreEqual(sintesis, van.Sintesis);
 				Assert.IsNotNull(van.Enlaces);
-				Assert.AreEqual(2, van.Enlaces.Count);
-				Assert.AreEqual("www.carlosble.com", van.Enlaces[0]);
-				Assert.AreEqual("www.dirigidoPorTests.com", van.Enlaces[1]);
+				Assert.AreEqual(2, van.Enlaces.Count());
+				Assert.Contains("www.carlosble.com", van.Enlaces.ToList());
+                Assert.Contains("www.dirigidoPorTests.com", van.Enlaces.ToList());
 
 				eventoRepository.Delete(van);
 			}
--- a/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs	Thu Mar 17 17:04:03 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs	Thu Mar 17 23:16:35 2011 -0300
@@ -90,7 +90,7 @@
 				var van = agenda.GetEventosPropuestos().FirstOrDefault();
 				Assert.IsNotNull(van);
 
-				van.Fecha = DateTime.Today.AddDays(5);
+				van.Actualizar(null, DateTime.Today.AddDays(5));
 				Assert.Throws<ValidationException>(() => agenda.Publicar(van.Titulo, string.Empty, van.Fecha));
 			}
 		}