comparison Agendas/trunk/src/Agendas.Tests/AgendarTests.cs @ 138:62791999ad01

Agregando relaciĆ³n entre Evento y Patrocinador
author nelopauselli
date Thu, 28 Jul 2011 10:13:28 -0300
parents 6f1041301797
children 3639803112c6
comparison
equal deleted inserted replaced
137:2d1adbaf0373 138:62791999ad01
27 var publicador = new Mock<IPublicador>(); 27 var publicador = new Mock<IPublicador>();
28 var repository = new Mock<IEventoRepository>(); 28 var repository = new Mock<IEventoRepository>();
29 29
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, DefaultPatrocinadorRepository);
33 33
34 Assert.Throws<Exception>( 34 Assert.Throws<Exception>(
35 () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van)); 35 () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van));
36 Assert.AreEqual(0, agenda.GetEventosActivos().Count); 36 Assert.AreEqual(0, agenda.GetEventosActivos().Count);
37 37
45 IdentityContext.Init(null, new PersonaRepository()); 45 IdentityContext.Init(null, new PersonaRepository());
46 46
47 var publicador = new Mock<IPublicador>(); 47 var publicador = new Mock<IPublicador>();
48 var repository = new Mock<IEventoRepository>(); 48 var repository = new Mock<IEventoRepository>();
49 49
50 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository); 50 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository, DefaultPatrocinadorRepository);
51 51
52 Assert.Throws<IdentityContextNotConfiguredException>( 52 Assert.Throws<IdentityContextNotConfiguredException>(
53 () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 53 () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
54 urlInvitacion, TipoEvento.Van)); 54 urlInvitacion, TipoEvento.Van));
55 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); 55 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
61 SetCurrentUser(null, null); 61 SetCurrentUser(null, null);
62 62
63 var publicador = new Mock<IPublicador>(); 63 var publicador = new Mock<IPublicador>();
64 var repository = new Mock<IEventoRepository>(); 64 var repository = new Mock<IEventoRepository>();
65 65
66 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository); 66 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository, DefaultPatrocinadorRepository);
67 67
68 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 68 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
69 urlInvitacion, TipoEvento.Van)); 69 urlInvitacion, TipoEvento.Van));
70 70
71 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(0)); 71 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(0));
73 } 73 }
74 74
75 [Test] 75 [Test]
76 public void Intentar_agendar_evento_sin_ponente() 76 public void Intentar_agendar_evento_sin_ponente()
77 { 77 {
78 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); 78 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
79 79
80 var r = agenda.Agendar("Van para publicar", string.Empty, DateTime.Now, 80 var r = agenda.Agendar("Van para publicar", string.Empty, DateTime.Now,
81 urlInvitacion, TipoEvento.Van); 81 urlInvitacion, TipoEvento.Van);
82 82
83 Assert.IsFalse(r.Succeful); 83 Assert.IsFalse(r.Succeful);
90 var publicador2 = new Mock<IPublicador>(); 90 var publicador2 = new Mock<IPublicador>();
91 91
92 var repository = new Mock<IEventoRepository>(); 92 var repository = new Mock<IEventoRepository>();
93 93
94 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), 94 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }),
95 repository.Object, DefaultPersonaRepository); 95 repository.Object, DefaultPersonaRepository, DefaultPatrocinadorRepository);
96 96
97 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 97 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
98 urlInvitacion, TipoEvento.Van); 98 urlInvitacion, TipoEvento.Van);
99 99
100 publicador1.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); 100 publicador1.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
105 [Test] 105 [Test]
106 public void Agendar_evento_correctamente() 106 public void Agendar_evento_correctamente()
107 { 107 {
108 var publicador = new Mock<IPublicador>(); 108 var publicador = new Mock<IPublicador>();
109 109
110 var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository); 110 var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
111 111
112 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 112 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
113 urlInvitacion, TipoEvento.Van); 113 urlInvitacion, TipoEvento.Van);
114 114
115 Assert.AreEqual(0, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count); 115 Assert.AreEqual(0, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count);
128 public void Agendar_y_modificar_evento() 128 public void Agendar_y_modificar_evento()
129 { 129 {
130 var repository = DefaultEventoRepository; 130 var repository = DefaultEventoRepository;
131 var publicador = new Mock<IPublicador>(); 131 var publicador = new Mock<IPublicador>();
132 132
133 var agenda = new Agenda(publicador.Object, repository, DefaultPersonaRepository); 133 var agenda = new Agenda(publicador.Object, repository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
134 134
135 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 135 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
136 urlInvitacion, TipoEvento.Van); 136 urlInvitacion, TipoEvento.Van);
137 137
138 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); 138 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
161 { 161 {
162 var publicador1 = new Mock<IPublicador>(); 162 var publicador1 = new Mock<IPublicador>();
163 var publicador2 = new Mock<IPublicador>(); 163 var publicador2 = new Mock<IPublicador>();
164 164
165 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), 165 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }),
166 DefaultEventoRepository, DefaultPersonaRepository); 166 DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
167 167
168 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 168 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
169 urlInvitacion, TipoEvento.Van); 169 urlInvitacion, TipoEvento.Van);
170 170
171 var van = agenda.GetEventosActivos().Single(v => v.Titulo == "Van para publicar"); 171 var van = agenda.GetEventosActivos().Single(v => v.Titulo == "Van para publicar");
181 { 181 {
182 var publicador1 = new Mock<IPublicador>(); 182 var publicador1 = new Mock<IPublicador>();
183 var publicador2 = new Mock<IPublicador>(); 183 var publicador2 = new Mock<IPublicador>();
184 184
185 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), 185 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }),
186 DefaultEventoRepository, DefaultPersonaRepository); 186 DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
187 187
188 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); 188 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
189 Assert.AreEqual(1, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count); 189 Assert.AreEqual(1, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count);
190 Assert.AreEqual(1, agenda.GetEventosActivos().Count); 190 Assert.AreEqual(1, agenda.GetEventosActivos().Count);
191 191
208 [Test] 208 [Test]
209 public void Al_proponer_un_evento_debe_quedar_con_estado_EventoPropuestoState_y_debe_generar_el_track_correspondiente() 209 public void Al_proponer_un_evento_debe_quedar_con_estado_EventoPropuestoState_y_debe_generar_el_track_correspondiente()
210 { 210 {
211 var publicador1 = new Mock<IPublicador>(); 211 var publicador1 = new Mock<IPublicador>();
212 212
213 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 213 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
214 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); 214 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
215 215
216 var evento = 216 var evento =
217 DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5"); 217 DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5");
218 218
223 [Test] 223 [Test]
224 public void Al_agendar_un_evento_debe_quedar_con_estado_EventoAgendadoState_y_debe_generar_el_track_correspondiente() 224 public void Al_agendar_un_evento_debe_quedar_con_estado_EventoAgendadoState_y_debe_generar_el_track_correspondiente()
225 { 225 {
226 var publicador1 = new Mock<IPublicador>(); 226 var publicador1 = new Mock<IPublicador>();
227 227
228 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 228 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
229 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); 229 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
230 230
231 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); 231 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
232 232
233 Assert.IsInstanceOf(typeof(EventoAgendadoState), evento.GetEstado()); 233 Assert.IsInstanceOf(typeof(EventoAgendadoState), evento.GetEstado());
237 [Test] 237 [Test]
238 public void Al_cancelar_un_evento_debe_quedar_con_estado_EventoCanceladoState_y_debe_generar_el_track_correspondiente() 238 public void Al_cancelar_un_evento_debe_quedar_con_estado_EventoCanceladoState_y_debe_generar_el_track_correspondiente()
239 { 239 {
240 var publicador1 = new Mock<IPublicador>(); 240 var publicador1 = new Mock<IPublicador>();
241 241
242 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 242 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
243 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); 243 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
244 244
245 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); 245 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
246 246
247 agenda.Cancelar(evento.Id); 247 agenda.Cancelar(evento.Id);
254 [Test] 254 [Test]
255 public void Al_descartar_un_evento_debe_quedar_con_estado_EventoDescartadoState_y_debe_generar_el_track_correspondiente() 255 public void Al_descartar_un_evento_debe_quedar_con_estado_EventoDescartadoState_y_debe_generar_el_track_correspondiente()
256 { 256 {
257 var publicador1 = new Mock<IPublicador>(); 257 var publicador1 = new Mock<IPublicador>();
258 258
259 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 259 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
260 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); 260 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
261 261
262 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); 262 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
263 263
264 agenda.Cancelar(evento.Id); 264 agenda.Cancelar(evento.Id);
272 [Test] 272 [Test]
273 public void Al_confirmar_un_evento_debe_quedar_con_estado_EventoConfirmadoState_y_debe_generar_el_track_correspondiente() 273 public void Al_confirmar_un_evento_debe_quedar_con_estado_EventoConfirmadoState_y_debe_generar_el_track_correspondiente()
274 { 274 {
275 var publicador1 = new Mock<IPublicador>(); 275 var publicador1 = new Mock<IPublicador>();
276 276
277 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 277 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
278 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); 278 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
279 279
280 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); 280 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
281 281
282 agenda.Confirmar(evento.Id); 282 agenda.Confirmar(evento.Id);
288 [Test] 288 [Test]
289 public void Al_publicar_un_evento_debe_quedar_con_estado_EventoPublicadoState_y_debe_generar_el_track_correspondiente() 289 public void Al_publicar_un_evento_debe_quedar_con_estado_EventoPublicadoState_y_debe_generar_el_track_correspondiente()
290 { 290 {
291 var publicador1 = new Mock<IPublicador>(); 291 var publicador1 = new Mock<IPublicador>();
292 292
293 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 293 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
294 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); 294 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
295 295
296 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); 296 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
297 297
298 agenda.Confirmar(evento.Id); 298 agenda.Confirmar(evento.Id);
305 [Test] 305 [Test]
306 public void Al_publicar_un_evento_debe_asignarse_el_nro_de_reunion_y_la_url_de_la_wiki() 306 public void Al_publicar_un_evento_debe_asignarse_el_nro_de_reunion_y_la_url_de_la_wiki()
307 { 307 {
308 var publicador1 = new Mock<IPublicador>(); 308 var publicador1 = new Mock<IPublicador>();
309 309
310 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 310 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
311 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); 311 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
312 312
313 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); 313 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
314 agenda.Confirmar(evento.Id); 314 agenda.Confirmar(evento.Id);
315 315
324 [ExpectedException(typeof(AccionNoSoportadaException))] 324 [ExpectedException(typeof(AccionNoSoportadaException))]
325 public void Al_confirmar_sin_agendar_debe_lanzarse_excepcion() 325 public void Al_confirmar_sin_agendar_debe_lanzarse_excepcion()
326 { 326 {
327 var publicador1 = new Mock<IPublicador>(); 327 var publicador1 = new Mock<IPublicador>();
328 328
329 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 329 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
330 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); 330 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
331 331
332 var evento = 332 var evento =
333 DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5"); 333 DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5");
334 334
341 [ExpectedException(typeof(AccionNoSoportadaException))] 341 [ExpectedException(typeof(AccionNoSoportadaException))]
342 public void Al_publicar_sin_confirmar_debe_lanzarse_excepcion() 342 public void Al_publicar_sin_confirmar_debe_lanzarse_excepcion()
343 { 343 {
344 var publicador1 = new Mock<IPublicador>(); 344 var publicador1 = new Mock<IPublicador>();
345 345
346 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 346 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
347 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); 347 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
348 348
349 var evento = 349 var evento =
350 DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5"); 350 DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5");
351 351