Mercurial > altnet-hispano
comparison Agendas/trunk/src/Agendas.Tests/AgendarTests.cs @ 87:26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
Quitamos el concepto de Recordador ya que el mismo es un publicador, cuándo publicar es responsabilidad de cada publicador
author | nelopauselli |
---|---|
date | Fri, 27 May 2011 14:42:38 -0300 |
parents | 926bd1cdb98f |
children | db4b1e2cae49 |
comparison
equal
deleted
inserted
replaced
86:723aed93a0e6 | 87:26d0513a8410 |
---|---|
1 using System; | 1 using System; |
2 using System.Collections.Generic; | |
2 using System.Linq; | 3 using System.Linq; |
3 using AltNetHispano.Agendas.Domain; | 4 using AltNetHispano.Agendas.Domain; |
4 using AltNetHispano.Agendas.Domain.Exceptions; | 5 using AltNetHispano.Agendas.Domain.Exceptions; |
5 using AltNetHispano.Agendas.Domain.Repositories; | 6 using AltNetHispano.Agendas.Domain.Repositories; |
6 using Moq; | 7 using Moq; |
23 public void Intentar_agendar_evento_donde_ocurre_una_excepcion_no_manejada() | 24 public void Intentar_agendar_evento_donde_ocurre_una_excepcion_no_manejada() |
24 { | 25 { |
25 var publicador = new Mock<IPublicador>(); | 26 var publicador = new Mock<IPublicador>(); |
26 var repository = new Mock<IEventoRepository>(); | 27 var repository = new Mock<IEventoRepository>(); |
27 | 28 |
28 publicador.Setup(p => p.Publicar(It.IsAny<Evento>())).Throws(new Exception("Error intencional")); | 29 publicador.Setup(p => p.Publicar(It.IsAny<IEnumerable<Track>>())).Throws(new Exception("Error intencional")); |
29 | 30 |
30 var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository); | 31 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPonenteRepository); |
31 | 32 |
32 Assert.Throws<Exception>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion)); | 33 Assert.Throws<Exception>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion)); |
33 Assert.AreEqual(0, agenda.GetEventosAgendados().Count); | 34 Assert.AreEqual(0, agenda.GetEventosAgendados().Count); |
34 | 35 |
35 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | 36 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); |
36 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); | 37 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); |
37 } | 38 } |
38 | 39 |
39 [Test] | 40 [Test] |
40 public void Intentar_agendar_evento_sin_servicio_de_seguridad() | 41 public void Intentar_agendar_evento_sin_servicio_de_seguridad() |
42 IdentityContext.Current = null; | 43 IdentityContext.Current = null; |
43 | 44 |
44 var publicador = new Mock<IPublicador>(); | 45 var publicador = new Mock<IPublicador>(); |
45 var repository = new Mock<IEventoRepository>(); | 46 var repository = new Mock<IEventoRepository>(); |
46 | 47 |
47 var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository); | 48 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPonenteRepository); |
48 | 49 |
49 Assert.Throws<IdentityContextNotConfiguredException>( | 50 Assert.Throws<IdentityContextNotConfiguredException>( |
50 () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, | 51 () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, |
51 urlInvitacion)); | 52 urlInvitacion)); |
52 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); | 53 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); |
58 SetCurrentUser(null); | 59 SetCurrentUser(null); |
59 | 60 |
60 var publicador = new Mock<IPublicador>(); | 61 var publicador = new Mock<IPublicador>(); |
61 var repository = new Mock<IEventoRepository>(); | 62 var repository = new Mock<IEventoRepository>(); |
62 | 63 |
63 var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository); | 64 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPonenteRepository); |
64 | 65 |
65 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, | 66 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, |
66 urlInvitacion)); | 67 urlInvitacion)); |
67 | 68 |
68 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(0)); | 69 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(0)); |
69 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); | 70 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); |
70 } | 71 } |
71 | 72 |
72 [Test] | 73 [Test] |
73 public void Intentar_agendar_evento_sin_ponente() | 74 public void Intentar_agendar_evento_sin_ponente() |
74 { | 75 { |
75 var agenda = new Agenda(null, null, DefaultEventoRepository, DefaultPonenteRepository); | 76 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPonenteRepository); |
76 | 77 |
77 var r = agenda.Agendar("Van para publicar", string.Empty, DateTime.Now, | 78 var r = agenda.Agendar("Van para publicar", string.Empty, DateTime.Now, |
78 urlInvitacion); | 79 urlInvitacion); |
79 | 80 |
80 Assert.IsFalse(r.Succeful); | 81 Assert.IsFalse(r.Succeful); |
86 var publicador1 = new Mock<IPublicador>(); | 87 var publicador1 = new Mock<IPublicador>(); |
87 var publicador2 = new Mock<IPublicador>(); | 88 var publicador2 = new Mock<IPublicador>(); |
88 | 89 |
89 var repository = new Mock<IEventoRepository>(); | 90 var repository = new Mock<IEventoRepository>(); |
90 | 91 |
91 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), null, | 92 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), |
92 repository.Object, DefaultPonenteRepository); | 93 repository.Object, DefaultPonenteRepository); |
93 | 94 |
94 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, | 95 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, |
95 urlInvitacion); | 96 urlInvitacion); |
96 | 97 |
97 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | 98 publicador1.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); |
98 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | 99 publicador2.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); |
99 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(1)); | 100 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(1)); |
100 } | 101 } |
101 | 102 |
102 [Test] | 103 [Test] |
103 public void Agendar_evento_correctamente() | 104 public void Agendar_evento_correctamente() |
104 { | 105 { |
105 var publicador = new Mock<IPublicador>(); | 106 var publicador = new Mock<IPublicador>(); |
106 | 107 |
107 var agenda = new Agenda(publicador.Object, null, DefaultEventoRepository, DefaultPonenteRepository); | 108 var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPonenteRepository); |
108 | 109 |
109 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, | 110 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, |
110 urlInvitacion); | 111 urlInvitacion); |
111 | 112 |
112 Assert.AreEqual(0, agenda.GetEventosPropuestos().Count); | 113 Assert.AreEqual(0, agenda.GetEventosPropuestos().Count); |
113 | 114 |
114 var eventos = agenda.GetEventosAgendados(); | 115 var eventos = agenda.GetEventosAgendados(); |
115 Assert.AreEqual(1, eventos.Count); | 116 Assert.AreEqual(1, eventos.Count); |
116 | 117 |
117 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | 118 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); |
118 | 119 |
119 var evento = eventos[0]; | 120 var evento = eventos[0]; |
120 | 121 |
121 Assert.IsNotNull(evento.Ponente); | 122 Assert.IsNotNull(evento.Ponente); |
122 Assert.IsNotNull(evento.Ponente.Eventos); | 123 Assert.IsNotNull(evento.Ponente.Eventos); |
129 public void Agendar_y_modificar_evento() | 130 public void Agendar_y_modificar_evento() |
130 { | 131 { |
131 var repository = DefaultEventoRepository; | 132 var repository = DefaultEventoRepository; |
132 var publicador = new Mock<IPublicador>(); | 133 var publicador = new Mock<IPublicador>(); |
133 | 134 |
134 var agenda = new Agenda(publicador.Object, null, repository, DefaultPonenteRepository); | 135 var agenda = new Agenda(publicador.Object, repository, DefaultPonenteRepository); |
135 | 136 |
136 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, | 137 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, |
137 urlInvitacion); | 138 urlInvitacion); |
138 | 139 |
139 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | 140 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); |
140 | 141 |
141 var evento = repository.GetEventosConFecha().First(); | 142 var evento = repository.GetEventosConFecha().First(); |
142 Assert.AreNotEqual(Guid.Empty, evento.Id); | 143 Assert.AreNotEqual(Guid.Empty, evento.Id); |
143 Assert.IsNotNull(evento.Fecha); | 144 Assert.IsNotNull(evento.Fecha); |
144 | 145 |
145 DateTime fecha = evento.Fecha.Value.AddDays(7); | 146 DateTime fecha = evento.Fecha.Value.AddDays(7); |
146 agenda.ModificarEvento(evento.Id, "otro titulo", "otro ponente", fecha, urlInvitacion); | 147 agenda.ModificarEvento(evento.Id, "otro titulo", "otro ponente", fecha, urlInvitacion); |
147 | 148 |
148 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(2)); | 149 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2)); |
149 | 150 |
150 evento = repository.GetEventosConFecha().First(); | 151 evento = repository.GetEventosConFecha().First(); |
151 Assert.AreEqual("otro titulo", evento.Titulo); | 152 Assert.AreEqual("otro titulo", evento.Titulo); |
152 Assert.AreEqual("otro ponente", evento.Ponente.Nombre); | 153 Assert.AreEqual("otro ponente", evento.Ponente.Nombre); |
153 Assert.AreEqual(fecha, evento.Fecha); | 154 Assert.AreEqual(fecha, evento.Fecha); |
155 var idEventoNoExistente = new Guid("99999999999999999999999999999999"); | 156 var idEventoNoExistente = new Guid("99999999999999999999999999999999"); |
156 Assert.Throws<EventoNotFoundException>( | 157 Assert.Throws<EventoNotFoundException>( |
157 () => agenda.ModificarEvento(idEventoNoExistente, "algún título", "un ponente", DateTime.Now, urlInvitacion)); | 158 () => agenda.ModificarEvento(idEventoNoExistente, "algún título", "un ponente", DateTime.Now, urlInvitacion)); |
158 } | 159 } |
159 | 160 |
160 [Test] | 161 [Test, Ignore("Por ahora no existe el concepto de recordar")] |
161 public void Agendar_y_recordar_evento() | 162 public void Agendar_y_recordar_evento() |
162 { | 163 { |
163 var publicador1 = new Mock<IPublicador>(); | 164 var publicador1 = new Mock<IPublicador>(); |
164 var publicador2 = new Mock<IPublicador>(); | 165 var publicador2 = new Mock<IPublicador>(); |
165 var recordador1 = new Mock<IRecordador>(); | 166 |
166 | 167 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), |
167 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), recordador1.Object, | |
168 DefaultEventoRepository, DefaultPonenteRepository); | 168 DefaultEventoRepository, DefaultPonenteRepository); |
169 | 169 |
170 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, | 170 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, |
171 urlInvitacion); | 171 urlInvitacion); |
172 | 172 |
173 var van = agenda.GetEventosAgendados().Single(v => v.Titulo == "Van para publicar"); | 173 var van = agenda.GetEventosAgendados().Single(v => v.Titulo == "Van para publicar"); |
174 agenda.Recordar(van.Id); | 174 //agenda.Recordar(van.Id); |
175 | 175 |
176 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | 176 publicador1.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); |
177 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | 177 publicador2.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); |
178 recordador1.Verify(r => r.Recordar(It.IsAny<Evento>()), Times.Exactly(1)); | 178 //recordador1.Verify(r => r.Recordar(It.IsAny<Evento>()), Times.Exactly(1)); |
179 } | 179 } |
180 | 180 |
181 [Test] | 181 [Test] |
182 public void Agendar_evento_propuesto() | 182 public void Agendar_evento_propuesto() |
183 { | 183 { |
184 var publicador1 = new Mock<IPublicador>(); | 184 var publicador1 = new Mock<IPublicador>(); |
185 var publicador2 = new Mock<IPublicador>(); | 185 var publicador2 = new Mock<IPublicador>(); |
186 var recordador1 = new Mock<IRecordador>(); | 186 |
187 | 187 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), |
188 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), recordador1.Object, | |
189 DefaultEventoRepository, DefaultPonenteRepository); | 188 DefaultEventoRepository, DefaultPonenteRepository); |
190 | 189 |
191 agenda.Proponer("Html 5", "jjmontes", urlInvitacion); | 190 agenda.Proponer("Html 5", "jjmontes", urlInvitacion); |
192 Assert.AreEqual(1, agenda.GetEventosPropuestos().Count); | 191 Assert.AreEqual(1, agenda.GetEventosPropuestos().Count); |
193 Assert.AreEqual(0, agenda.GetEventosAgendados().Count); | 192 Assert.AreEqual(0, agenda.GetEventosAgendados().Count); |