# HG changeset patch # User nelo@MTEySS.neluz.int # Date 1300414595 10800 # Node ID 3c5657d9972738106c4a0b42fe613347343a6d70 # Parent 90f0cab1febc97e537487e5f993aa2d96e1103bd Cambio de setters de las propiedades a private diff -r 90f0cab1febc -r 3c5657d99727 Agendas/trunk/src/Agendas.Domain/Agenda.cs --- 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) diff -r 90f0cab1febc -r 3c5657d99727 Agendas/trunk/src/Agendas.Domain/Evento.cs --- 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 Enlaces { get; set; } - } + public Evento(string titulo) + { + Id = Guid.NewGuid(); + Titulo = titulo; + _enlaces = new List(); + } + + 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 _enlaces; + public IEnumerable 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 enlaces) + { + Fecha = fecha; + Sintesis = sintesis; + _enlaces = enlaces; + } + } } \ No newline at end of file diff -r 90f0cab1febc -r 3c5657d99727 Agendas/trunk/src/Agendas.Domain/Ponente.cs --- 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 diff -r 90f0cab1febc -r 3c5657d99727 Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs --- 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) diff -r 90f0cab1febc -r 3c5657d99727 Agendas/trunk/src/Agendas.Repositories.Memory/PonenteRepository.cs --- 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) diff -r 90f0cab1febc -r 3c5657d99727 Agendas/trunk/src/Agendas.Tests/EventoTests.cs --- 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); } diff -r 90f0cab1febc -r 3c5657d99727 Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs --- 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(() => agenda.Publicar(van.Titulo, string.Empty, van.Fecha)); } }