comparison Agendas/trunk/src/Agendas.Tests/AgendarTests.cs @ 118:b74734a1a755

Manejo de eventos por estado
author Nelo@Kenia.neluz.int
date Wed, 22 Jun 2011 09:32:59 -0300
parents 80c22175c9b5
children 8fa58a79656a
comparison
equal deleted inserted replaced
117:7ef7e4bb71f6 118:b74734a1a755
30 publicador.Setup(p => p.Publicar(It.IsAny<IEnumerable<Track>>())).Throws(new Exception("Error intencional")); 30 publicador.Setup(p => p.Publicar(It.IsAny<IEnumerable<Track>>())).Throws(new Exception("Error intencional"));
31 31
32 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository); 32 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository);
33 33
34 Assert.Throws<Exception>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van)); 34 Assert.Throws<Exception>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van));
35 Assert.AreEqual(0, agenda.GetEventosAgendados().Count); 35 Assert.AreEqual(0, agenda.GetEventosActivos().Count);
36 36
37 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); 37 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
38 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); 38 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
39 } 39 }
40 40
109 var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository); 109 var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository);
110 110
111 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 111 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
112 urlInvitacion, TipoEvento.Van); 112 urlInvitacion, TipoEvento.Van);
113 113
114 Assert.AreEqual(0, agenda.GetEventosPropuestos().Count); 114 Assert.AreEqual(0, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count);
115 115
116 var eventos = agenda.GetEventosAgendados(); 116 var eventos = agenda.GetEventosActivos();
117 Assert.AreEqual(1, eventos.Count); 117 Assert.AreEqual(1, eventos.Count);
118 118
119 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); 119 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
120 120
121 var evento = eventos[0]; 121 var evento = eventos[0];
134 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 134 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
135 urlInvitacion, TipoEvento.Van); 135 urlInvitacion, TipoEvento.Van);
136 136
137 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); 137 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
138 138
139 var evento = repository.GetEventosConFecha().First(); 139 var evento = repository.GetActivos().First();
140 Assert.AreNotEqual(Guid.Empty, evento.Id); 140 Assert.AreNotEqual(Guid.Empty, evento.Id);
141 Assert.IsNotNull(evento.Fecha); 141 Assert.IsNotNull(evento.Fecha);
142 142
143 DateTime fecha = evento.Fecha.Value.AddDays(7); 143 DateTime fecha = evento.Fecha.Value.AddDays(7);
144 agenda.ModificarEvento(evento.Id, "otro titulo", "otro ponente", fecha, urlInvitacion); 144 agenda.ModificarEvento(evento.Id, "otro titulo", "otro ponente", fecha, urlInvitacion);
145 145
146 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2)); 146 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2));
147 147
148 evento = repository.GetEventosConFecha().First(); 148 evento = repository.GetActivos().First();
149 Assert.AreEqual("otro titulo", evento.Titulo); 149 Assert.AreEqual("otro titulo", evento.Titulo);
150 Assert.AreEqual("otro ponente", evento.Ponente.Nombre); 150 Assert.AreEqual("otro ponente", evento.Ponente.Nombre);
151 Assert.AreEqual(fecha, evento.Fecha); 151 Assert.AreEqual(fecha, evento.Fecha);
152 152
153 var idEventoNoExistente = new Guid("99999999999999999999999999999999"); 153 var idEventoNoExistente = new Guid("99999999999999999999999999999999");
165 DefaultEventoRepository, DefaultPersonaRepository); 165 DefaultEventoRepository, DefaultPersonaRepository);
166 166
167 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 167 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
168 urlInvitacion, TipoEvento.Van); 168 urlInvitacion, TipoEvento.Van);
169 169
170 var van = agenda.GetEventosAgendados().Single(v => v.Titulo == "Van para publicar"); 170 var van = agenda.GetEventosActivos().Single(v => v.Titulo == "Van para publicar");
171 //agenda.Recordar(van.Id); 171 //agenda.Recordar(van.Id);
172 172
173 publicador1.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); 173 publicador1.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
174 publicador2.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); 174 publicador2.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
175 //recordador1.Verify(r => r.Recordar(It.IsAny<Evento>()), Times.Exactly(1)); 175 //recordador1.Verify(r => r.Recordar(It.IsAny<Evento>()), Times.Exactly(1));
182 var publicador2 = new Mock<IPublicador>(); 182 var publicador2 = new Mock<IPublicador>();
183 183
184 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), 184 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }),
185 DefaultEventoRepository, DefaultPersonaRepository); 185 DefaultEventoRepository, DefaultPersonaRepository);
186 186
187 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); 187 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
188 Assert.AreEqual(1, agenda.GetEventosPropuestos().Count); 188 Assert.AreEqual(1, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count);
189 Assert.AreEqual(0, agenda.GetEventosAgendados().Count); 189 Assert.AreEqual(1, agenda.GetEventosActivos().Count);
190 190
191 var publicado = agenda.GetEventosPropuestos().First(); 191 var publicado = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).First();
192 Assert.AreEqual(1, publicado.Tracks.Count()); 192 Assert.AreEqual(1, publicado.Tracks.Count());
193 193
194 agenda.ModificarEvento(publicado.Id, "Html 5", "jjmontes", DateTime.Today.AddDays(5), urlInvitacion); 194 agenda.ModificarEvento(publicado.Id, "Html 5", "jjmontes", DateTime.Today.AddDays(5), urlInvitacion);
195 Assert.AreEqual(0, agenda.GetEventosPropuestos().Count); 195 Assert.AreEqual(0, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count);
196 Assert.AreEqual(1, agenda.GetEventosAgendados().Count); 196 Assert.AreEqual(1, agenda.GetEventosActivos(EventoAgendadoState.GetInstance()).Count);
197 197 Assert.AreEqual(1, agenda.GetEventosActivos().Count);
198 var agendado = agenda.GetEventosAgendados().First(); 198
199 var agendado = agenda.GetEventosActivos().First();
199 Assert.AreSame(publicado, agendado); 200 Assert.AreSame(publicado, agendado);
200 Assert.AreEqual(2, agendado.Tracks.Count()); 201 Assert.AreEqual(2, agendado.Tracks.Count());
201 202
202 Assert.IsNotNull(agendado.Tracks.Where(t => t.Accion == Accion.Proponer).SingleOrDefault()); 203 Assert.IsNotNull(agendado.Tracks.Where(t => t.Accion == Accion.Proponer).SingleOrDefault());
203 Assert.IsNotNull(agendado.Tracks.Where(t => t.Accion == Accion.Agendar).SingleOrDefault()); 204 Assert.IsNotNull(agendado.Tracks.Where(t => t.Accion == Accion.Agendar).SingleOrDefault());
209 var publicador1 = new Mock<IPublicador>(); 210 var publicador1 = new Mock<IPublicador>();
210 211
211 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 212 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
212 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); 213 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
213 214
214 var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5"); 215 var evento =
216 DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5");
215 217
216 Assert.IsInstanceOf(typeof(EventoPropuestoState), evento.GetEstado()); 218 Assert.IsInstanceOf(typeof(EventoPropuestoState), evento.GetEstado());
217 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Proponer) == 1); 219 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Proponer) == 1);
218 } 220 }
219 221
223 var publicador1 = new Mock<IPublicador>(); 225 var publicador1 = new Mock<IPublicador>();
224 226
225 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 227 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
226 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); 228 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
227 229
228 var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5"); 230 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
229 231
230 Assert.IsInstanceOf(typeof(EventoAgendadoState), evento.GetEstado()); 232 Assert.IsInstanceOf(typeof(EventoAgendadoState), evento.GetEstado());
231 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Agendar) == 1); 233 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Agendar) == 1);
232 } 234 }
233 235
237 var publicador1 = new Mock<IPublicador>(); 239 var publicador1 = new Mock<IPublicador>();
238 240
239 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 241 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
240 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); 242 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
241 243
242 var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5"); 244 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
243 245
244 agenda.Confirmar(evento.Id); 246 agenda.Confirmar(evento.Id);
245 247
246 Assert.IsInstanceOf(typeof(EventoConfirmadoState), evento.GetEstado()); 248 Assert.IsInstanceOf(typeof(EventoConfirmadoState), evento.GetEstado());
247 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Confirmar) == 1); 249 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Confirmar) == 1);
253 var publicador1 = new Mock<IPublicador>(); 255 var publicador1 = new Mock<IPublicador>();
254 256
255 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 257 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
256 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); 258 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
257 259
258 var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5"); 260 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
259 261
260 agenda.Confirmar(evento.Id); 262 agenda.Confirmar(evento.Id);
261 agenda.Publicar(evento.Id, 0, string.Empty); 263 agenda.Publicar(evento.Id, 0, string.Empty);
262 264
263 Assert.IsInstanceOf(typeof(EventoPublicadoState), evento.GetEstado()); 265 Assert.IsInstanceOf(typeof(EventoPublicadoState), evento.GetEstado());
270 var publicador1 = new Mock<IPublicador>(); 272 var publicador1 = new Mock<IPublicador>();
271 273
272 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 274 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
273 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); 275 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
274 276
275 var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5"); 277 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
276 agenda.Confirmar(evento.Id); 278 agenda.Confirmar(evento.Id);
277 279
278 const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx"; 280 const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx";
279 agenda.Publicar(evento.Id, 71, urlWiki); 281 agenda.Publicar(evento.Id, 71, urlWiki);
280 282
289 var publicador1 = new Mock<IPublicador>(); 291 var publicador1 = new Mock<IPublicador>();
290 292
291 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 293 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
292 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); 294 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
293 295
294 var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5"); 296 var evento =
297 DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5");
295 298
296 Assert.IsFalse(evento.Estado.GetType() == typeof(EventoAgendadoState)); 299 Assert.IsFalse(evento.Estado.GetType() == typeof(EventoAgendadoState));
297 300
298 agenda.Confirmar(evento.Id); 301 agenda.Confirmar(evento.Id);
299 } 302 }
305 var publicador1 = new Mock<IPublicador>(); 308 var publicador1 = new Mock<IPublicador>();
306 309
307 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 310 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
308 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); 311 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
309 312
310 var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5"); 313 var evento =
314 DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5");
311 315
312 Assert.IsFalse(evento.Estado.GetType() == typeof(EventoConfirmadoState)); 316 Assert.IsFalse(evento.Estado.GetType() == typeof(EventoConfirmadoState));
313 317
314 agenda.Publicar(evento.Id, 0, string.Empty); 318 agenda.Publicar(evento.Id, 0, string.Empty);
315 } 319 }