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();