# HG changeset patch
# User nelo@MTEySS.neluz.int
# Date 1300186193 10800
# Node ID 41b283d27e3eb605cafc671922812b5a81039445
# Parent a85674a7aa7a6b2afdca79b0708151c7bfc06ba1
Ponentes como entidad
Agenda no es una entidad persistente (por ahora)
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Domain/Agenda.cs
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Tue Mar 15 06:57:58 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Tue Mar 15 07:49:53 2011 -0300
@@ -11,31 +11,34 @@
private readonly IRecordador _recordador;
private readonly ISeguridad _seguridad;
private readonly IEventoRepository _eventosRepository;
+ private readonly IPonenteRepository _ponenteRepository;
- public Agenda(IPublicador publicador, IRecordador recordador, ISeguridad seguridad, IEventoRepository eventosRepository)
+ public Agenda(IPublicador publicador, IRecordador recordador, ISeguridad seguridad, IEventoRepository eventosRepository, IPonenteRepository ponenteRepository)
{
_publicador = publicador;
+ _ponenteRepository = ponenteRepository;
_eventosRepository = eventosRepository;
_recordador = recordador;
_seguridad = seguridad;
}
- public Guid Id { get; set; }
+ public void Publicar(string titulo, string ponenteNombre, DateTime? fecha)
+ {
+ var ponente = GetPonente(ponenteNombre);
- public void Publicar(string titulo, string ponente, DateTime? fecha)
- {
var evento = new Evento{Titulo=titulo, Ponente = ponente, Fecha = fecha};
if (!evento.Fecha.HasValue)
throw new ValidationException();
if (NoEstaAutenticado(_seguridad))
throw new UsuarioNoAutenticadoException();
- if (string.IsNullOrWhiteSpace(evento.Ponente))
+ if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre))
throw new ValidationException();
if (_publicador != null)
_publicador.Publicar(evento);
_eventosRepository.Save(evento);
+ _ponenteRepository.Save(ponente);
}
public void Recordar(Guid eventoId)
@@ -72,11 +75,14 @@
|| string.IsNullOrWhiteSpace(seguridad.GetPrincipal().Identity.Name);
}
- public void ModificarEvento(Guid id, string titulo, string ponente, DateTime? fecha)
+ public void ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha)
{
var evento = _eventosRepository.Get(id);
if (evento == null)
throw new EventoNotFoundException();
+
+ var ponente = GetPonente(ponenteNombre);
+
evento.Titulo = titulo;
evento.Ponente = ponente;
evento.Fecha = fecha;
@@ -86,6 +92,18 @@
{
return _eventosRepository.Get(id);
}
+
+ public void RegistrarPonente(string nombre, string mail, string twitter, string blog)
+ {
+ var ponente = new Ponente {Nombre = nombre, Mail = mail, Twitter = twitter, Blog = blog};
+ _ponenteRepository.Save(ponente);
+ }
+
+ private Ponente GetPonente(string nombre)
+ {
+ return _ponenteRepository.GetByNombre(nombre) ?? new Ponente { Nombre = nombre };
+ }
+
}
public class EventoNotFoundException : Exception
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Domain/Agendas.Domain.csproj
--- a/Agendas/trunk/src/Agendas.Domain/Agendas.Domain.csproj Tue Mar 15 06:57:58 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Agendas.Domain.csproj Tue Mar 15 07:49:53 2011 -0300
@@ -46,6 +46,7 @@
+
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Domain/Evento.cs
--- a/Agendas/trunk/src/Agendas.Domain/Evento.cs Tue Mar 15 06:57:58 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Evento.cs Tue Mar 15 07:49:53 2011 -0300
@@ -9,7 +9,7 @@
public string Titulo { get; set; }
public DateTime? Fecha { get; set; }
public string Sintesis { get; set; }
- public string Ponente { get; set; }
+ public Ponente Ponente { get; set; }
public IList Enlaces { get; set; }
}
}
\ No newline at end of file
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Domain/Ponente.cs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Agendas/trunk/src/Agendas.Domain/Ponente.cs Tue Mar 15 07:49:53 2011 -0300
@@ -0,0 +1,17 @@
+using System;
+
+namespace AltNetHispano.Agendas.Domain
+{
+ public class Ponente {
+ public Guid Id { get; set; }
+
+ public string Nombre { get; set; }
+
+ public string Mail { get; set; }
+
+ public string Twitter { get; set; }
+
+ public string Blog { get; set; }
+
+ }
+}
\ No newline at end of file
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs
--- a/Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs Tue Mar 15 06:57:58 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs Tue Mar 15 07:49:53 2011 -0300
@@ -13,11 +13,10 @@
IList GetEventosConFecha();
}
- public interface IAgendaRepository
+ public interface IPonenteRepository
{
- void Save(Agenda agenda);
- void Delete(Agenda agenda);
- void Update(Agenda agenda);
- Agenda Get(Guid agendaId);
+ void Save(Ponente ponente);
+ Ponente GetByNombre(string ponenteNombre);
+ IList GetAll();
}
}
\ No newline at end of file
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Factories/AgendaFactory.cs
--- a/Agendas/trunk/src/Agendas.Factories/AgendaFactory.cs Tue Mar 15 06:57:58 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Factories/AgendaFactory.cs Tue Mar 15 07:49:53 2011 -0300
@@ -11,7 +11,7 @@
public static Agenda GetAgenda()
{
if (_agenda==null)
- _agenda = new Agenda(null, null, _seguridad, new EventoRepository());
+ _agenda = new Agenda(null, null, _seguridad, new EventoRepository(), new PonenteRepository());
return _agenda;
}
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Repositories.Memory/AgendaRepository.cs
--- a/Agendas/trunk/src/Agendas.Repositories.Memory/AgendaRepository.cs Tue Mar 15 06:57:58 2011 -0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-using System;
-using AltNetHispano.Agendas.Domain;
-using AltNetHispano.Agendas.Domain.Repositories;
-
-namespace Agendas.Repositories.Memory
-{
- public class AgendaRepository : RepositoryBase, IAgendaRepository
- {
- #region IAgendaRepository Members
-
- public void Save(Agenda agenda)
- {
- if (Guid.Empty.Equals(agenda.Id))
- {
- agenda.Id = Guid.NewGuid();
- Objects.Add(agenda.Id, agenda);
- }
- }
-
- public void Update(Agenda agenda)
- {
- //nada que hacer en este método para este repositorio
- }
-
- public Agenda Get(Guid agendaId)
- {
- Agenda agenda;
- return Objects.TryGetValue(agendaId, out agenda) ? agenda : null;
- }
-
- public void Delete(Agenda agenda)
- {
- Objects.Remove(agenda.Id);
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Repositories.Memory/Agendas.Repositories.Memory.csproj
--- a/Agendas/trunk/src/Agendas.Repositories.Memory/Agendas.Repositories.Memory.csproj Tue Mar 15 06:57:58 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Repositories.Memory/Agendas.Repositories.Memory.csproj Tue Mar 15 07:49:53 2011 -0300
@@ -40,8 +40,8 @@
-
+
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs
--- a/Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs Tue Mar 15 06:57:58 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs Tue Mar 15 07:49:53 2011 -0300
@@ -42,5 +42,10 @@
{
return Objects.Values.Where(e => e.Fecha != null).ToList();
}
+
+ public static void Clear()
+ {
+ Objects.Clear();
+ }
}
}
\ No newline at end of file
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Repositories.Memory/PonenteRepository.cs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Agendas/trunk/src/Agendas.Repositories.Memory/PonenteRepository.cs Tue Mar 15 07:49:53 2011 -0300
@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using AltNetHispano.Agendas.Domain;
+using AltNetHispano.Agendas.Domain.Repositories;
+
+namespace Agendas.Repositories.Memory
+{
+ public class PonenteRepository : RepositoryBase, IPonenteRepository
+ {
+ public void Save(Ponente ponente)
+ {
+ if (Guid.Empty.Equals(ponente.Id))
+ {
+ ponente.Id = Guid.NewGuid();
+ 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);
+ }
+
+ public IList GetAll()
+ {
+ return Objects.Values.ToList();
+ }
+
+ public static void Clear()
+ {
+ Objects.Clear();
+ }
+ }
+}
\ No newline at end of file
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj
--- a/Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj Tue Mar 15 06:57:58 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj Tue Mar 15 07:49:53 2011 -0300
@@ -46,6 +46,7 @@
+
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Tests/EventoObjectMother.cs
--- a/Agendas/trunk/src/Agendas.Tests/EventoObjectMother.cs Tue Mar 15 06:57:58 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/EventoObjectMother.cs Tue Mar 15 07:49:53 2011 -0300
@@ -5,9 +5,5 @@
{
public static class EventoObjectMother
{
- public static Evento GetVanValidaParaPublicar()
- {
- return new Evento { Fecha = DateTime.Now, Ponente = "jjmontes" };
- }
}
}
\ No newline at end of file
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Tests/EventoTests.cs
--- a/Agendas/trunk/src/Agendas.Tests/EventoTests.cs Tue Mar 15 06:57:58 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/EventoTests.cs Tue Mar 15 07:49:53 2011 -0300
@@ -17,7 +17,7 @@
var van = new Evento
{
Titulo = "TDD - Diseño Basado en Ejemplos",
- Ponente = "Carlos Blé",
+ Ponente = new Ponente {Nombre = "Carlos Blé"},
Fecha = new DateTime(2010, 04, 16)
};
IEventoRepository eventoRepository = new EventoRepository();
@@ -35,7 +35,7 @@
Evento van = eventoRepository.Get(vanId);
Assert.IsNotNull(van);
- Assert.AreEqual("Carlos Blé", van.Ponente);
+ Assert.AreEqual("Carlos Blé", van.Ponente.Nombre);
Assert.AreEqual("TDD - Diseño Basado en Ejemplos", van.Titulo);
Assert.AreEqual(new DateTime(2010, 04, 16), van.Fecha);
@@ -52,7 +52,7 @@
Evento van = eventoRepository.Get(vanId);
Assert.IsNotNull(van);
- Assert.AreEqual("Carlos Blé", van.Ponente);
+ Assert.AreEqual("Carlos Blé", van.Ponente.Nombre);
Assert.AreEqual("TDD - Diseño Basado en Ejemplos", van.Titulo);
Assert.AreEqual(new DateTime(2010, 04, 17), van.Fecha);
Assert.AreEqual(sintesis, van.Sintesis);
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Tests/PonentesTests.cs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs Tue Mar 15 07:49:53 2011 -0300
@@ -0,0 +1,72 @@
+using System;
+using AltNetHispano.Agendas.Domain;
+using Moq;
+using NUnit.Framework;
+
+namespace AltNetHispano.Agendas.Tests
+{
+ [TestFixture]
+ public class PonentesTests : TestBase
+ {
+ [Test]
+ public void Publicar_van_con_ponente_registrado()
+ {
+ var publicador = new Mock();
+ Evento evento = null;
+ publicador.Setup(p => p.Publicar(It.IsAny())).Callback(e => evento = e);
+
+ var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, DefaultEventoRepository, DefaultPonenteRepository);
+
+ 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));
+
+ Assert.AreEqual(1, agenda.GetEventosPublicados().Count);
+
+ publicador.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(1));
+
+ Assert.IsNotNull(evento);
+ Assert.AreEqual("Fabio Maulo", evento.Ponente.Nombre);
+ Assert.AreEqual("fabiomaulo@gmail.com", evento.Ponente.Mail);
+ Assert.AreEqual("@fabiomaulo", evento.Ponente.Twitter);
+ Assert.AreEqual("http://fabiomaulo.blogspot.com", evento.Ponente.Blog);
+ }
+
+ [Test]
+ public void Publicar_van_sin_ponente_registrado()
+ {
+ var publicador = new Mock();
+ Evento evento = null;
+ publicador.Setup(p => p.Publicar(It.IsAny())).Callback(e => evento = e);
+
+ var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, DefaultEventoRepository, DefaultPonenteRepository);
+
+ agenda.Publicar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26));
+
+ Assert.AreEqual(1, agenda.GetEventosPublicados().Count);
+
+ publicador.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(1));
+
+ Assert.IsNotNull(evento);
+ Assert.AreEqual("Fabio Maulo", evento.Ponente.Nombre);
+ Assert.IsNullOrEmpty(evento.Ponente.Twitter);
+ }
+
+ [Test]
+ public void Publicar_dos_vans_sin_ponente_registrado()
+ {
+ var publicador = new Mock();
+
+ var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, 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()), Times.Exactly(2));
+
+ Assert.AreEqual(1, DefaultPonenteRepository.GetAll().Count);
+ }
+ }
+}
\ No newline at end of file
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs
--- a/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Tue Mar 15 06:57:58 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Tue Mar 15 07:49:53 2011 -0300
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using Agendas.Repositories.Memory;
using AltNetHispano.Agendas.Domain;
using AltNetHispano.Agendas.Domain.Exceptions;
using AltNetHispano.Agendas.Domain.Repositories;
@@ -17,7 +16,7 @@
public void Propuesta_de_van_con_usuario_autenticado()
{
var seguridad = new Mock();
- var agenda = new Agenda(null, null, seguridad.Object, DefaultEventoRepository);
+ var agenda = new Agenda(null, null, seguridad.Object, DefaultEventoRepository, DefaultPonenteRepository);
seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles());
agenda.Proponer("Van propuesta");
@@ -31,12 +30,10 @@
[Test]
public void Verificar_propuesta_separada_de_publicacion()
{
- var agenda = new Agenda(null, null, SeguridadServiceDefault, new EventoRepository());
-
- var vanPublicada = EventoObjectMother.GetVanValidaParaPublicar();
+ var agenda = new Agenda(null, null, SeguridadServiceDefault, DefaultEventoRepository, DefaultPonenteRepository);
agenda.Proponer("Van propuesta");
- agenda.Publicar(vanPublicada.Titulo, vanPublicada.Ponente, vanPublicada.Fecha);
+ agenda.Publicar("Van publicada", "jjmontes", DateTime.Now);
IList eventosPropuestos = agenda.GetEventosPropuestos();
IList eventosPublicados = agenda.GetEventosPublicados();
@@ -51,7 +48,7 @@
var repository = new Mock();
var seguridad = new Mock();
- var agenda = new Agenda(null, null, seguridad.Object, repository.Object);
+ var agenda = new Agenda(null, null, seguridad.Object, repository.Object, DefaultPonenteRepository);
Assert.Throws(() => agenda.Proponer(string.Empty));
@@ -62,7 +59,7 @@
public void Agendar_van_propuesta_sin_fecha()
{
var seguridad = new Mock();
- var agenda = new Agenda(null, null, seguridad.Object, DefaultEventoRepository);
+ var agenda = new Agenda(null, null, seguridad.Object, DefaultEventoRepository, DefaultPonenteRepository);
seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles());
@@ -73,7 +70,7 @@
{
var van = agenda.GetEventosPropuestos().FirstOrDefault();
Assert.IsNotNull(van);
- Assert.Throws(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha));
+ Assert.Throws(() => agenda.Publicar(van.Titulo, string.Empty, van.Fecha));
}
}
@@ -81,7 +78,7 @@
public void Agendar_van_propuesta_sin_ponente()
{
var seguridad = new Mock();
- var agenda = new Agenda(null, null, seguridad.Object, DefaultEventoRepository);
+ var agenda = new Agenda(null, null, seguridad.Object, DefaultEventoRepository, DefaultPonenteRepository);
seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles());
@@ -94,55 +91,7 @@
Assert.IsNotNull(van);
van.Fecha = DateTime.Today.AddDays(5);
- Assert.Throws(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha));
- }
- }
-
- [Test]
- public void Van_crud()
- {
- var van = EventoObjectMother.GetVanValidaParaPublicar();
-
- Guid vanId;
- {
- var agenda = new Agenda(null, null, SeguridadServiceDefault, new EventoRepository());
- agenda.Publicar(van.Titulo, van.Ponente, van.Fecha);
-
- IAgendaRepository agendaRepository = new AgendaRepository();
-
- agendaRepository.Save(agenda);
- vanId = agenda.Id;
- }
-
- {
- IAgendaRepository agendaRepository = new AgendaRepository();
-
- Agenda agenda = agendaRepository.Get(vanId);
-
- Assert.IsNotNull(agenda);
- Assert.AreEqual(1, agenda.GetEventosPublicados().Count);
- agenda.Publicar(van.Titulo, van.Ponente, van.Fecha);
-
- agendaRepository.Update(agenda);
- }
-
- {
- IAgendaRepository agendaRepository = new AgendaRepository();
-
- Agenda agenda = agendaRepository.Get(vanId);
-
- Assert.IsNotNull(agenda);
- Assert.AreEqual(2, agenda.GetEventosPublicados().Count);
-
- agendaRepository.Delete(agenda);
- }
-
- {
- IAgendaRepository agendaRepository = new AgendaRepository();
-
- Agenda agenda = agendaRepository.Get(vanId);
-
- Assert.IsNull(agenda);
+ Assert.Throws(() => agenda.Publicar(van.Titulo, string.Empty, van.Fecha));
}
}
}
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Tests/PulicarTests.cs
--- a/Agendas/trunk/src/Agendas.Tests/PulicarTests.cs Tue Mar 15 06:57:58 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/PulicarTests.cs Tue Mar 15 07:49:53 2011 -0300
@@ -15,11 +15,9 @@
{
var publicador = new Mock();
- var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, DefaultEventoRepository);
+ var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, DefaultEventoRepository, DefaultPonenteRepository);
- var van = EventoObjectMother.GetVanValidaParaPublicar();
-
- agenda.Publicar(van.Titulo, van.Ponente, van.Fecha);
+ agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now);
Assert.AreEqual(1, agenda.GetEventosPublicados().Count);
publicador.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(1));
@@ -33,11 +31,9 @@
var publicador = new Mock();
var repository = new Mock();
- var agenda = new Agenda(publicador.Object, null, seguridad.Object, repository.Object);
+ var agenda = new Agenda(publicador.Object, null, seguridad.Object, repository.Object, DefaultPonenteRepository);
- var van = EventoObjectMother.GetVanValidaParaPublicar();
-
- Assert.Throws(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha));
+ Assert.Throws(() => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now));
publicador.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(0));
repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(0));
@@ -49,11 +45,9 @@
var publicador = new Mock();
var repository = new Mock();
- var agenda = new Agenda(publicador.Object, null, null, repository.Object);
+ var agenda = new Agenda(publicador.Object, null, null, repository.Object, DefaultPonenteRepository);
- var van = EventoObjectMother.GetVanValidaParaPublicar();
-
- Assert.Throws(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha));
+ Assert.Throws(() => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now));
repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(0));
}
@@ -65,10 +59,9 @@
publicador.Setup(p => p.Publicar(It.IsAny())).Throws(new Exception("Error intencional"));
- var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, repository.Object);
+ var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, repository.Object, DefaultPonenteRepository);
- var van = EventoObjectMother.GetVanValidaParaPublicar();
- Assert.Throws(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha));
+ Assert.Throws(() => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now));
Assert.AreEqual(0, agenda.GetEventosPublicados().Count);
publicador.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(1));
@@ -83,10 +76,9 @@
var repository = new Mock();
- var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), null, SeguridadServiceDefault, repository.Object);
+ var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), null, SeguridadServiceDefault, repository.Object, DefaultPonenteRepository);
- var van = EventoObjectMother.GetVanValidaParaPublicar();
- agenda.Publicar(van.Titulo, van.Ponente, van.Fecha);
+ agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now);
publicador1.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(1));
publicador2.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(1));
@@ -96,24 +88,20 @@
[Test]
public void Publicar_y_recordar_van()
{
- var repository = new Mock();
-
var publicador1 = new Mock();
var publicador2 = new Mock();
var recordador1 = new Mock();
- var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), recordador1.Object, SeguridadServiceDefault, repository.Object);
+ var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), recordador1.Object, SeguridadServiceDefault, DefaultEventoRepository, DefaultPonenteRepository);
- var van = EventoObjectMother.GetVanValidaParaPublicar();
- agenda.Publicar(van.Titulo, van.Ponente, van.Fecha);
+ 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()), Times.Exactly(1));
publicador2.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(1));
recordador1.Verify(r => r.Recordar(It.IsAny()), Times.Exactly(1));
-
- repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(1));
}
[Test]
@@ -121,10 +109,9 @@
{
var repository = DefaultEventoRepository;
- var agenda = new Agenda(null, null, SeguridadServiceDefault, repository);
+ var agenda = new Agenda(null, null, SeguridadServiceDefault, repository, DefaultPonenteRepository);
- var van = EventoObjectMother.GetVanValidaParaPublicar();
- agenda.Publicar(van.Titulo, van.Ponente, van.Fecha);
+ agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now);
var evento = repository.GetEventosConFecha().First();
Assert.AreNotEqual(Guid.Empty, evento.Id);
@@ -135,7 +122,7 @@
evento = repository.GetEventosConFecha().First();
Assert.AreEqual("otro titulo", evento.Titulo);
- Assert.AreEqual("otro ponente", evento.Ponente);
+ Assert.AreEqual("otro ponente", evento.Ponente.Nombre);
Assert.AreEqual(fecha, evento.Fecha);
}
}
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Tests/TestBase.cs
--- a/Agendas/trunk/src/Agendas.Tests/TestBase.cs Tue Mar 15 06:57:58 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/TestBase.cs Tue Mar 15 07:49:53 2011 -0300
@@ -23,14 +23,21 @@
get { return new EventoRepository(); }
}
+ protected static IPonenteRepository DefaultPonenteRepository
+ {
+ get { return new PonenteRepository(); }
+ }
+
[SetUp]
public void LimpiarEventos()
{
- var repository = new EventoRepository();
- foreach (Evento evento in repository.GetEventosConFecha())
- repository.Delete(evento);
- foreach (Evento evento in repository.GetEventosSinFecha())
- repository.Delete(evento);
+ EventoRepository.Clear();
+ }
+
+ [SetUp]
+ public void LimpiarPonentes()
+ {
+ PonenteRepository.Clear();
}
}
}
\ No newline at end of file
diff -r a85674a7aa7a -r 41b283d27e3e Agendas/trunk/src/Agendas.Web/Controllers/AgendaController.cs
--- a/Agendas/trunk/src/Agendas.Web/Controllers/AgendaController.cs Tue Mar 15 06:57:58 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Controllers/AgendaController.cs Tue Mar 15 07:49:53 2011 -0300
@@ -61,7 +61,13 @@
var evento = agenda.GetEventoPublicado(new Guid(id));
if (evento!=null)
{
- var model = new AgendaEditModel {Id = id, Titulo = evento.Titulo, Ponente = evento.Ponente, Fecha = evento.Fecha};
+ var model = new AgendaEditModel
+ {
+ Id = id,
+ Titulo = evento.Titulo,
+ Ponente = evento.Ponente != null ? evento.Ponente.Nombre : string.Empty,
+ Fecha = evento.Fecha
+ };
return View(model);
}
ModelState.AddModelError("error","No se encontró el evento que quiere modificar");