Mercurial > altnet-hispano
comparison Agendas/trunk/src/Agendas.Tests/AgendaTests.cs @ 15:08b9e96132a5
Persistimos los eventos de la agenda
author | nelo@MTEySS.neluz.int |
---|---|
date | Mon, 14 Mar 2011 00:14:09 -0300 |
parents | 05996fa19e04 |
children | 9a07d3091a40 |
comparison
equal
deleted
inserted
replaced
14:ed6d842abf42 | 15:08b9e96132a5 |
---|---|
21 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); | 21 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); |
22 return seguridad.Object; | 22 return seguridad.Object; |
23 } | 23 } |
24 } | 24 } |
25 | 25 |
26 [SetUp] | |
27 public void LimpiarEventos() | |
28 { | |
29 var repository = new EventoRepository(); | |
30 foreach (var evento in repository.GetEventosConFecha()) | |
31 repository.Delete(evento); | |
32 foreach (var evento in repository.GetEventosSinFecha()) | |
33 repository.Delete(evento); | |
34 } | |
35 | |
26 [Test] | 36 [Test] |
27 public void Publicar_van_con_usuario_autenticado() | 37 public void Publicar_van_con_usuario_autenticado() |
28 { | 38 { |
29 var publicador = new Mock<IPublicador>(); | 39 var publicador = new Mock<IPublicador>(); |
30 | 40 var repository = new EventoRepository(); |
31 var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault); | 41 |
42 var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, repository); | |
32 | 43 |
33 var van = EventoObjectMother.GetVanValidaParaPublicar(); | 44 var van = EventoObjectMother.GetVanValidaParaPublicar(); |
34 | 45 |
35 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); | 46 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); |
36 Assert.AreEqual(1, agenda.GetEventosPublicados().Count); | 47 Assert.AreEqual(1, agenda.GetEventosPublicados().Count); |
39 } | 50 } |
40 | 51 |
41 [Test] | 52 [Test] |
42 public void Publicar_van_sin_usuario_autenticado() { | 53 public void Publicar_van_sin_usuario_autenticado() { |
43 var seguridad = new Mock<ISeguridad>(); | 54 var seguridad = new Mock<ISeguridad>(); |
44 var publicador = new Mock<IPublicador>(); | 55 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalSinAutenticar()); |
45 | 56 |
46 var agenda = new Agenda(publicador.Object, null, seguridad.Object); | 57 var publicador = new Mock<IPublicador>(); |
58 var repository = new Mock<IEventoRepository>(); | |
59 | |
60 var agenda = new Agenda(publicador.Object, null, seguridad.Object, repository.Object); | |
47 | 61 |
48 var van = EventoObjectMother.GetVanValidaParaPublicar(); | 62 var van = EventoObjectMother.GetVanValidaParaPublicar(); |
49 | 63 |
50 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalSinAutenticar()); | |
51 | |
52 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); | 64 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); |
53 } | 65 |
66 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(0)); | |
67 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); | |
68 } | |
54 | 69 |
55 [Test] | 70 [Test] |
56 public void Publicar_van_sin_servicio_de_seguridad() | 71 public void Publicar_van_sin_servicio_de_seguridad() |
57 { | 72 { |
58 var publicador = new Mock<IPublicador>(); | 73 var publicador = new Mock<IPublicador>(); |
59 | 74 var repository = new Mock<IEventoRepository>(); |
60 var agenda = new Agenda(publicador.Object, null, null); | 75 |
76 var agenda = new Agenda(publicador.Object, null, null, repository.Object); | |
61 | 77 |
62 var van = EventoObjectMother.GetVanValidaParaPublicar(); | 78 var van = EventoObjectMother.GetVanValidaParaPublicar(); |
63 | 79 |
64 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); | 80 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); |
65 } | 81 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); |
82 } | |
66 | 83 |
67 [Test] | 84 [Test] |
68 public void Error_al_publicar_van() | 85 public void Error_al_publicar_van() |
69 { | 86 { |
70 var publicador = new Mock<IPublicador>(); | 87 var publicador = new Mock<IPublicador>(); |
88 var repository = new Mock<IEventoRepository>(); | |
89 | |
71 publicador.Setup(p => p.Publicar(It.IsAny<Evento>())).Throws(new Exception("Error intencional")); | 90 publicador.Setup(p => p.Publicar(It.IsAny<Evento>())).Throws(new Exception("Error intencional")); |
72 | 91 |
73 var agenda = new Agenda(publicador.Object, null, null); | 92 var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, repository.Object); |
74 | 93 |
75 var van = EventoObjectMother.GetVanValidaParaPublicar(); | 94 var van = EventoObjectMother.GetVanValidaParaPublicar(); |
76 Assert.Throws<Exception>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); | 95 Assert.Throws<Exception>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha)); |
77 Assert.AreEqual(0, agenda.GetEventosPublicados().Count); | 96 Assert.AreEqual(0, agenda.GetEventosPublicados().Count); |
78 | 97 |
79 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | 98 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); |
99 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); | |
80 } | 100 } |
81 | 101 |
82 [Test] | 102 [Test] |
83 public void Publicar_van_multiples_publicadores() | 103 public void Publicar_van_multiples_publicadores() |
84 { | 104 { |
85 var publicador1 = new Mock<IPublicador>(); | 105 var publicador1 = new Mock<IPublicador>(); |
86 var publicador2 = new Mock<IPublicador>(); | 106 var publicador2 = new Mock<IPublicador>(); |
87 | 107 |
88 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), null, SeguridadServiceDefault); | 108 var repository = new Mock<IEventoRepository>(); |
109 | |
110 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), null, SeguridadServiceDefault, repository.Object); | |
89 | 111 |
90 var van = EventoObjectMother.GetVanValidaParaPublicar(); | 112 var van = EventoObjectMother.GetVanValidaParaPublicar(); |
91 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); | 113 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); |
92 | 114 |
93 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | 115 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); |
94 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | 116 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); |
117 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(1)); | |
95 } | 118 } |
96 | 119 |
97 [Test] | 120 [Test] |
98 public void Publicar_y_recordar_van() | 121 public void Publicar_y_recordar_van() |
99 { | 122 { |
123 var repository = new Mock<IEventoRepository>(); | |
124 | |
100 var publicador1 = new Mock<IPublicador>(); | 125 var publicador1 = new Mock<IPublicador>(); |
101 var publicador2 = new Mock<IPublicador>(); | 126 var publicador2 = new Mock<IPublicador>(); |
102 var recordador1 = new Mock<IRecordador>(); | 127 var recordador1 = new Mock<IRecordador>(); |
103 | 128 |
104 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), recordador1.Object, SeguridadServiceDefault); | 129 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), recordador1.Object, SeguridadServiceDefault, repository.Object); |
105 | 130 |
106 var van = EventoObjectMother.GetVanValidaParaPublicar(); | 131 var van = EventoObjectMother.GetVanValidaParaPublicar(); |
107 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); | 132 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); |
108 | 133 |
109 agenda.Recordar(van); | 134 agenda.Recordar(van); |
110 | 135 |
111 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | 136 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); |
112 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | 137 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); |
113 recordador1.Verify(r => r.Recordar(It.IsAny<Evento>()), Times.Exactly(1)); | 138 recordador1.Verify(r => r.Recordar(It.IsAny<Evento>()), Times.Exactly(1)); |
114 | 139 |
115 Assert.AreEqual(1, agenda.GetEventosPublicados().Count); | 140 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(1)); |
116 } | 141 } |
117 | 142 |
118 [Test] | 143 [Test] |
119 public void Propuesta_de_van_con_usuario_autenticado() | 144 public void Propuesta_de_van_con_usuario_autenticado() |
120 { | 145 { |
121 var van = new Evento{Titulo = "Van propuesta"}; | 146 var repository = new EventoRepository(); |
147 | |
148 var van = new Evento { Titulo = "Van propuesta" }; | |
122 | 149 |
123 var seguridad = new Mock<ISeguridad>(); | 150 var seguridad = new Mock<ISeguridad>(); |
124 var agenda = new Agenda(null, null, seguridad.Object); | 151 var agenda = new Agenda(null, null, seguridad.Object, repository); |
125 | 152 |
126 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); | 153 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); |
127 agenda.Proponer(van); | 154 agenda.Proponer(van); |
128 | 155 |
129 IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); | 156 IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); |
133 } | 160 } |
134 | 161 |
135 [Test] | 162 [Test] |
136 public void Verificar_propuesta_separada_de_publicacion() | 163 public void Verificar_propuesta_separada_de_publicacion() |
137 { | 164 { |
138 var seguridad = new Mock<ISeguridad>(); | 165 var seguridad = new Mock<ISeguridad>(); |
139 var agenda = new Agenda(null, null, seguridad.Object); | 166 var agenda = new Agenda(null, null, seguridad.Object, new EventoRepository()); |
140 | 167 |
141 var vanPropuesta = new Evento { Titulo = "Van propuesta" }; | 168 var vanPropuesta = new Evento { Titulo = "Van propuesta" }; |
142 var vanPublicada = EventoObjectMother.GetVanValidaParaPublicar(); | 169 var vanPublicada = EventoObjectMother.GetVanValidaParaPublicar(); |
143 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); | 170 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); |
144 | 171 |
148 IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); | 175 IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); |
149 IList<Evento> eventosPublicados = agenda.GetEventosPublicados(); | 176 IList<Evento> eventosPublicados = agenda.GetEventosPublicados(); |
150 | 177 |
151 Assert.AreEqual(1, eventosPropuestos.Count); | 178 Assert.AreEqual(1, eventosPropuestos.Count); |
152 Assert.AreEqual(1, eventosPublicados.Count); | 179 Assert.AreEqual(1, eventosPublicados.Count); |
153 } | 180 } |
154 | 181 |
155 [Test] | 182 [Test] |
156 public void Propuesta_de_van_sin_titulo() | 183 public void Propuesta_de_van_sin_titulo() |
157 { | 184 { |
185 var repository = new Mock<IEventoRepository>(); | |
158 var van = new Evento(); | 186 var van = new Evento(); |
159 | 187 |
160 var seguridad = new Mock<ISeguridad>(); | 188 var seguridad = new Mock<ISeguridad>(); |
161 var agenda = new Agenda(null, null, seguridad.Object); | 189 var agenda = new Agenda(null, null, seguridad.Object, repository.Object); |
162 | 190 |
163 Assert.Throws<ValidationException>(() => agenda.Proponer(van)); | 191 Assert.Throws<ValidationException>(() => agenda.Proponer(van)); |
164 Assert.AreEqual(Guid.Empty, van.Id); | 192 Assert.AreEqual(Guid.Empty, van.Id); |
193 | |
194 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); | |
165 } | 195 } |
166 | 196 |
167 [Test] | 197 [Test] |
168 public void Agendar_van_propuesta_sin_fecha() | 198 public void Agendar_van_propuesta_sin_fecha() |
169 { | 199 { |
170 var seguridad = new Mock<ISeguridad>(); | 200 var repository = new EventoRepository(); |
171 var agenda = new Agenda(null, null, seguridad.Object); | 201 |
202 var seguridad = new Mock<ISeguridad>(); | |
203 var agenda = new Agenda(null, null, seguridad.Object, repository); | |
172 | 204 |
173 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); | 205 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); |
174 | 206 |
175 { | 207 { |
176 var van = new Evento {Titulo = "Van propuesta"}; | 208 var van = new Evento {Titulo = "Van propuesta"}; |
185 } | 217 } |
186 | 218 |
187 [Test] | 219 [Test] |
188 public void Agendar_van_propuesta_sin_ponente() | 220 public void Agendar_van_propuesta_sin_ponente() |
189 { | 221 { |
190 var seguridad = new Mock<ISeguridad>(); | 222 var repository = new EventoRepository(); |
191 var agenda = new Agenda(null, null, seguridad.Object); | 223 |
224 var seguridad = new Mock<ISeguridad>(); | |
225 var agenda = new Agenda(null, null, seguridad.Object, repository); | |
192 | 226 |
193 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); | 227 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); |
194 | 228 |
195 { | 229 { |
196 var van = new Evento { Titulo = "Van propuesta" }; | 230 var van = new Evento { Titulo = "Van propuesta" }; |
207 } | 241 } |
208 | 242 |
209 [Test] | 243 [Test] |
210 public void Van_crud() | 244 public void Van_crud() |
211 { | 245 { |
212 var van = EventoObjectMother.GetVanValidaParaPublicar(); | 246 var van = EventoObjectMother.GetVanValidaParaPublicar(); |
213 | 247 |
214 Guid vanId; | 248 Guid vanId; |
215 { | 249 { |
216 var agenda = new Agenda(null, null, SeguridadServiceDefault); | 250 var agenda = new Agenda(null, null, SeguridadServiceDefault, new EventoRepository()); |
217 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); | 251 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha); |
218 | 252 |
219 IAgendaRepository agendaRepository = new AgendaRepository(); | 253 IAgendaRepository agendaRepository = new AgendaRepository(); |
220 | 254 |
221 agendaRepository.Save(agenda); | 255 agendaRepository.Save(agenda); |