Mercurial > altnet-hispano
changeset 39:e548379cc314
track de cambios en evento
author | nelo@MTEySS.neluz.int |
---|---|
date | Fri, 18 Mar 2011 00:10:21 -0300 |
parents | 3c5657d99727 |
children | c49ba9697ca5 |
files | Agendas/trunk/src/Agendas.Domain/Agenda.cs Agendas/trunk/src/Agendas.Domain/Evento.cs Agendas/trunk/src/Agendas.Repositories.Memory/PonenteRepository.cs Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj Agendas/trunk/src/Agendas.Tests/PulicarTests.cs Agendas/trunk/src/Agendas.Tests/TrackTests.cs |
diffstat | 6 files changed, 120 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Thu Mar 17 23:16:35 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Fri Mar 18 00:10:21 2011 -0300 @@ -38,6 +38,9 @@ if (_publicador != null) _publicador.Publicar(evento); + + evento.AddTracks(new Track(Accion.Publicar)); + _eventosRepository.Save(evento); _ponenteRepository.Save(ponente); } @@ -88,11 +91,19 @@ var ponente = GetPonente(ponenteNombre); if (evento.Titulo != titulo) - evento.CambiarTitulo(titulo); + { + evento.CambiarTitulo(titulo); + evento.AddTracks(new Track(Accion.CambiarTitulo)); + } - evento.Actualizar(ponente, fecha); + if (evento.Fecha != fecha || evento.Ponente != ponente) + { + evento.Actualizar(ponente, fecha); + evento.AddTracks(new Track(Accion.Modificar)); + } - if (_publicador != null) + + if (_publicador != null) _publicador.Publicar(evento); } @@ -109,13 +120,25 @@ private Ponente GetPonente(string nombre) { - return _ponenteRepository.GetByNombre(nombre) ?? new Ponente(nombre); + var ponente=_ponenteRepository.GetByNombre(nombre) ?? new Ponente(nombre); + _ponenteRepository.Save(ponente); + return ponente; } public void ModificarPropuesta(Guid id, string titulo, string ponenteNombre) { ModificarEvento(id, titulo, ponenteNombre, null); } + + public void RealizarEvento(Guid eventoId, string sintesis) + { + var evento = _eventosRepository.Get(eventoId); + if (evento != null) + { + evento.Realizado(sintesis); + evento.AddTracks(new Track(Accion.Realizar)); + } + } } public class EventoNotFoundException : Exception
--- a/Agendas/trunk/src/Agendas.Domain/Evento.cs Thu Mar 17 23:16:35 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Evento.cs Fri Mar 18 00:10:21 2011 -0300 @@ -10,6 +10,7 @@ Id = Guid.NewGuid(); Titulo = titulo; _enlaces = new List<string>(); + _tracks = new List<Track>(); } public Guid Id { get; private set; } @@ -19,14 +20,21 @@ public Ponente Ponente { get; private set; } private IList<string> _enlaces; + public IEnumerable<string> Enlaces { get { return _enlaces; } } + private readonly IList<Track> _tracks; + public IEnumerable<Track> Tracks + { + get { return _tracks; } + } + public void Actualizar(Ponente ponente, DateTime? fecha) { - Ponente = ponente; + Ponente = ponente; Fecha = fecha; } @@ -46,5 +54,33 @@ Sintesis = sintesis; _enlaces = enlaces; } + + public void AddTracks(Track track) + { + _tracks.Add(track); + } + + public void Realizado(string sintesis) + { + Sintesis = sintesis; + } } + + public class Track + { + public Track(string accion) + { + Accion = accion; + } + + public string Accion { get; private set; } + } + + public class Accion + { + public const string Publicar = "Publicar"; + public const string Modificar = "Modificar"; + public const string CambiarTitulo = "CambiarTitulo"; + public const string Realizar = "Realizar"; + } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Repositories.Memory/PonenteRepository.cs Thu Mar 17 23:16:35 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Repositories.Memory/PonenteRepository.cs Fri Mar 18 00:10:21 2011 -0300 @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using AltNetHispano.Agendas.Domain; using AltNetHispano.Agendas.Domain.Repositories; @@ -14,18 +13,6 @@ Objects.Add(ponente.Id, ponente); } - public void Update(Ponente ponente) - { - //nada que hacer en este método para este repositorio - } - - public Ponente Get(Guid vanId) - { - Ponente ponente; - return Objects.TryGetValue(vanId, out ponente) ? ponente : null; - } - - public Ponente GetByNombre(string nombre) { return Objects.Values.SingleOrDefault(p => p.Nombre == nombre);
--- a/Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj Thu Mar 17 23:16:35 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj Fri Mar 18 00:10:21 2011 -0300 @@ -53,6 +53,7 @@ <Compile Include="PulicarTests.cs" /> <Compile Include="SeguridadObjectMother.cs" /> <Compile Include="TestBase.cs" /> + <Compile Include="TrackTests.cs" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\Agendas.Domain\Agendas.Domain.csproj">
--- a/Agendas/trunk/src/Agendas.Tests/PulicarTests.cs Thu Mar 17 23:16:35 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PulicarTests.cs Fri Mar 18 00:10:21 2011 -0300 @@ -7,7 +7,7 @@ namespace AltNetHispano.Agendas.Tests { - [TestFixture] + [TestFixture] public class PulicarTests : TestBase { [Test]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Tests/TrackTests.cs Fri Mar 18 00:10:21 2011 -0300 @@ -0,0 +1,53 @@ +using System; +using System.Linq; +using AltNetHispano.Agendas.Domain; +using NUnit.Framework; + +namespace AltNetHispano.Agendas.Tests +{ + [TestFixture] + public class TrackTests : TestBase + { + [Test] + public void Track_al_publicar_y_modificar_evento() + { + var repository = DefaultEventoRepository; + + var agenda = new Agenda(null, null, SeguridadServiceDefault, repository, DefaultPonenteRepository); + + var fecha = DateTime.Now.AddDays(5); + agenda.Publicar("Html 5", "jjmontes", fecha); + var evento = repository.GetEventosConFecha().First(); + + Assert.AreEqual(1, evento.Tracks.Count()); + Assert.AreEqual(Accion.Publicar, evento.Tracks.Last().Accion); + + agenda.ModificarEvento(evento.Id, "Html 5", "otro ponente", fecha); + Assert.AreEqual(2, evento.Tracks.Count()); + Assert.AreEqual(Accion.Modificar, evento.Tracks.Last().Accion); + + agenda.ModificarEvento(evento.Id, "Html 5 y Css 3", "otro ponente", fecha); + Assert.AreEqual(3, evento.Tracks.Count()); + Assert.AreEqual(Accion.CambiarTitulo, evento.Tracks.Last().Accion); + } + + [Test] + public void Track_al_publicar_y_realizar_evento() + { + var repository = DefaultEventoRepository; + + var agenda = new Agenda(null, null, SeguridadServiceDefault, repository, DefaultPonenteRepository); + + agenda.Publicar("Html 5", "jjmontes", DateTime.Now); + var evento = repository.GetEventosConFecha().First(); + + Assert.AreEqual(1, evento.Tracks.Count()); + Assert.AreEqual(Accion.Publicar, evento.Tracks.Last().Accion); + + agenda.RealizarEvento(evento.Id, "Esta es la sintesis"); + Assert.AreEqual(2, evento.Tracks.Count()); + Assert.AreEqual(Accion.Realizar, evento.Tracks.Last().Accion); + } + + } +} \ No newline at end of file