diff Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs @ 20:c5a99dde072f

reorganizando tests
author nelo@MTEySS.neluz.int
date Mon, 14 Mar 2011 20:59:28 -0300
parents
children 43360bf09b1a
line wrap: on
line diff
--- /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<ISeguridad>();
+            var agenda = new Agenda(null, null, seguridad.Object, repository);
+            
+            seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles());
+			agenda.Proponer(van);
+
+			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 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();
+            seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles());
+
+            agenda.Proponer(vanPropuesta);
+            agenda.Publicar(vanPublicada.Titulo, vanPublicada.Ponente, vanPublicada.Fecha);
+
+            IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos();
+            IList<Evento> 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<IEventoRepository>();
+			var van = new Evento();
+
+            var seguridad = new Mock<ISeguridad>();
+            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 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());
+
+			{
+				var van = new Evento {Titulo = "Van propuesta"};
+                agenda.Proponer(van);
+			}
+
+			{
+				var van = agenda.GetEventosPropuestos().FirstOrDefault();
+				Assert.IsNotNull(van);
+                Assert.Throws<ValidationException>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha));
+			}
+		}
+
+		[Test]
+		public void Agendar_van_propuesta_sin_ponente()
+		{
+			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());
+
+			{
+				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<ValidationException>(() => 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