comparison Agendas/trunk/src/Agendas.Tests/AgendarTests.cs @ 119:8fa58a79656a

Historico
author Nelo@Kenia.neluz.int
date Wed, 22 Jun 2011 09:49:07 -0300
parents b74734a1a755
children 6f1041301797
comparison
equal deleted inserted replaced
118:b74734a1a755 119:8fa58a79656a
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);
33 33
34 Assert.Throws<Exception>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van)); 34 Assert.Throws<Exception>(
35 () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van));
35 Assert.AreEqual(0, agenda.GetEventosActivos().Count); 36 Assert.AreEqual(0, agenda.GetEventosActivos().Count);
36 37
37 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); 38 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
38 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); 39 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
39 } 40 }
48 49
49 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository); 50 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository);
50 51
51 Assert.Throws<IdentityContextNotConfiguredException>( 52 Assert.Throws<IdentityContextNotConfiguredException>(
52 () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 53 () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
53 urlInvitacion, TipoEvento.Van)); 54 urlInvitacion, TipoEvento.Van));
54 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); 55 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
55 } 56 }
56 57
57 [Test] 58 [Test]
58 public void Intentar_agendar_evento_sin_usuario_autenticado() 59 public void Intentar_agendar_evento_sin_usuario_autenticado()
63 var repository = new Mock<IEventoRepository>(); 64 var repository = new Mock<IEventoRepository>();
64 65
65 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository); 66 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository);
66 67
67 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 68 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
68 urlInvitacion, TipoEvento.Van)); 69 urlInvitacion, TipoEvento.Van));
69 70
70 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));
71 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); 72 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
72 } 73 }
73 74
75 public void Intentar_agendar_evento_sin_ponente() 76 public void Intentar_agendar_evento_sin_ponente()
76 { 77 {
77 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); 78 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
78 79
79 var r = agenda.Agendar("Van para publicar", string.Empty, DateTime.Now, 80 var r = agenda.Agendar("Van para publicar", string.Empty, DateTime.Now,
80 urlInvitacion, TipoEvento.Van); 81 urlInvitacion, TipoEvento.Van);
81 82
82 Assert.IsFalse(r.Succeful); 83 Assert.IsFalse(r.Succeful);
83 } 84 }
84 85
85 [Test] 86 [Test]
88 var publicador1 = new Mock<IPublicador>(); 89 var publicador1 = new Mock<IPublicador>();
89 var publicador2 = new Mock<IPublicador>(); 90 var publicador2 = new Mock<IPublicador>();
90 91
91 var repository = new Mock<IEventoRepository>(); 92 var repository = new Mock<IEventoRepository>();
92 93
93 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), 94 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }),
94 repository.Object, DefaultPersonaRepository); 95 repository.Object, DefaultPersonaRepository);
95 96
96 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 97 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
97 urlInvitacion, TipoEvento.Van); 98 urlInvitacion, TipoEvento.Van);
98 99
99 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));
100 publicador2.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); 101 publicador2.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
101 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(1)); 102 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(1));
102 } 103 }
107 var publicador = new Mock<IPublicador>(); 108 var publicador = new Mock<IPublicador>();
108 109
109 var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository); 110 var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository);
110 111
111 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 112 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
112 urlInvitacion, TipoEvento.Van); 113 urlInvitacion, TipoEvento.Van);
113 114
114 Assert.AreEqual(0, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count); 115 Assert.AreEqual(0, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count);
115 116
116 var eventos = agenda.GetEventosActivos(); 117 var eventos = agenda.GetEventosActivos();
117 Assert.AreEqual(1, eventos.Count); 118 Assert.AreEqual(1, eventos.Count);
118 119
119 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); 120 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
120 121
121 var evento = eventos[0]; 122 var evento = eventos[0];
122 123
123 Assert.IsNotNull(evento.Ponente); 124 Assert.IsNotNull(evento.Ponente);
124 } 125 }
125 126
126 [Test] 127 [Test]
127 public void Agendar_y_modificar_evento() 128 public void Agendar_y_modificar_evento()
130 var publicador = new Mock<IPublicador>(); 131 var publicador = new Mock<IPublicador>();
131 132
132 var agenda = new Agenda(publicador.Object, repository, DefaultPersonaRepository); 133 var agenda = new Agenda(publicador.Object, repository, DefaultPersonaRepository);
133 134
134 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 135 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
135 urlInvitacion, TipoEvento.Van); 136 urlInvitacion, TipoEvento.Van);
136 137
137 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));
138 139
139 var evento = repository.GetActivos().First(); 140 var evento = repository.GetActivos().First();
140 Assert.AreNotEqual(Guid.Empty, evento.Id); 141 Assert.AreNotEqual(Guid.Empty, evento.Id);
159 public void Agendar_y_recordar_evento() 160 public void Agendar_y_recordar_evento()
160 { 161 {
161 var publicador1 = new Mock<IPublicador>(); 162 var publicador1 = new Mock<IPublicador>();
162 var publicador2 = new Mock<IPublicador>(); 163 var publicador2 = new Mock<IPublicador>();
163 164
164 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), 165 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }),
165 DefaultEventoRepository, DefaultPersonaRepository); 166 DefaultEventoRepository, DefaultPersonaRepository);
166 167
167 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 168 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
168 urlInvitacion, TipoEvento.Van); 169 urlInvitacion, TipoEvento.Van);
169 170
170 var van = agenda.GetEventosActivos().Single(v => v.Titulo == "Van para publicar"); 171 var van = agenda.GetEventosActivos().Single(v => v.Titulo == "Van para publicar");
171 //agenda.Recordar(van.Id); 172 //agenda.Recordar(van.Id);
172 173
173 publicador1.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); 174 publicador1.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
202 203
203 Assert.IsNotNull(agendado.Tracks.Where(t => t.Accion == Accion.Proponer).SingleOrDefault()); 204 Assert.IsNotNull(agendado.Tracks.Where(t => t.Accion == Accion.Proponer).SingleOrDefault());
204 Assert.IsNotNull(agendado.Tracks.Where(t => t.Accion == Accion.Agendar).SingleOrDefault()); 205 Assert.IsNotNull(agendado.Tracks.Where(t => t.Accion == Accion.Agendar).SingleOrDefault());
205 } 206 }
206 207
207 [Test] 208 [Test]
208 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()
209 { 210 {
210 var publicador1 = new Mock<IPublicador>(); 211 var publicador1 = new Mock<IPublicador>();
211 212
212 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 213 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
213 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); 214 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
214 215
215 var evento = 216 var evento =
216 DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5"); 217 DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5");
217 218
218 Assert.IsInstanceOf(typeof(EventoPropuestoState), evento.GetEstado()); 219 Assert.IsInstanceOf(typeof(EventoPropuestoState), evento.GetEstado());
219 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Proponer) == 1); 220 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Proponer) == 1);
220 } 221 }
221 222
222 [Test] 223 [Test]
223 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()
224 { 225 {
225 var publicador1 = new Mock<IPublicador>(); 226 var publicador1 = new Mock<IPublicador>();
226 227
227 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 228 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
228 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); 229 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
229 230
230 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); 231 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
231 232
232 Assert.IsInstanceOf(typeof(EventoAgendadoState), evento.GetEstado()); 233 Assert.IsInstanceOf(typeof(EventoAgendadoState), evento.GetEstado());
233 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Agendar) == 1); 234 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Agendar) == 1);
234 } 235 }
235 236
236 [Test] 237 [Test]
237 public void Al_confirmar_un_evento_debe_quedar_con_estado_EventoConfirmadoState_y_debe_generar_el_track_correspondiente() 238 public void Al_confirmar_un_evento_debe_quedar_con_estado_EventoConfirmadoState_y_debe_generar_el_track_correspondiente()
238 { 239 {
239 var publicador1 = new Mock<IPublicador>(); 240 var publicador1 = new Mock<IPublicador>();
240 241
241 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 242 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
242 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); 243 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
243 244
244 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); 245 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
245 246
246 agenda.Confirmar(evento.Id); 247 agenda.Confirmar(evento.Id);
247 248
248 Assert.IsInstanceOf(typeof(EventoConfirmadoState), evento.GetEstado()); 249 Assert.IsInstanceOf(typeof(EventoConfirmadoState), evento.GetEstado());
249 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Confirmar) == 1); 250 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Confirmar) == 1);
250 } 251 }
251 252
252 [Test] 253 [Test]
253 public void Al_publicar_un_evento_debe_quedar_con_estado_EventoPublicadoState_y_debe_generar_el_track_correspondiente() 254 public void Al_publicar_un_evento_debe_quedar_con_estado_EventoPublicadoState_y_debe_generar_el_track_correspondiente()
254 { 255 {
255 var publicador1 = new Mock<IPublicador>(); 256 var publicador1 = new Mock<IPublicador>();
256 257
257 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 258 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
258 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); 259 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
259 260
260 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); 261 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
261 262
262 agenda.Confirmar(evento.Id); 263 agenda.Confirmar(evento.Id);
263 agenda.Publicar(evento.Id, 0, string.Empty); 264 agenda.Publicar(evento.Id, 0, string.Empty);
264 265
265 Assert.IsInstanceOf(typeof(EventoPublicadoState), evento.GetEstado()); 266 Assert.IsInstanceOf(typeof(EventoPublicadoState), evento.GetEstado());
266 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Publicar) == 1); 267 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Publicar) == 1);
267 } 268 }
268 269
269 [Test] 270 [Test]
270 public void Al_publicar_un_evento_debe_asignarse_el_nro_de_reunion_y_la_url_de_la_wiki() 271 public void Al_publicar_un_evento_debe_asignarse_el_nro_de_reunion_y_la_url_de_la_wiki()
271 { 272 {
272 var publicador1 = new Mock<IPublicador>(); 273 var publicador1 = new Mock<IPublicador>();
273 274
274 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 275 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
275 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); 276 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
276 277
277 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5"); 278 var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
278 agenda.Confirmar(evento.Id); 279 agenda.Confirmar(evento.Id);
279 280
280 const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx"; 281 const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx";
281 agenda.Publicar(evento.Id, 71, urlWiki); 282 agenda.Publicar(evento.Id, 71, urlWiki);
282 283
283 Assert.AreEqual(71, evento.NumeroOrden); 284 Assert.AreEqual(71, evento.NumeroOrden);
284 Assert.AreEqual(urlWiki, evento.UrlWiki); 285 Assert.AreEqual(urlWiki, evento.UrlWiki);
285 } 286 }
286 287
287 [Test] 288 [Test]
288 [ExpectedException(typeof(AccionNoSoportadaException))] 289 [ExpectedException(typeof(AccionNoSoportadaException))]
289 public void Al_confirmar_sin_agendar_debe_lanzarse_excepcion() 290 public void Al_confirmar_sin_agendar_debe_lanzarse_excepcion()
290 { 291 {
291 var publicador1 = new Mock<IPublicador>(); 292 var publicador1 = new Mock<IPublicador>();
292 293
293 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 294 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
294 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); 295 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
295 296
296 var evento = 297 var evento =
297 DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5"); 298 DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5");
298 299
299 Assert.IsFalse(evento.Estado.GetType() == typeof(EventoAgendadoState)); 300 Assert.IsFalse(evento.Estado.GetType() == typeof(EventoAgendadoState));
300 301
301 agenda.Confirmar(evento.Id); 302 agenda.Confirmar(evento.Id);
302 } 303 }
303 304
304 [Test] 305 [Test]
305 [ExpectedException(typeof(AccionNoSoportadaException))] 306 [ExpectedException(typeof(AccionNoSoportadaException))]
306 public void Al_publicar_sin_confirmar_debe_lanzarse_excepcion() 307 public void Al_publicar_sin_confirmar_debe_lanzarse_excepcion()
307 { 308 {
308 var publicador1 = new Mock<IPublicador>(); 309 var publicador1 = new Mock<IPublicador>();
309 310
310 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); 311 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
311 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); 312 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
312 313
313 var evento = 314 var evento =
314 DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5"); 315 DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5");
315 316
316 Assert.IsFalse(evento.Estado.GetType() == typeof(EventoConfirmadoState)); 317 Assert.IsFalse(evento.Estado.GetType() == typeof(EventoConfirmadoState));
317 318
318 agenda.Publicar(evento.Id, 0, string.Empty); 319 agenda.Publicar(evento.Id, 0, string.Empty);
319 } 320 }
320 } 321 }
321 } 322 }