# HG changeset patch # User nelo@MTEySS.neluz.int # Date 1300147168 10800 # Node ID c5a99dde072fb5cfe8a99666db36958f5d515e8f # Parent 74eb4577d4475759a35c950bab230e0f862518ac reorganizando tests diff -r 74eb4577d447 -r c5a99dde072f Agendas/trunk/src/Agendas.Tests/AgendaTests.cs --- a/Agendas/trunk/src/Agendas.Tests/AgendaTests.cs Mon Mar 14 00:35:43 2011 -0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,313 +0,0 @@ -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; -using Moq; -using NUnit.Framework; - -namespace AltNetHispano.Agendas.Tests -{ - [TestFixture] - public class AgendaTests - { - private static ISeguridad SeguridadServiceDefault - { - get - { - var seguridad = new Mock(); - seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); - return seguridad.Object; - } - } - - [SetUp] - public void LimpiarEventos() - { - var repository = new EventoRepository(); - foreach (var evento in repository.GetEventosConFecha()) - repository.Delete(evento); - foreach (var evento in repository.GetEventosSinFecha()) - repository.Delete(evento); - } - - [Test] - public void Publicar_van_con_usuario_autenticado() - { - var publicador = new Mock(); - var repository = new EventoRepository(); - - var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, repository); - - var van = EventoObjectMother.GetVanValidaParaPublicar(); - - agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); - Assert.AreEqual(1, agenda.GetEventosPublicados().Count); - - publicador.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(1)); - } - - [Test] - public void Publicar_van_sin_usuario_autenticado() { - var seguridad = new Mock(); - seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalSinAutenticar()); - - var publicador = new Mock(); - var repository = new Mock(); - - var agenda = new Agenda(publicador.Object, null, seguridad.Object, repository.Object); - - var van = EventoObjectMother.GetVanValidaParaPublicar(); - - Assert.Throws(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); - - publicador.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(0)); - repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(0)); - } - - [Test] - public void Publicar_van_sin_servicio_de_seguridad() - { - var publicador = new Mock(); - var repository = new Mock(); - - var agenda = new Agenda(publicador.Object, null, null, repository.Object); - - var van = EventoObjectMother.GetVanValidaParaPublicar(); - - Assert.Throws(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); - repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(0)); - } - - [Test] - public void Error_al_publicar_van() - { - var publicador = new Mock(); - var repository = new Mock(); - - publicador.Setup(p => p.Publicar(It.IsAny())).Throws(new Exception("Error intencional")); - - var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, repository.Object); - - var van = EventoObjectMother.GetVanValidaParaPublicar(); - Assert.Throws(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); - Assert.AreEqual(0, agenda.GetEventosPublicados().Count); - - publicador.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(1)); - repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(0)); - } - - [Test] - public void Publicar_van_multiples_publicadores() - { - var publicador1 = new Mock(); - var publicador2 = new Mock(); - - var repository = new Mock(); - - var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), null, SeguridadServiceDefault, repository.Object); - - var van = EventoObjectMother.GetVanValidaParaPublicar(); - agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); - - publicador1.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(1)); - publicador2.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(1)); - repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(1)); - } - - [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 van = EventoObjectMother.GetVanValidaParaPublicar(); - agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); - - agenda.Recordar(van); - - 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] - public void Publicar_y_modificar_van() - { - var repository = new EventoRepository(); - - var agenda = new Agenda(null, null, SeguridadServiceDefault, repository); - - var van = EventoObjectMother.GetVanValidaParaPublicar(); - agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); - - var evento = repository.GetEventosConFecha().First(); - Assert.AreNotEqual(Guid.Empty, evento.Id); - - DateTime fecha = evento.Fecha.Value.AddDays(7); - agenda.ModificarEvento(evento.Id, "otro titulo", "otro ponente", fecha); - - evento = repository.GetEventosConFecha().First(); - Assert.AreEqual("otro titulo", evento.Titulo); - Assert.AreEqual("otro ponente", evento.Ponente); - Assert.AreEqual(fecha, evento.Fecha); - } - - [Test] - public void Propuesta_de_van_con_usuario_autenticado() - { - var repository = new EventoRepository(); - - var van = new Evento { Titulo = "Van propuesta" }; - - var seguridad = new Mock(); - var agenda = new Agenda(null, null, seguridad.Object, repository); - - seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); - agenda.Proponer(van); - - IList 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 seguridad = new Mock(); - var agenda = new Agenda(null, null, seguridad.Object, new EventoRepository()); - - var vanPropuesta = new Evento { Titulo = "Van propuesta" }; - var vanPublicada = EventoObjectMother.GetVanValidaParaPublicar(); - seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); - - agenda.Proponer(vanPropuesta); - agenda.Publicar(vanPublicada.Titulo, vanPublicada.Ponente, vanPublicada.Fecha); - - IList eventosPropuestos = agenda.GetEventosPropuestos(); - IList eventosPublicados = agenda.GetEventosPublicados(); - - Assert.AreEqual(1, eventosPropuestos.Count); - Assert.AreEqual(1, eventosPublicados.Count); - } - - [Test] - public void Propuesta_de_van_sin_titulo() - { - var repository = new Mock(); - var van = new Evento(); - - var seguridad = new Mock(); - var agenda = new Agenda(null, null, seguridad.Object, repository.Object); - - Assert.Throws(() => agenda.Proponer(van)); - Assert.AreEqual(Guid.Empty, van.Id); - - repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(0)); - } - - [Test] - public void Agendar_van_propuesta_sin_fecha() - { - var repository = new EventoRepository(); - - var seguridad = new Mock(); - var agenda = new Agenda(null, null, seguridad.Object, repository); - - seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); - - { - var van = new Evento {Titulo = "Van propuesta"}; - agenda.Proponer(van); - } - - { - var van = agenda.GetEventosPropuestos().FirstOrDefault(); - Assert.IsNotNull(van); - Assert.Throws(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); - } - } - - [Test] - public void Agendar_van_propuesta_sin_ponente() - { - var repository = new EventoRepository(); - - var seguridad = new Mock(); - var agenda = new Agenda(null, null, seguridad.Object, repository); - - seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); - - { - var van = new Evento { Titulo = "Van propuesta" }; - agenda.Proponer(van); - } - - { - var van = agenda.GetEventosPropuestos().FirstOrDefault(); - 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); - } - } - } -} \ No newline at end of file diff -r 74eb4577d447 -r c5a99dde072f Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj --- a/Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj Mon Mar 14 00:35:43 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj Mon Mar 14 20:59:28 2011 -0300 @@ -46,11 +46,13 @@ - + + + diff -r 74eb4577d447 -r c5a99dde072f Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Mon Mar 14 20:59:28 2011 -0300 @@ -0,0 +1,164 @@ +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; +using Moq; +using NUnit.Framework; + +namespace AltNetHispano.Agendas.Tests +{ + [TestFixture] + public class PropuestasTests : TestBase + { + [Test] + public void Propuesta_de_van_con_usuario_autenticado() + { + var repository = new EventoRepository(); + + var van = new Evento { Titulo = "Van propuesta" }; + + var seguridad = new Mock(); + var agenda = new Agenda(null, null, seguridad.Object, repository); + + seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); + agenda.Proponer(van); + + IList 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 seguridad = new Mock(); + var agenda = new Agenda(null, null, seguridad.Object, new EventoRepository()); + + var vanPropuesta = new Evento { Titulo = "Van propuesta" }; + var vanPublicada = EventoObjectMother.GetVanValidaParaPublicar(); + seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); + + agenda.Proponer(vanPropuesta); + agenda.Publicar(vanPublicada.Titulo, vanPublicada.Ponente, vanPublicada.Fecha); + + IList eventosPropuestos = agenda.GetEventosPropuestos(); + IList eventosPublicados = agenda.GetEventosPublicados(); + + Assert.AreEqual(1, eventosPropuestos.Count); + Assert.AreEqual(1, eventosPublicados.Count); + } + + [Test] + public void Propuesta_de_van_sin_titulo() + { + var repository = new Mock(); + var van = new Evento(); + + var seguridad = new Mock(); + var agenda = new Agenda(null, null, seguridad.Object, repository.Object); + + Assert.Throws(() => agenda.Proponer(van)); + Assert.AreEqual(Guid.Empty, van.Id); + + repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(0)); + } + + [Test] + public void Agendar_van_propuesta_sin_fecha() + { + var repository = new EventoRepository(); + + var seguridad = new Mock(); + var agenda = new Agenda(null, null, seguridad.Object, repository); + + seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); + + { + var van = new Evento {Titulo = "Van propuesta"}; + agenda.Proponer(van); + } + + { + var van = agenda.GetEventosPropuestos().FirstOrDefault(); + Assert.IsNotNull(van); + Assert.Throws(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); + } + } + + [Test] + public void Agendar_van_propuesta_sin_ponente() + { + var repository = new EventoRepository(); + + var seguridad = new Mock(); + var agenda = new Agenda(null, null, seguridad.Object, repository); + + seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); + + { + var van = new Evento { Titulo = "Van propuesta" }; + agenda.Proponer(van); + } + + { + var van = agenda.GetEventosPropuestos().FirstOrDefault(); + 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); + } + } + } +} \ No newline at end of file diff -r 74eb4577d447 -r c5a99dde072f Agendas/trunk/src/Agendas.Tests/PulicarTests.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Tests/PulicarTests.cs Mon Mar 14 20:59:28 2011 -0300 @@ -0,0 +1,143 @@ +using System; +using System.Linq; +using Agendas.Repositories.Memory; +using AltNetHispano.Agendas.Domain; +using AltNetHispano.Agendas.Domain.Repositories; +using Moq; +using NUnit.Framework; + +namespace AltNetHispano.Agendas.Tests +{ + [TestFixture] + public class PulicarTests : TestBase + { + [Test] + public void Publicar_van_con_usuario_autenticado() + { + var publicador = new Mock(); + var repository = new EventoRepository(); + + var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, repository); + + var van = EventoObjectMother.GetVanValidaParaPublicar(); + + agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); + Assert.AreEqual(1, agenda.GetEventosPublicados().Count); + + publicador.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(1)); + } + + [Test] + public void Publicar_van_sin_usuario_autenticado() { + var seguridad = new Mock(); + seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalSinAutenticar()); + + var publicador = new Mock(); + var repository = new Mock(); + + var agenda = new Agenda(publicador.Object, null, seguridad.Object, repository.Object); + + var van = EventoObjectMother.GetVanValidaParaPublicar(); + + Assert.Throws(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); + + publicador.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(0)); + repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(0)); + } + + [Test] + public void Publicar_van_sin_servicio_de_seguridad() + { + var publicador = new Mock(); + var repository = new Mock(); + + var agenda = new Agenda(publicador.Object, null, null, repository.Object); + + var van = EventoObjectMother.GetVanValidaParaPublicar(); + + Assert.Throws(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); + repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(0)); + } + + [Test] + public void Error_al_publicar_van() + { + var publicador = new Mock(); + var repository = new Mock(); + + publicador.Setup(p => p.Publicar(It.IsAny())).Throws(new Exception("Error intencional")); + + var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, repository.Object); + + var van = EventoObjectMother.GetVanValidaParaPublicar(); + Assert.Throws(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); + Assert.AreEqual(0, agenda.GetEventosPublicados().Count); + + publicador.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(1)); + repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(0)); + } + + [Test] + public void Publicar_van_multiples_publicadores() + { + var publicador1 = new Mock(); + var publicador2 = new Mock(); + + var repository = new Mock(); + + var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), null, SeguridadServiceDefault, repository.Object); + + var van = EventoObjectMother.GetVanValidaParaPublicar(); + agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); + + publicador1.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(1)); + publicador2.Verify(p => p.Publicar(It.IsAny()), Times.Exactly(1)); + repository.Verify(p => p.Save(It.IsAny()), Times.Exactly(1)); + } + + [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 van = EventoObjectMother.GetVanValidaParaPublicar(); + agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); + + agenda.Recordar(van); + + 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] + public void Publicar_y_modificar_van() + { + var repository = new EventoRepository(); + + var agenda = new Agenda(null, null, SeguridadServiceDefault, repository); + + var van = EventoObjectMother.GetVanValidaParaPublicar(); + agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); + + var evento = repository.GetEventosConFecha().First(); + Assert.AreNotEqual(Guid.Empty, evento.Id); + + DateTime fecha = evento.Fecha.Value.AddDays(7); + agenda.ModificarEvento(evento.Id, "otro titulo", "otro ponente", fecha); + + evento = repository.GetEventosConFecha().First(); + Assert.AreEqual("otro titulo", evento.Titulo); + Assert.AreEqual("otro ponente", evento.Ponente); + Assert.AreEqual(fecha, evento.Fecha); + } + } +} \ No newline at end of file diff -r 74eb4577d447 -r c5a99dde072f Agendas/trunk/src/Agendas.Tests/TestBase.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Tests/TestBase.cs Mon Mar 14 20:59:28 2011 -0300 @@ -0,0 +1,31 @@ +using Agendas.Repositories.Memory; +using AltNetHispano.Agendas.Domain; +using Moq; +using NUnit.Framework; + +namespace AltNetHispano.Agendas.Tests +{ + public class TestBase + { + protected static ISeguridad SeguridadServiceDefault + { + get + { + var seguridad = new Mock(); + seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); + return seguridad.Object; + } + } + + [SetUp] + public void LimpiarEventos() + { + var repository = new EventoRepository(); + foreach (var evento in repository.GetEventosConFecha()) + repository.Delete(evento); + foreach (var evento in repository.GetEventosSinFecha()) + repository.Delete(evento); + } + + } +} \ No newline at end of file