comparison Agendas/trunk/src/Agendas.Tests/AgendarTests.cs @ 109:6bd9be78caa0

Merge
author Nelo@Kenia.neluz.int
date Tue, 07 Jun 2011 23:21:07 -0300
parents 80c22175c9b5
children b74734a1a755
comparison
equal deleted inserted replaced
108:786a90e26c9b 109:6bd9be78caa0
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)); 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.GetEventosAgendados().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 }
48 48
49 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository); 49 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository);
50 50
51 Assert.Throws<IdentityContextNotConfiguredException>( 51 Assert.Throws<IdentityContextNotConfiguredException>(
52 () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 52 () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
53 urlInvitacion)); 53 urlInvitacion, TipoEvento.Van));
54 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); 54 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
55 } 55 }
56 56
57 [Test] 57 [Test]
58 public void Intentar_agendar_evento_sin_usuario_autenticado() 58 public void Intentar_agendar_evento_sin_usuario_autenticado()
63 var repository = new Mock<IEventoRepository>(); 63 var repository = new Mock<IEventoRepository>();
64 64
65 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository); 65 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository);
66 66
67 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 67 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
68 urlInvitacion)); 68 urlInvitacion, TipoEvento.Van));
69 69
70 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(0)); 70 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(0));
71 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); 71 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
72 } 72 }
73 73
75 public void Intentar_agendar_evento_sin_ponente() 75 public void Intentar_agendar_evento_sin_ponente()
76 { 76 {
77 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); 77 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
78 78
79 var r = agenda.Agendar("Van para publicar", string.Empty, DateTime.Now, 79 var r = agenda.Agendar("Van para publicar", string.Empty, DateTime.Now,
80 urlInvitacion); 80 urlInvitacion, TipoEvento.Van);
81 81
82 Assert.IsFalse(r.Succeful); 82 Assert.IsFalse(r.Succeful);
83 } 83 }
84 84
85 [Test] 85 [Test]
92 92
93 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), 93 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}),
94 repository.Object, DefaultPersonaRepository); 94 repository.Object, DefaultPersonaRepository);
95 95
96 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 96 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
97 urlInvitacion); 97 urlInvitacion, TipoEvento.Van);
98 98
99 publicador1.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); 99 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)); 100 publicador2.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
101 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(1)); 101 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(1));
102 } 102 }
107 var publicador = new Mock<IPublicador>(); 107 var publicador = new Mock<IPublicador>();
108 108
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); 112 urlInvitacion, TipoEvento.Van);
113 113
114 Assert.AreEqual(0, agenda.GetEventosPropuestos().Count); 114 Assert.AreEqual(0, agenda.GetEventosPropuestos().Count);
115 115
116 var eventos = agenda.GetEventosAgendados(); 116 var eventos = agenda.GetEventosAgendados();
117 Assert.AreEqual(1, eventos.Count); 117 Assert.AreEqual(1, eventos.Count);
130 var publicador = new Mock<IPublicador>(); 130 var publicador = new Mock<IPublicador>();
131 131
132 var agenda = new Agenda(publicador.Object, repository, DefaultPersonaRepository); 132 var agenda = new Agenda(publicador.Object, repository, DefaultPersonaRepository);
133 133
134 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 134 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
135 urlInvitacion); 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.GetEventosConFecha().First();
140 Assert.AreNotEqual(Guid.Empty, evento.Id); 140 Assert.AreNotEqual(Guid.Empty, evento.Id);
163 163
164 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), 164 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}),
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); 168 urlInvitacion, TipoEvento.Van);
169 169
170 var van = agenda.GetEventosAgendados().Single(v => v.Titulo == "Van para publicar"); 170 var van = agenda.GetEventosAgendados().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));
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); 187 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
188 Assert.AreEqual(1, agenda.GetEventosPropuestos().Count); 188 Assert.AreEqual(1, agenda.GetEventosPropuestos().Count);
189 Assert.AreEqual(0, agenda.GetEventosAgendados().Count); 189 Assert.AreEqual(0, agenda.GetEventosAgendados().Count);
190 190
191 var publicado = agenda.GetEventosPropuestos().First(); 191 var publicado = agenda.GetEventosPropuestos().First();
192 Assert.AreEqual(1, publicado.Tracks.Count()); 192 Assert.AreEqual(1, publicado.Tracks.Count());
200 Assert.AreEqual(2, agendado.Tracks.Count()); 200 Assert.AreEqual(2, agendado.Tracks.Count());
201 201
202 Assert.IsNotNull(agendado.Tracks.Where(t => t.Accion == Accion.Proponer).SingleOrDefault()); 202 Assert.IsNotNull(agendado.Tracks.Where(t => t.Accion == Accion.Proponer).SingleOrDefault());
203 Assert.IsNotNull(agendado.Tracks.Where(t => t.Accion == Accion.Agendar).SingleOrDefault()); 203 Assert.IsNotNull(agendado.Tracks.Where(t => t.Accion == Accion.Agendar).SingleOrDefault());
204 } 204 }
205
206 [Test]
207 public void Al_proponer_un_evento_debe_quedar_con_estado_EventoPropuestoState_y_debe_generar_el_track_correspondiente()
208 {
209 var publicador1 = new Mock<IPublicador>();
210
211 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
212 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
213
214 var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5");
215
216 Assert.IsInstanceOf(typeof(EventoPropuestoState), evento.GetEstado());
217 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Proponer) == 1);
218 }
219
220 [Test]
221 public void Al_agendar_un_evento_debe_quedar_con_estado_EventoAgendadoState_y_debe_generar_el_track_correspondiente()
222 {
223 var publicador1 = new Mock<IPublicador>();
224
225 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
226 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
227
228 var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5");
229
230 Assert.IsInstanceOf(typeof(EventoAgendadoState), evento.GetEstado());
231 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Agendar) == 1);
232 }
233
234 [Test]
235 public void Al_confirmar_un_evento_debe_quedar_con_estado_EventoConfirmadoState_y_debe_generar_el_track_correspondiente()
236 {
237 var publicador1 = new Mock<IPublicador>();
238
239 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
240 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
241
242 var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5");
243
244 agenda.Confirmar(evento.Id);
245
246 Assert.IsInstanceOf(typeof(EventoConfirmadoState), evento.GetEstado());
247 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Confirmar) == 1);
248 }
249
250 [Test]
251 public void Al_publicar_un_evento_debe_quedar_con_estado_EventoPublicadoState_y_debe_generar_el_track_correspondiente()
252 {
253 var publicador1 = new Mock<IPublicador>();
254
255 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
256 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
257
258 var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5");
259
260 agenda.Confirmar(evento.Id);
261 agenda.Publicar(evento.Id, 0, string.Empty);
262
263 Assert.IsInstanceOf(typeof(EventoPublicadoState), evento.GetEstado());
264 Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Publicar) == 1);
265 }
266
267 [Test]
268 public void Al_publicar_un_evento_debe_asignarse_el_nro_de_reunion_y_la_url_de_la_wiki()
269 {
270 var publicador1 = new Mock<IPublicador>();
271
272 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
273 agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
274
275 var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5");
276 agenda.Confirmar(evento.Id);
277
278 const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx";
279 agenda.Publicar(evento.Id, 71, urlWiki);
280
281 Assert.AreEqual(71, evento.NumeroOrden);
282 Assert.AreEqual(urlWiki, evento.UrlWiki);
283 }
284
285 [Test]
286 [ExpectedException(typeof(AccionNoSoportadaException))]
287 public void Al_confirmar_sin_agendar_debe_lanzarse_excepcion()
288 {
289 var publicador1 = new Mock<IPublicador>();
290
291 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
292 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
293
294 var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5");
295
296 Assert.IsFalse(evento.Estado.GetType() == typeof(EventoAgendadoState));
297
298 agenda.Confirmar(evento.Id);
299 }
300
301 [Test]
302 [ExpectedException(typeof(AccionNoSoportadaException))]
303 public void Al_publicar_sin_confirmar_debe_lanzarse_excepcion()
304 {
305 var publicador1 = new Mock<IPublicador>();
306
307 var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
308 agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
309
310 var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5");
311
312 Assert.IsFalse(evento.Estado.GetType() == typeof(EventoConfirmadoState));
313
314 agenda.Publicar(evento.Id, 0, string.Empty);
315 }
205 } 316 }
206 } 317 }