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