Mercurial > altnet-hispano
changeset 54:3059a5f8930f
Code cleanup
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Sat May 14 12:45:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Sat May 14 13:01:24 2011 -0300 @@ -7,12 +7,13 @@ { public class Agenda { + private readonly IEventoRepository _eventosRepository; + private readonly IPonenteRepository _ponenteRepository; private readonly IPublicador _publicador; private readonly IRecordador _recordador; - private readonly IEventoRepository _eventosRepository; - private readonly IPonenteRepository _ponenteRepository; - public Agenda(IPublicador publicador, IRecordador recordador, IEventoRepository eventosRepository, IPonenteRepository ponenteRepository) + public Agenda(IPublicador publicador, IRecordador recordador, IEventoRepository eventosRepository, + IPonenteRepository ponenteRepository) { _publicador = publicador; _ponenteRepository = ponenteRepository; @@ -20,39 +21,51 @@ _recordador = recordador; } - public Resultado Publicar(string titulo, string ponenteNombre, DateTime? fecha) - { - var ponente = GetPonente(ponenteNombre); + public Evento GetEvento(Guid id) + { + return _eventosRepository.Get(id); + } - var evento = _eventosRepository.GetPropuestaByTitulo(titulo) ?? new Evento (titulo); - evento.Publicar(ponente, fecha); + public IList<Evento> GetEventosPropuestos() + { + return _eventosRepository.GetEventosSinFecha() ?? new List<Evento>(); + } - if (!evento.Fecha.HasValue) - return new Resultado(false); - if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre)) - return new Resultado(false); + public IList<Evento> GetEventosPublicados() + { + return _eventosRepository.GetEventosConFecha() ?? new List<Evento>(); + } - if (_publicador != null) - _publicador.Publicar(evento); + public Resultado ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha) + { + Evento evento = _eventosRepository.Get(id); + if (evento == null) + throw new EventoNotFoundException(id); - _eventosRepository.Save(evento); - _ponenteRepository.Save(ponente); + Ponente ponente = GetPonente(ponenteNombre); + + if (evento.Titulo != titulo) + evento.CambiarTitulo(titulo); - return new Resultado(true); - } + if (evento.Fecha != fecha || evento.Ponente != ponente) + evento.Actualizar(ponente, fecha); + + if (_publicador != null) + _publicador.Publicar(evento); - public void Recordar(Guid eventoId) + return new Resultado(true); + } + + public Resultado ModificarPropuesta(Guid id, string titulo, string ponenteNombre) { - var evento = _eventosRepository.Get(eventoId); - if (_recordador != null) - _recordador.Recordar(evento); + return ModificarEvento(id, titulo, ponenteNombre, null); } public Resultado Proponer(string titulo, string ponenteNombre) { - var ponente = GetPonente(ponenteNombre); - var evento = new Evento (titulo); - evento.Actualizar(ponente); + Ponente ponente = GetPonente(ponenteNombre); + var evento = new Evento(titulo); + evento.Actualizar(ponente); if (string.IsNullOrWhiteSpace(evento.Titulo)) return new Resultado(false); @@ -63,64 +76,52 @@ return new Resultado(true); } - public IList<Evento> GetEventosPropuestos() - { - return _eventosRepository.GetEventosSinFecha() ?? new List<Evento>(); - } - - public IList<Evento> GetEventosPublicados() - { - return _eventosRepository.GetEventosConFecha() ?? new List<Evento>(); - } - - public Resultado ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha) + public Resultado Publicar(string titulo, string ponenteNombre, DateTime? fecha) { - var evento = _eventosRepository.Get(id); - if (evento == null) - throw new EventoNotFoundException(id); + Ponente ponente = GetPonente(ponenteNombre); - var ponente = GetPonente(ponenteNombre); + Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo) ?? new Evento(titulo); + evento.Publicar(ponente, fecha); - if (evento.Titulo != titulo) - evento.CambiarTitulo(titulo); + if (!evento.Fecha.HasValue) + return new Resultado(false); + if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre)) + return new Resultado(false); - if (evento.Fecha != fecha || evento.Ponente != ponente) - evento.Actualizar(ponente, fecha); + if (_publicador != null) + _publicador.Publicar(evento); - if (_publicador != null) - _publicador.Publicar(evento); + _eventosRepository.Save(evento); + _ponenteRepository.Save(ponente); return new Resultado(true); } - public Evento GetEvento(Guid id) + public void RealizarEvento(Guid eventoId, string sintesis) { - return _eventosRepository.Get(id); + Evento evento = _eventosRepository.Get(eventoId); + if (evento != null) + evento.Realizado(sintesis); + } + + public void Recordar(Guid eventoId) + { + Evento evento = _eventosRepository.Get(eventoId); + if (_recordador != null) + _recordador.Recordar(evento); } public void RegistrarPonente(string nombre, string mail, string twitter, string blog) { - var ponente = new Ponente(nombre, mail, twitter, blog); + var ponente = new Ponente(nombre, mail, twitter, blog); _ponenteRepository.Save(ponente); } private Ponente GetPonente(string nombre) { - var ponente=_ponenteRepository.GetByNombre(nombre) ?? new Ponente(nombre); - _ponenteRepository.Save(ponente); - return ponente; + Ponente ponente = _ponenteRepository.GetByNombre(nombre) ?? new Ponente(nombre); + _ponenteRepository.Save(ponente); + return ponente; } - - public Resultado ModificarPropuesta(Guid id, string titulo, string ponenteNombre) - { - return ModificarEvento(id, titulo, ponenteNombre, null); - } - - public void RealizarEvento(Guid eventoId, string sintesis) - { - var evento = _eventosRepository.Get(eventoId); - if (evento != null) - evento.Realizado(sintesis); - } } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Domain/Evento.cs Sat May 14 12:45:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Evento.cs Sat May 14 13:01:24 2011 -0300 @@ -5,101 +5,101 @@ { public class Evento { - public Evento(string titulo) - { - Id = Guid.NewGuid(); - Titulo = titulo; + private readonly IList<Track> _tracks; + private IList<string> _enlaces; - _enlaces = new List<string>(); - _tracks = new List<Track>(); - } + public Evento(string titulo) + { + Id = Guid.NewGuid(); + Titulo = titulo; - public Guid Id { get; private set; } + _enlaces = new List<string>(); + _tracks = new List<Track>(); + } + + 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; } - protected string Usuario { get; private set; } - - private IList<string> _enlaces; + public Ponente Ponente { get; private set; } + protected string Usuario { get; private set; } - public IEnumerable<string> Enlaces - { - get { return _enlaces; } - } + public IEnumerable<string> Enlaces + { + get { return _enlaces; } + } + + public IEnumerable<Track> Tracks + { + get { return _tracks; } + } - private readonly IList<Track> _tracks; - public IEnumerable<Track> Tracks - { - get { return _tracks; } - } + public void Actualizar(Ponente ponente, DateTime? fecha) + { + Usuario = IdentityContext.GetUserName(); + Ponente = ponente; + Fecha = fecha; - public void Actualizar(Ponente ponente, DateTime? fecha) - { - Usuario = IdentityContext.GetUserName(); - Ponente = ponente; - Fecha = fecha; + AddTracks(new Track(Accion.Modificar)); + } - AddTracks(new Track(Accion.Modificar)); - } - - public void Actualizar(Ponente ponente) - { - Usuario = IdentityContext.GetUserName(); - Ponente = ponente; - } + public void Actualizar(Ponente ponente) + { + Usuario = IdentityContext.GetUserName(); + Ponente = ponente; + } - public void CambiarTitulo(string titulo) - { - Usuario = IdentityContext.GetUserName(); - Titulo = titulo; - AddTracks(new Track(Accion.CambiarTitulo)); - } + public void CambiarTitulo(string titulo) + { + Usuario = IdentityContext.GetUserName(); + Titulo = titulo; + AddTracks(new Track(Accion.CambiarTitulo)); + } - public void Realizado(DateTime fecha, string sintesis, IList<string> enlaces) - { - Usuario = IdentityContext.GetUserName(); - Fecha = fecha; - Sintesis = sintesis; - _enlaces = enlaces; - } + public void Publicar(Ponente ponente, DateTime? fecha) + { + Usuario = IdentityContext.GetUserName(); + Ponente = ponente; + Fecha = fecha; + AddTracks(new Track(Accion.Publicar)); + } - private void AddTracks(Track track) - { - _tracks.Add(track); - } + public void Realizado(DateTime fecha, string sintesis, IList<string> enlaces) + { + Usuario = IdentityContext.GetUserName(); + Fecha = fecha; + Sintesis = sintesis; + _enlaces = enlaces; + } - public void Realizado(string sintesis) - { - Usuario = IdentityContext.GetUserName(); - Sintesis = sintesis; - AddTracks(new Track(Accion.Realizar)); - } + public void Realizado(string sintesis) + { + Usuario = IdentityContext.GetUserName(); + Sintesis = sintesis; + AddTracks(new Track(Accion.Realizar)); + } - public void Publicar(Ponente ponente, DateTime? fecha) - { - Usuario = IdentityContext.GetUserName(); - Ponente = ponente; - Fecha = fecha; - AddTracks(new Track(Accion.Publicar)); - } + private void AddTracks(Track track) + { + _tracks.Add(track); + } } - public class Track - { - public Track(string accion) - { - Accion = accion; - } + 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"; - } + 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.Domain/Exceptions/EventoNotFoundException.cs Sat May 14 12:45:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Exceptions/EventoNotFoundException.cs Sat May 14 13:01:24 2011 -0300 @@ -6,6 +6,7 @@ { public EventoNotFoundException(Guid eventoId) : base(string.Format("No es posible encontrar el evento con id: {0}", eventoId)) - { } + { + } } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Domain/Exceptions/IdentityContextNotConfiguredException.cs Sat May 14 12:45:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Exceptions/IdentityContextNotConfiguredException.cs Sat May 14 13:01:24 2011 -0300 @@ -2,7 +2,7 @@ namespace AltNetHispano.Agendas.Domain.Exceptions { - public class IdentityContextNotConfiguredException : Exception - { - } + public class IdentityContextNotConfiguredException : Exception + { + } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Domain/ISeguridad.cs Sat May 14 12:45:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/ISeguridad.cs Sat May 14 13:01:24 2011 -0300 @@ -1,7 +1,7 @@ namespace AltNetHispano.Agendas.Domain { - public interface ISeguridad - { - string GetUserName(); - } -} + public interface ISeguridad + { + string GetUserName(); + } +} \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Domain/IdentityContext.cs Sat May 14 12:45:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/IdentityContext.cs Sat May 14 13:01:24 2011 -0300 @@ -2,28 +2,27 @@ namespace AltNetHispano.Agendas.Domain { - public class IdentityContext - { - private static ISeguridad _current; + public class IdentityContext + { + private static ISeguridad _current; - public static ISeguridad Current - { - private get { - if (_current == null) - throw new IdentityContextNotConfiguredException(); - return _current; - } - set { - _current = value; - } - } + public static ISeguridad Current + { + private get + { + if (_current == null) + throw new IdentityContextNotConfiguredException(); + return _current; + } + set { _current = value; } + } - public static string GetUserName() - { - var username = Current.GetUserName(); - if (string.IsNullOrWhiteSpace(username)) - throw new UsuarioNoAutenticadoException(); - return username; - } - } + public static string GetUserName() + { + string username = Current.GetUserName(); + if (string.IsNullOrWhiteSpace(username)) + throw new UsuarioNoAutenticadoException(); + return username; + } + } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Domain/Ponente.cs Sat May 14 12:45:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Ponente.cs Sat May 14 13:01:24 2011 -0300 @@ -2,22 +2,23 @@ namespace AltNetHispano.Agendas.Domain { - public class Ponente { - public Ponente(string nombre, string mail, string twitter, string blog) - : this(nombre) - { - Mail = mail; - Twitter = twitter; - Blog = blog; - } + public class Ponente + { + public Ponente(string nombre, string mail, string twitter, string blog) + : this(nombre) + { + Mail = mail; + Twitter = twitter; + Blog = blog; + } - public Ponente(string nombre) - { - Id = Guid.NewGuid(); - Nombre = nombre; - } + public Ponente(string nombre) + { + Id = Guid.NewGuid(); + Nombre = nombre; + } - public Guid Id { get; private set; } + public Guid Id { get; private set; } public string Nombre { get; private set; } @@ -26,6 +27,5 @@ public string Twitter { get; private set; } public string Blog { get; private set; } - } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs Sat May 14 12:45:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs Sat May 14 13:01:24 2011 -0300 @@ -5,19 +5,19 @@ { public interface IEventoRepository { + void Delete(Evento evento); + Evento Get(Guid vanId); + IList<Evento> GetEventosConFecha(); + IList<Evento> GetEventosSinFecha(); + Evento GetPropuestaByTitulo(string titulo); void Save(Evento evento); - void Delete(Evento evento); void Update(Evento evento); - Evento Get(Guid vanId); - IList<Evento> GetEventosSinFecha(); - IList<Evento> GetEventosConFecha(); - Evento GetPropuestaByTitulo(string titulo); } public interface IPonenteRepository { - void Save(Ponente ponente); + IList<Ponente> GetAll(); Ponente GetByNombre(string ponenteNombre); - IList<Ponente> GetAll(); + void Save(Ponente ponente); } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/EventoTests.cs Sat May 14 12:45:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/EventoTests.cs Sat May 14 13:01:24 2011 -0300 @@ -8,17 +8,17 @@ namespace AltNetHispano.Agendas.Tests { [TestFixture] - public class EventoTests : TestBase + public class EventoTests : TestBase { [Test] public void Van_crud() { Guid vanId; - { - var van = new Evento("TDD - Diseño Basado en Ejemplos"); - van.Actualizar(new Ponente ("Carlos Blé"), new DateTime(2010, 04, 16)); + { + 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(); + IEventoRepository eventoRepository = new EventoRepository(); eventoRepository.Save(van); vanId = van.Id; @@ -37,7 +37,7 @@ Assert.AreEqual("TDD - Diseño Basado en Ejemplos", van.Titulo); Assert.AreEqual(new DateTime(2010, 04, 16), van.Fecha); - van.Realizado(new DateTime(2010, 04, 17), sintesis, new[] {"www.carlosble.com", "www.dirigidoPorTests.com"}); + van.Realizado(new DateTime(2010, 04, 17), sintesis, new[] {"www.carlosble.com", "www.dirigidoPorTests.com"}); eventoRepository.Update(van); } @@ -55,7 +55,7 @@ Assert.IsNotNull(van.Enlaces); Assert.AreEqual(2, van.Enlaces.Count()); Assert.Contains("www.carlosble.com", van.Enlaces.ToList()); - Assert.Contains("www.dirigidoPorTests.com", van.Enlaces.ToList()); + Assert.Contains("www.dirigidoPorTests.com", van.Enlaces.ToList()); eventoRepository.Delete(van); }
--- a/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs Sat May 14 12:45:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs Sat May 14 13:01:24 2011 -0300 @@ -9,6 +9,23 @@ public class PonentesTests : TestBase { [Test] + public void Publicar_dos_eventos_con_el_mismo_ponente_no_registrado() + { + var publicador = new Mock<IPublicador>(); + + 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.Publicar("Conform - Parte 2", "Fabio Maulo", new DateTime(2011, 3, 5)); + + Assert.AreEqual(2, agenda.GetEventosPublicados().Count); + + publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(2)); + + Assert.AreEqual(1, DefaultPonenteRepository.GetAll().Count); + } + + [Test] public void Publicar_evento_con_ponente_registrado() { var publicador = new Mock<IPublicador>(); @@ -51,22 +68,5 @@ Assert.AreEqual("Fabio Maulo", evento.Ponente.Nombre); Assert.IsNullOrEmpty(evento.Ponente.Twitter); } - - [Test] - public void Publicar_dos_eventos_con_el_mismo_ponente_no_registrado() - { - var publicador = new Mock<IPublicador>(); - - 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.Publicar("Conform - Parte 2", "Fabio Maulo", new DateTime(2011, 3, 5)); - - Assert.AreEqual(2, agenda.GetEventosPublicados().Count); - - publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(2)); - - Assert.AreEqual(1, DefaultPonenteRepository.GetAll().Count); - } } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Sat May 14 12:45:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Sat May 14 13:01:24 2011 -0300 @@ -13,51 +13,45 @@ public class PropuestasTests : TestBase { [Test] - public void Proponer_evento_correctamente() + public void Crear_modificar_y_publicar_evento_propuesto() { - var agenda = new Agenda(null, null, DefaultEventoRepository, DefaultPonenteRepository); - agenda.Proponer("Van propuesta", null); + var agenda = new Agenda(null, null, DefaultEventoRepository, DefaultPonenteRepository); + + agenda.Proponer("Van", null); + { + IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); + IList<Evento> eventosPublicados = agenda.GetEventosPublicados(); + + Assert.AreEqual(1, eventosPropuestos.Count); + Assert.AreEqual(0, eventosPublicados.Count); - IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); - Assert.IsNotNull(eventosPropuestos); - Assert.AreEqual(1, eventosPropuestos.Count); - Assert.AreEqual("Van propuesta", eventosPropuestos[0].Titulo); - } + var evento = eventosPropuestos.FirstOrDefault(); + agenda.ModificarPropuesta(evento.Id, "Van 2", "otro ponente"); + + eventosPropuestos = agenda.GetEventosPropuestos(); + Assert.AreEqual(1, eventosPropuestos.Count); - [Test] - public void Verificar_propuesta_separada_de_publicacion() - { - var agenda = new Agenda(null, null, DefaultEventoRepository, DefaultPonenteRepository); + evento = eventosPropuestos.FirstOrDefault(); + Assert.AreEqual("Van 2", evento.Titulo); + Assert.AreEqual("otro ponente", evento.Ponente.Nombre); + } - agenda.Proponer("Van propuesta", null); - var r = agenda.Publicar("Van publicada", "jjmontes", DateTime.Now); + var r = agenda.Publicar("Van 2", "jjmontes", DateTime.Now); Assert.IsTrue(r.Succeful); - - IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); - IList<Evento> eventosPublicados = agenda.GetEventosPublicados(); - - Assert.AreEqual(1, eventosPropuestos.Count); - Assert.AreEqual(1, eventosPublicados.Count); - } + { + IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); + IList<Evento> eventosPublicados = agenda.GetEventosPublicados(); - [Test] - public void Intentar_proponer_evento_sin_titulo() - { - var repository = new Mock<IEventoRepository>(); - - var agenda = new Agenda(null, null, repository.Object, DefaultPonenteRepository); - - var r = agenda.Proponer(string.Empty, null); - Assert.IsFalse(r.Succeful); - - repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); + Assert.AreEqual(0, eventosPropuestos.Count); + Assert.AreEqual(1, eventosPublicados.Count); + } } [Test] public void Intentar_agendar_evento_propuesto_sin_indicar_fecha() { - var agenda = new Agenda(null, null, DefaultEventoRepository, DefaultPonenteRepository); - + var agenda = new Agenda(null, null, DefaultEventoRepository, DefaultPonenteRepository); + { agenda.Proponer("Van propuesta", null); } @@ -73,8 +67,8 @@ [Test] public void Intentar_agendar_evento_propuesto_sin_indicar_ponente() { - var agenda = new Agenda(null, null, DefaultEventoRepository, DefaultPonenteRepository); - + var agenda = new Agenda(null, null, DefaultEventoRepository, DefaultPonenteRepository); + { agenda.Proponer("Van propuesta", null); } @@ -90,38 +84,26 @@ } [Test] - public void Crear_modificar_y_publicar_evento_propuesto() + public void Intentar_obtener_un_evento_inexistente() { + var idEventoNoExistente = new Guid("99999999999999999999999999999999"); + var agenda = new Agenda(null, null, DefaultEventoRepository, DefaultPonenteRepository); - agenda.Proponer("Van", null); - { - IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); - IList<Evento> eventosPublicados = agenda.GetEventosPublicados(); - - Assert.AreEqual(1, eventosPropuestos.Count); - Assert.AreEqual(0, eventosPublicados.Count); - - var evento = eventosPropuestos.FirstOrDefault(); - agenda.ModificarPropuesta(evento.Id, "Van 2", "otro ponente"); - - eventosPropuestos = agenda.GetEventosPropuestos(); - Assert.AreEqual(1, eventosPropuestos.Count); + Assert.IsNull(agenda.GetEvento(idEventoNoExistente)); + } - evento = eventosPropuestos.FirstOrDefault(); - Assert.AreEqual("Van 2", evento.Titulo); - Assert.AreEqual("otro ponente", evento.Ponente.Nombre); - } - - var r = agenda.Publicar("Van 2", "jjmontes", DateTime.Now); - Assert.IsTrue(r.Succeful); - { - IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); - IList<Evento> eventosPublicados = agenda.GetEventosPublicados(); + [Test] + public void Intentar_proponer_evento_sin_titulo() + { + var repository = new Mock<IEventoRepository>(); - Assert.AreEqual(0, eventosPropuestos.Count); - Assert.AreEqual(1, eventosPublicados.Count); - } + var agenda = new Agenda(null, null, repository.Object, DefaultPonenteRepository); + + var r = agenda.Proponer(string.Empty, null); + Assert.IsFalse(r.Succeful); + + repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); } [Test] @@ -135,13 +117,31 @@ } [Test] - public void Intentar_obtener_un_evento_inexistente() + public void Proponer_evento_correctamente() { - var idEventoNoExistente = new Guid("99999999999999999999999999999999"); + var agenda = new Agenda(null, null, DefaultEventoRepository, DefaultPonenteRepository); + agenda.Proponer("Van propuesta", null); + IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); + Assert.IsNotNull(eventosPropuestos); + Assert.AreEqual(1, eventosPropuestos.Count); + Assert.AreEqual("Van propuesta", eventosPropuestos[0].Titulo); + } + + [Test] + public void Verificar_propuesta_separada_de_publicacion() + { var agenda = new Agenda(null, null, DefaultEventoRepository, DefaultPonenteRepository); - Assert.IsNull(agenda.GetEvento(idEventoNoExistente)); + agenda.Proponer("Van propuesta", null); + var r = agenda.Publicar("Van publicada", "jjmontes", DateTime.Now); + Assert.IsTrue(r.Succeful); + + IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); + IList<Evento> eventosPublicados = agenda.GetEventosPublicados(); + + Assert.AreEqual(1, eventosPropuestos.Count); + Assert.AreEqual(1, eventosPublicados.Count); } - } + } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/PulicarTests.cs Sat May 14 12:45:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PulicarTests.cs Sat May 14 13:01:24 2011 -0300 @@ -8,50 +8,13 @@ namespace AltNetHispano.Agendas.Tests { - [TestFixture] + [TestFixture] public class PulicarTests : TestBase { [Test] - public void Publicar_evento_correctamente() - { - var publicador = new Mock<IPublicador>(); - - var agenda = new Agenda(publicador.Object, null, DefaultEventoRepository, DefaultPonenteRepository); - - agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now); - Assert.AreEqual(1, agenda.GetEventosPublicados().Count); - - publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); - } - - [Test] - public void Intentar_publicar_evento_sin_usuario_autenticado() + public void CompositePublicador_constructor_parametro_null_debe_generar_ArgumentNullException() { - SetCurrentUser(null); - - var publicador = new Mock<IPublicador>(); - var repository = new Mock<IEventoRepository>(); - - var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository); - - Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now)); - - publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(0)); - repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); - } - - [Test] - public void Intentar_publicar_evento_sin_servicio_de_seguridad() - { - IdentityContext.Current = null; - - var publicador = new Mock<IPublicador>(); - var repository = new Mock<IEventoRepository>(); - - var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository); - - Assert.Throws<IdentityContextNotConfiguredException>(() => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now)); - repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); + Assert.Throws<ArgumentNullException>(() => new CompositePublicador(null)); } [Test] @@ -72,6 +35,37 @@ } [Test] + public void Intentar_publicar_evento_sin_servicio_de_seguridad() + { + IdentityContext.Current = null; + + var publicador = new Mock<IPublicador>(); + var repository = new Mock<IEventoRepository>(); + + var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository); + + Assert.Throws<IdentityContextNotConfiguredException>( + () => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now)); + repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); + } + + [Test] + public void Intentar_publicar_evento_sin_usuario_autenticado() + { + SetCurrentUser(null); + + var publicador = new Mock<IPublicador>(); + var repository = new Mock<IEventoRepository>(); + + var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository); + + Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now)); + + publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(0)); + repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); + } + + [Test] public void Publicar_evento_con_multiples_publicadores() { var publicador1 = new Mock<IPublicador>(); @@ -79,7 +73,8 @@ var repository = new Mock<IEventoRepository>(); - var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), null, repository.Object, DefaultPonenteRepository); + var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), null, + repository.Object, DefaultPonenteRepository); agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now); @@ -89,22 +84,16 @@ } [Test] - public void Publicar_y_recordar_evento() + public void Publicar_evento_correctamente() { - var publicador1 = new Mock<IPublicador>(); - var publicador2 = new Mock<IPublicador>(); - var recordador1 = new Mock<IRecordador>(); + var publicador = new Mock<IPublicador>(); - var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), recordador1.Object, DefaultEventoRepository, DefaultPonenteRepository); + var agenda = new Agenda(publicador.Object, null, DefaultEventoRepository, DefaultPonenteRepository); agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now); - - var van = agenda.GetEventosPublicados().Single(v => v.Titulo == "Van para publicar"); - agenda.Recordar(van.Id); + Assert.AreEqual(1, agenda.GetEventosPublicados().Count); - publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); - publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); - recordador1.Verify(r => r.Recordar(It.IsAny<Evento>()), Times.Exactly(1)); + publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); } [Test] @@ -133,15 +122,29 @@ Assert.AreEqual("otro ponente", evento.Ponente.Nombre); Assert.AreEqual(fecha, evento.Fecha); - var idEventoNoExistente = new Guid("99999999999999999999999999999999"); - Assert.Throws<EventoNotFoundException>( - () => agenda.ModificarEvento(idEventoNoExistente, "algún título", "un ponente", DateTime.Now)); - } + var idEventoNoExistente = new Guid("99999999999999999999999999999999"); + Assert.Throws<EventoNotFoundException>( + () => agenda.ModificarEvento(idEventoNoExistente, "algún título", "un ponente", DateTime.Now)); + } + + [Test] + public void Publicar_y_recordar_evento() + { + var publicador1 = new Mock<IPublicador>(); + var publicador2 = new Mock<IPublicador>(); + var recordador1 = new Mock<IRecordador>(); - [Test] - public void CompositePublicador_constructor_parametro_null_debe_generar_ArgumentNullException() - { - Assert.Throws<ArgumentNullException>(() => new CompositePublicador(null)); - } - } + var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), recordador1.Object, + DefaultEventoRepository, DefaultPonenteRepository); + + agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now); + + var van = agenda.GetEventosPublicados().Single(v => v.Titulo == "Van para publicar"); + agenda.Recordar(van.Id); + + publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); + publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); + recordador1.Verify(r => r.Recordar(It.IsAny<Evento>()), Times.Exactly(1)); + } + } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/TestBase.cs Sat May 14 12:45:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/TestBase.cs Sat May 14 13:01:24 2011 -0300 @@ -8,13 +8,6 @@ { public class TestBase { - protected static void SetCurrentUser(string username) - { - var seguridad = new Mock<ISeguridad>(); - seguridad.Setup(s => s.GetUserName()).Returns(username); - IdentityContext.Current = seguridad.Object; - } - protected static IEventoRepository DefaultEventoRepository { get { return new EventoRepository(); } @@ -37,11 +30,17 @@ PonenteRepository.Clear(); } - [SetUp] - public void SetearUsuario() - { - SetCurrentUser("neluz"); - } + [SetUp] + public void SetearUsuario() + { + SetCurrentUser("neluz"); + } - } + protected static void SetCurrentUser(string username) + { + var seguridad = new Mock<ISeguridad>(); + seguridad.Setup(s => s.GetUserName()).Returns(username); + IdentityContext.Current = seguridad.Object; + } + } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/TrackTests.cs Sat May 14 12:45:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/TrackTests.cs Sat May 14 13:01:24 2011 -0300 @@ -5,49 +5,48 @@ namespace AltNetHispano.Agendas.Tests { - [TestFixture] - public class TrackTests : TestBase - { - [Test] - public void Track_al_publicar_y_modificar_evento() - { - var repository = DefaultEventoRepository; + [TestFixture] + public class TrackTests : TestBase + { + [Test] + public void Track_al_publicar_y_modificar_evento() + { + var repository = DefaultEventoRepository; - var agenda = new Agenda(null, null, repository, DefaultPonenteRepository); + var agenda = new Agenda(null, null, repository, DefaultPonenteRepository); - var fecha = DateTime.Now.AddDays(5); - agenda.Publicar("Html 5", "jjmontes", fecha); - var evento = repository.GetEventosConFecha().First(); + 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); + 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", "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); - } + 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; + [Test] + public void Track_al_publicar_y_realizar_evento() + { + var repository = DefaultEventoRepository; - var agenda = new Agenda(null, null, repository, DefaultPonenteRepository); + var agenda = new Agenda(null, null, repository, DefaultPonenteRepository); - agenda.Publicar("Html 5", "jjmontes", DateTime.Now); - var evento = repository.GetEventosConFecha().First(); + 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); + 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); - } - - } + 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
--- a/Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs Sat May 14 12:45:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs Sat May 14 13:01:24 2011 -0300 @@ -1,7 +1,6 @@ using System; using System.Linq; using System.Web.Mvc; -using AltNetHispano.Agendas.Domain.Exceptions; using AltNetHispano.Agendas.Factories; using AltNetHispano.Agendas.Web.Models;
--- a/Agendas/trunk/src/Agendas.Web/Controllers/PropuestaController.cs Sat May 14 12:45:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Controllers/PropuestaController.cs Sat May 14 13:01:24 2011 -0300 @@ -1,7 +1,6 @@ using System; using System.Linq; using System.Web.Mvc; -using AltNetHispano.Agendas.Domain.Exceptions; using AltNetHispano.Agendas.Factories; using AltNetHispano.Agendas.Web.Models;