Mercurial > altnet-hispano
diff Agendas/trunk/src/Agendas.Tests/AgendaTests.cs @ 4:49b572535156
proponer van
publicar van propuesta
comportamiento ante excepcion en publicador
author | nelopauselli |
---|---|
date | Tue, 08 Feb 2011 00:08:49 -0300 |
parents | 5f007e266509 |
children | 2912c1dd0e6b |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Tests/AgendaTests.cs Sat Jan 22 20:23:50 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/AgendaTests.cs Tue Feb 08 00:08:49 2011 -0300 @@ -1,7 +1,9 @@ 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; @@ -18,7 +20,7 @@ var agenda = new Agenda(publicador.Object, null); - var cafe = new Cafe(); + var cafe = EventoObjectMother.GetCafeValidoParaPublicar(); agenda.Publicar(cafe); publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); @@ -31,13 +33,31 @@ var agenda = new Agenda(publicador.Object, null); - var van = new Van(); + var van = EventoObjectMother.GetVanValidaParaPublicar(); + agenda.Publicar(van); + Assert.AreEqual(1, agenda.Eventos.Count()); publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); } [Test] + public void Error_al_publicar_van() + { + var publicador = new Mock<IPublicador>(); + publicador.Setup(p => p.Publicar(It.IsAny<Evento>())).Throws(new Exception("Error intencional")); + + var agenda = new Agenda(publicador.Object, null); + + var van = EventoObjectMother.GetVanValidaParaPublicar(); + Assert.Throws<Exception>(() => agenda.Publicar(van)); + Assert.AreEqual(0, agenda.Eventos.Count()); + + publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); + } + + + [Test] public void Publicar_van_multiples_publicadores() { var publicador1 = new Mock<IPublicador>(); @@ -45,8 +65,8 @@ var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), null); - var cafe = new Cafe(); - agenda.Publicar(cafe); + var van = EventoObjectMother.GetVanValidaParaPublicar(); + agenda.Publicar(van); publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); @@ -61,7 +81,7 @@ var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), recordador1.Object); - var van = new Van(); + var van = EventoObjectMother.GetVanValidaParaPublicar(); agenda.Publicar(van); agenda.Recordar(van); @@ -74,12 +94,74 @@ } [Test] + public void Propuesta_de_van() + { + var van = new Van{Titulo = "Van propuesta"}; + + var agenda = new Agenda(null, null); + 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 Propuesta_de_van_sin_titulo() + { + var van = new Van(); + + var agenda = new Agenda(null, null); + Assert.Throws<ValidationException>(() => agenda.Proponer(van)); + Assert.AreEqual(Guid.Empty, van.Id); + } + + + [Test] + public void Agendar_van_propuesta_sin_fecha() + { + var agenda = new Agenda(null, null); + + { + var van = new Van {Titulo = "Van propuesta"}; + agenda.Proponer(van); + } + + { + var van = agenda.GetEventosPropuestos().FirstOrDefault(); + Assert.IsNotNull(van); + Assert.Throws<ValidationException>(()=>agenda.Publicar(van)); + } + } + + [Test] + public void Agendar_van_propuesta_sin_ponente() + { + var agenda = new Agenda(null, null); + + { + var van = new Van { Titulo = "Van propuesta" }; + agenda.Proponer(van); + } + + { + var van = agenda.GetEventosPropuestos().FirstOrDefault() as Van; + Assert.IsNotNull(van); + + van.Fecha = DateTime.Today.AddDays(5); + Assert.Throws<ValidationException>(() => agenda.Publicar(van)); + } + } + + + [Test] public void Van_crud() { Guid vanId; { var agenda = new Agenda(null, null); - agenda.Publicar(new Van()); + agenda.Publicar(EventoObjectMother.GetVanValidaParaPublicar()); IAgendaRepository agendaRepository = new AgendaRepository(); @@ -94,7 +176,7 @@ Assert.IsNotNull(agenda); Assert.AreEqual(1, agenda.Eventos.Count()); - agenda.Publicar(new Cafe()); + agenda.Publicar(EventoObjectMother.GetCafeValidoParaPublicar()); agendaRepository.Update(agenda); }