# HG changeset patch # User juanjose.montesdeocaarbos # Date 1313211120 10800 # Node ID bb7a60c28d8dd769019b23b895b4532acd2bbf80 # Parent 4d0b2552edb2fe910f8c8d7cbd1d586645a441c1 TEST: Verificar que no se modifique una propuesta de VAN al intentar agendarla con fechas usadas. diff -r 4d0b2552edb2 -r bb7a60c28d8d Agendas/trunk/src/Agendas.Domain/Agenda.cs --- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Sat Aug 13 01:01:54 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Sat Aug 13 01:52:00 2011 -0300 @@ -105,18 +105,19 @@ Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo); + foreach (var e in _eventosRepository.GetActivos()) + { + if (!e.Equals(evento) && fechaInicio <= e.FechaTermino && fechaTermino >= e.FechaInicio) + { + return new EventoResultado(false, string.Format("El evento que está intentando agendar entra en conflicto con '{0}'", e.Titulo), null); + } + } + if (evento == null) evento = Evento.Agendar(titulo, persona, fechaInicio.Value, fechaTermino.Value, urlInvitacion, tipo); else evento.Agendar(persona, fechaInicio, fechaTermino, urlInvitacion); - foreach (var e in _eventosRepository.GetActivos()) - { - if (!e.Equals(evento) && (evento.FechaInicio <= e.FechaTermino && evento.FechaTermino >= e.FechaInicio)) - { - return new EventoResultado(false, string.Format("El evento que está intentando agendar entra en conflicto con '{0}'", evento.Titulo), null); - } - } Notify(evento); _eventosRepository.Save(evento); diff -r 4d0b2552edb2 -r bb7a60c28d8d Agendas/trunk/src/Agendas.Tests/AgendarTests.cs --- a/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Sat Aug 13 01:01:54 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Sat Aug 13 01:52:00 2011 -0300 @@ -50,7 +50,7 @@ var publicador = new Mock(); var repository = new Mock(); - + repository.Setup(r => r.GetActivos()).Returns(new List()); var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository, DefaultPatrocinadorRepository); var fechaInicio = DateTime.Now.ToUniversalTime(); @@ -69,7 +69,7 @@ var publicador = new Mock(); var repository = new Mock(); - + repository.Setup(r => r.GetActivos()).Returns(new List()); var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository, DefaultPatrocinadorRepository); var fechaInicio = DateTime.Now.ToUniversalTime(); @@ -514,6 +514,34 @@ fechaInicio, fechaTermino, string.Empty, TipoEvento.Van); Assert.IsTrue(r.Succeful); - } + } + + [Test] + public void Verificar_que_no_se_modifique_una_propuesta_de_VAN_al_intentar_agendarla_con_fechas_usadas() + { + var publicador1 = new Mock(); + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, + DefaultPatrocinadorRepository); + var fechaInicio = new DateTime(2011, 7, 1, 18, 00, 00); + var fechaTermino = fechaInicio.AddHours(2); + + agenda.Agendar("Conceptos de HTTP y Fiddler web debugger", TestsHelper.GetOrCreatePonente("jjmontes"), fechaInicio, + fechaTermino, string.Empty, TipoEvento.Van); + + agenda.Proponer("Otra van que se superpone", TestsHelper.GetOrCreatePonente("jjmontes"), string.Empty, TipoEvento.Van); + var eventoPropuesto = DefaultEventoRepository.GetPropuestaByTitulo("Otra van que se superpone"); + Assert.IsNotNull(eventoPropuesto); + Assert.IsNull(eventoPropuesto.FechaInicio); + Assert.IsNull(eventoPropuesto.FechaTermino); + var r = agenda.Agendar("Otra van que se superpone", + TestsHelper.GetOrCreatePonente("jjmontes"), + fechaInicio, + fechaTermino, string.Empty, TipoEvento.Van); + Assert.IsFalse(r.Succeful); + + Assert.IsNotNull(eventoPropuesto); + Assert.IsNull(eventoPropuesto.FechaInicio); + Assert.IsNull(eventoPropuesto.FechaTermino); + } } } \ No newline at end of file