diff Agendas/trunk/src/Agendas.Tests/PonentesTests.cs @ 61:cb3f7b47c1f0

Relación de Ponente a Eventos de los que es el ponente.
author nelopauselli
date Tue, 17 May 2011 01:27:03 -0300
parents 4a4e12e32256
children c7264bfc4b71
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs	Mon May 16 21:40:40 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs	Tue May 17 01:27:03 2011 -0300
@@ -1,4 +1,6 @@
 using System;
+using System.Collections.Generic;
+using System.Linq;
 using AltNetHispano.Agendas.Domain;
 using Moq;
 using NUnit.Framework;
@@ -18,11 +20,20 @@
 			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);
+			var eventos = agenda.GetEventosPublicados();
+			Assert.AreEqual(2, eventos.Count);
 
 			publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(2));
 
 			Assert.AreEqual(1, DefaultPonenteRepository.GetAll().Count);
+
+			var evento = eventos[0];
+
+			Assert.IsNotNull(evento.Ponente);
+			var ponente = evento.Ponente;
+			Assert.IsNotNull(evento.Ponente.Eventos);
+			Assert.Contains(eventos[0], new List<Evento>(ponente.Eventos));
+			Assert.Contains(eventos[1], new List<Evento>(ponente.Eventos));
 		}
 
 		[Test]
@@ -78,6 +89,7 @@
 			Guid eventoId;
 
 			agenda.Proponer(titulo, "Fabio");
+			Ponente ponente;
 			{
 				var eventos = agenda.GetEventosPropuestos();
 				Assert.AreEqual(1, eventos.Count);
@@ -86,6 +98,7 @@
 				Assert.AreEqual("Fabio", evento.Ponente.Nombre);
 
 				eventoId = evento.Id;
+				ponente = evento.Ponente;
 			}
 
 			agenda.ModificarPropuesta(eventoId, titulo, null);
@@ -96,6 +109,44 @@
 				Evento evento = eventos[0];
 				Assert.IsNull(evento.Ponente);
 			}
+
+			Assert.AreEqual(0, ponente.Eventos.Count());
+		}
+
+		[Test]
+		public void Cambiar_ponente_de_un_evento()
+		{
+			var agenda = new Agenda(null, null, DefaultEventoRepository, DefaultPonenteRepository);
+
+			const string titulo = "Audit (parallel model) con NHibernate 3";
+			Guid eventoId;
+
+			agenda.Proponer(titulo, "Fabio");
+			Ponente ponente1;
+			{
+				var eventos = agenda.GetEventosPropuestos();
+				Assert.AreEqual(1, eventos.Count);
+
+				Evento evento = eventos[0];
+				Assert.AreEqual("Fabio", evento.Ponente.Nombre);
+
+				eventoId = evento.Id;
+				ponente1 = evento.Ponente;
+			}
+
+			agenda.ModificarPropuesta(eventoId, titulo, "José");
+			Ponente ponente2;
+			{
+				var eventos = agenda.GetEventosPropuestos();
+				Assert.AreEqual(1, eventos.Count);
+
+				Evento evento = eventos[0];
+				Assert.IsNotNull(evento.Ponente);
+				ponente2 = evento.Ponente;
+			}
+
+			Assert.AreEqual(0, ponente1.Eventos.Count());
+			Assert.AreEqual(1, ponente2.Eventos.Count());
 		}
 	}
 }
\ No newline at end of file