Mercurial > altnet-hispano
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 } |