Mercurial > altnet-hispano
diff Agendas/trunk/src/Agendas.Tests/AgendaTests.cs @ 15:08b9e96132a5
Persistimos los eventos de la agenda
author | nelo@MTEySS.neluz.int |
---|---|
date | Mon, 14 Mar 2011 00:14:09 -0300 |
parents | 05996fa19e04 |
children | 9a07d3091a40 |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Tests/AgendaTests.cs Sun Mar 13 20:49:15 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/AgendaTests.cs Mon Mar 14 00:14:09 2011 -0300 @@ -23,12 +23,23 @@ } } + [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<IPublicador>(); + var repository = new EventoRepository(); - var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault); + var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, repository); var van = EventoObjectMother.GetVanValidaParaPublicar(); @@ -41,42 +52,51 @@ [Test] public void Publicar_van_sin_usuario_autenticado() { var seguridad = new Mock<ISeguridad>(); - var publicador = new Mock<IPublicador>(); + seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalSinAutenticar()); - var agenda = new Agenda(publicador.Object, null, seguridad.Object); + var publicador = new Mock<IPublicador>(); + var repository = new Mock<IEventoRepository>(); + + var agenda = new Agenda(publicador.Object, null, seguridad.Object, repository.Object); var van = EventoObjectMother.GetVanValidaParaPublicar(); - seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalSinAutenticar()); + Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); - Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); - } + 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_van_sin_servicio_de_seguridad() { var publicador = new Mock<IPublicador>(); + var repository = new Mock<IEventoRepository>(); - var agenda = new Agenda(publicador.Object, null, null); + var agenda = new Agenda(publicador.Object, null, null, repository.Object); var van = EventoObjectMother.GetVanValidaParaPublicar(); Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); - } + repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); + } [Test] public void Error_al_publicar_van() { var publicador = new Mock<IPublicador>(); + var repository = new Mock<IEventoRepository>(); + publicador.Setup(p => p.Publicar(It.IsAny<Evento>())).Throws(new Exception("Error intencional")); - var agenda = new Agenda(publicador.Object, null, null); + var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, repository.Object); var van = EventoObjectMother.GetVanValidaParaPublicar(); Assert.Throws<Exception>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); Assert.AreEqual(0, agenda.GetEventosPublicados().Count); publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); + repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); } [Test] @@ -85,23 +105,28 @@ var publicador1 = new Mock<IPublicador>(); var publicador2 = new Mock<IPublicador>(); - var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), null, SeguridadServiceDefault); + var repository = new Mock<IEventoRepository>(); + + 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<Evento>()), Times.Exactly(1)); publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); + repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(1)); } [Test] public void Publicar_y_recordar_van() { + var repository = new Mock<IEventoRepository>(); + var publicador1 = new Mock<IPublicador>(); var publicador2 = new Mock<IPublicador>(); var recordador1 = new Mock<IRecordador>(); - var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), recordador1.Object, SeguridadServiceDefault); + 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); @@ -112,16 +137,18 @@ publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); recordador1.Verify(r => r.Recordar(It.IsAny<Evento>()), Times.Exactly(1)); - Assert.AreEqual(1, agenda.GetEventosPublicados().Count); + repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(1)); } [Test] public void Propuesta_de_van_con_usuario_autenticado() { - var van = new Evento{Titulo = "Van propuesta"}; + var repository = new EventoRepository(); + + var van = new Evento { Titulo = "Van propuesta" }; var seguridad = new Mock<ISeguridad>(); - var agenda = new Agenda(null, null, seguridad.Object); + var agenda = new Agenda(null, null, seguridad.Object, repository); seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); agenda.Proponer(van); @@ -135,8 +162,8 @@ [Test] public void Verificar_propuesta_separada_de_publicacion() { - var seguridad = new Mock<ISeguridad>(); - var agenda = new Agenda(null, null, seguridad.Object); + var seguridad = new Mock<ISeguridad>(); + var agenda = new Agenda(null, null, seguridad.Object, new EventoRepository()); var vanPropuesta = new Evento { Titulo = "Van propuesta" }; var vanPublicada = EventoObjectMother.GetVanValidaParaPublicar(); @@ -150,25 +177,30 @@ Assert.AreEqual(1, eventosPropuestos.Count); Assert.AreEqual(1, eventosPublicados.Count); - } + } [Test] public void Propuesta_de_van_sin_titulo() { + var repository = new Mock<IEventoRepository>(); var van = new Evento(); var seguridad = new Mock<ISeguridad>(); - var agenda = new Agenda(null, null, seguridad.Object); + var agenda = new Agenda(null, null, seguridad.Object, repository.Object); Assert.Throws<ValidationException>(() => agenda.Proponer(van)); Assert.AreEqual(Guid.Empty, van.Id); + + repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); } [Test] public void Agendar_van_propuesta_sin_fecha() { - var seguridad = new Mock<ISeguridad>(); - var agenda = new Agenda(null, null, seguridad.Object); + var repository = new EventoRepository(); + + var seguridad = new Mock<ISeguridad>(); + var agenda = new Agenda(null, null, seguridad.Object, repository); seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); @@ -187,8 +219,10 @@ [Test] public void Agendar_van_propuesta_sin_ponente() { - var seguridad = new Mock<ISeguridad>(); - var agenda = new Agenda(null, null, seguridad.Object); + var repository = new EventoRepository(); + + var seguridad = new Mock<ISeguridad>(); + var agenda = new Agenda(null, null, seguridad.Object, repository); seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); @@ -209,11 +243,11 @@ [Test] public void Van_crud() { - var van = EventoObjectMother.GetVanValidaParaPublicar(); + var van = EventoObjectMother.GetVanValidaParaPublicar(); Guid vanId; { - var agenda = new Agenda(null, null, SeguridadServiceDefault); + var agenda = new Agenda(null, null, SeguridadServiceDefault, new EventoRepository()); agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); IAgendaRepository agendaRepository = new AgendaRepository();