comparison Agendas/trunk/src/Agendas.Tests/AgendaTests.cs @ 12:05996fa19e04

Unificamos Van y Cafe en Evento Agenda.Publicar con los valores como parĂ¡metros independientes
author nelo@MTEySS.neluz.int
date Sun, 13 Mar 2011 19:50:17 -0300
parents 9d6b28a696d1
children 08b9e96132a5
comparison
equal deleted inserted replaced
11:9d6b28a696d1 12:05996fa19e04
22 return seguridad.Object; 22 return seguridad.Object;
23 } 23 }
24 } 24 }
25 25
26 [Test] 26 [Test]
27 public void Publicar_cafe() 27 public void Publicar_van_con_usuario_autenticado()
28 { 28 {
29 var publicador = new Mock<IPublicador>(); 29 var publicador = new Mock<IPublicador>();
30
30 var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault); 31 var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault);
31 32
32 var cafe = EventoObjectMother.GetCafeValidoParaPublicar(); 33 var van = EventoObjectMother.GetVanValidaParaPublicar();
33 agenda.Publicar(cafe); 34
34 35 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha);
35 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
36 }
37
38 [Test]
39 public void Publicar_van_con_usuario_autenticado()
40 {
41 var publicador = new Mock<IPublicador>();
42
43 var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault);
44
45 var van = EventoObjectMother.GetVanValidaParaPublicar();
46
47 agenda.Publicar(van);
48 Assert.AreEqual(1, agenda.GetEventosPublicados().Count); 36 Assert.AreEqual(1, agenda.GetEventosPublicados().Count);
49 37
50 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); 38 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
51 } 39 }
52 40
59 47
60 var van = EventoObjectMother.GetVanValidaParaPublicar(); 48 var van = EventoObjectMother.GetVanValidaParaPublicar();
61 49
62 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalSinAutenticar()); 50 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalSinAutenticar());
63 51
64 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar(van)); 52 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha));
65 } 53 }
66 54
67 [Test] 55 [Test]
68 public void Publicar_van_sin_servicio_de_seguridad() 56 public void Publicar_van_sin_servicio_de_seguridad()
69 { 57 {
71 59
72 var agenda = new Agenda(publicador.Object, null, null); 60 var agenda = new Agenda(publicador.Object, null, null);
73 61
74 var van = EventoObjectMother.GetVanValidaParaPublicar(); 62 var van = EventoObjectMother.GetVanValidaParaPublicar();
75 63
76 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar(van)); 64 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha));
77 } 65 }
78 66
79 [Test] 67 [Test]
80 public void Error_al_publicar_van() 68 public void Error_al_publicar_van()
81 { 69 {
83 publicador.Setup(p => p.Publicar(It.IsAny<Evento>())).Throws(new Exception("Error intencional")); 71 publicador.Setup(p => p.Publicar(It.IsAny<Evento>())).Throws(new Exception("Error intencional"));
84 72
85 var agenda = new Agenda(publicador.Object, null, null); 73 var agenda = new Agenda(publicador.Object, null, null);
86 74
87 var van = EventoObjectMother.GetVanValidaParaPublicar(); 75 var van = EventoObjectMother.GetVanValidaParaPublicar();
88 Assert.Throws<Exception>(() => agenda.Publicar(van)); 76 Assert.Throws<Exception>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha));
89 Assert.AreEqual(0, agenda.GetEventosPublicados().Count); 77 Assert.AreEqual(0, agenda.GetEventosPublicados().Count);
90 78
91 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); 79 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
92 } 80 }
93 81
98 var publicador2 = new Mock<IPublicador>(); 86 var publicador2 = new Mock<IPublicador>();
99 87
100 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), null, SeguridadServiceDefault); 88 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), null, SeguridadServiceDefault);
101 89
102 var van = EventoObjectMother.GetVanValidaParaPublicar(); 90 var van = EventoObjectMother.GetVanValidaParaPublicar();
103 agenda.Publicar(van); 91 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha);
104 92
105 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); 93 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
106 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); 94 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
107 } 95 }
108 96
114 var recordador1 = new Mock<IRecordador>(); 102 var recordador1 = new Mock<IRecordador>();
115 103
116 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), recordador1.Object, SeguridadServiceDefault); 104 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), recordador1.Object, SeguridadServiceDefault);
117 105
118 var van = EventoObjectMother.GetVanValidaParaPublicar(); 106 var van = EventoObjectMother.GetVanValidaParaPublicar();
119 agenda.Publicar(van); 107 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha);
120 108
121 agenda.Recordar(van); 109 agenda.Recordar(van);
122 110
123 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); 111 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
124 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); 112 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
128 } 116 }
129 117
130 [Test] 118 [Test]
131 public void Propuesta_de_van_con_usuario_autenticado() 119 public void Propuesta_de_van_con_usuario_autenticado()
132 { 120 {
133 var van = new Van{Titulo = "Van propuesta"}; 121 var van = new Evento{Titulo = "Van propuesta"};
134 122
135 var seguridad = new Mock<ISeguridad>(); 123 var seguridad = new Mock<ISeguridad>();
136 var agenda = new Agenda(null, null, seguridad.Object); 124 var agenda = new Agenda(null, null, seguridad.Object);
137 125
138 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); 126 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles());
148 public void Verificar_propuesta_separada_de_publicacion() 136 public void Verificar_propuesta_separada_de_publicacion()
149 { 137 {
150 var seguridad = new Mock<ISeguridad>(); 138 var seguridad = new Mock<ISeguridad>();
151 var agenda = new Agenda(null, null, seguridad.Object); 139 var agenda = new Agenda(null, null, seguridad.Object);
152 140
153 var vanPropuesta = new Van { Titulo = "Van propuesta" }; 141 var vanPropuesta = new Evento { Titulo = "Van propuesta" };
154 var vanPublicada = EventoObjectMother.GetVanValidaParaPublicar(); 142 var vanPublicada = EventoObjectMother.GetVanValidaParaPublicar();
155 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); 143 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles());
156 144
157 agenda.Proponer(vanPropuesta); 145 agenda.Proponer(vanPropuesta);
158 agenda.Publicar(vanPublicada); 146 agenda.Publicar(vanPublicada.Titulo, vanPublicada.Ponente, vanPublicada.Fecha);
159 147
160 IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); 148 IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos();
161 IList<Evento> eventosPublicados = agenda.GetEventosPublicados(); 149 IList<Evento> eventosPublicados = agenda.GetEventosPublicados();
162 150
163 Assert.AreEqual(1, eventosPropuestos.Count); 151 Assert.AreEqual(1, eventosPropuestos.Count);
165 } 153 }
166 154
167 [Test] 155 [Test]
168 public void Propuesta_de_van_sin_titulo() 156 public void Propuesta_de_van_sin_titulo()
169 { 157 {
170 var van = new Van(); 158 var van = new Evento();
171 159
172 var seguridad = new Mock<ISeguridad>(); 160 var seguridad = new Mock<ISeguridad>();
173 var agenda = new Agenda(null, null, seguridad.Object); 161 var agenda = new Agenda(null, null, seguridad.Object);
174 162
175 Assert.Throws<ValidationException>(() => agenda.Proponer(van)); 163 Assert.Throws<ValidationException>(() => agenda.Proponer(van));
183 var agenda = new Agenda(null, null, seguridad.Object); 171 var agenda = new Agenda(null, null, seguridad.Object);
184 172
185 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); 173 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles());
186 174
187 { 175 {
188 var van = new Van {Titulo = "Van propuesta"}; 176 var van = new Evento {Titulo = "Van propuesta"};
189 agenda.Proponer(van); 177 agenda.Proponer(van);
190 } 178 }
191 179
192 { 180 {
193 var van = agenda.GetEventosPropuestos().FirstOrDefault(); 181 var van = agenda.GetEventosPropuestos().FirstOrDefault();
194 Assert.IsNotNull(van); 182 Assert.IsNotNull(van);
195 Assert.Throws<ValidationException>(()=>agenda.Publicar(van)); 183 Assert.Throws<ValidationException>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha));
196 } 184 }
197 } 185 }
198 186
199 [Test] 187 [Test]
200 public void Agendar_van_propuesta_sin_ponente() 188 public void Agendar_van_propuesta_sin_ponente()
203 var agenda = new Agenda(null, null, seguridad.Object); 191 var agenda = new Agenda(null, null, seguridad.Object);
204 192
205 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); 193 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles());
206 194
207 { 195 {
208 var van = new Van { Titulo = "Van propuesta" }; 196 var van = new Evento { Titulo = "Van propuesta" };
209 agenda.Proponer(van); 197 agenda.Proponer(van);
210 } 198 }
211 199
212 { 200 {
213 var van = agenda.GetEventosPropuestos().FirstOrDefault() as Van; 201 var van = agenda.GetEventosPropuestos().FirstOrDefault();
214 Assert.IsNotNull(van); 202 Assert.IsNotNull(van);
215 203
216 van.Fecha = DateTime.Today.AddDays(5); 204 van.Fecha = DateTime.Today.AddDays(5);
217 Assert.Throws<ValidationException>(() => agenda.Publicar(van)); 205 Assert.Throws<ValidationException>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha));
218 } 206 }
219 } 207 }
220 208
221 [Test] 209 [Test]
222 public void Van_crud() 210 public void Van_crud()
223 { 211 {
224 Guid vanId; 212 var van = EventoObjectMother.GetVanValidaParaPublicar();
213
214 Guid vanId;
225 { 215 {
226 var agenda = new Agenda(null, null, SeguridadServiceDefault); 216 var agenda = new Agenda(null, null, SeguridadServiceDefault);
227 agenda.Publicar(EventoObjectMother.GetVanValidaParaPublicar()); 217 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha);
228 218
229 IAgendaRepository agendaRepository = new AgendaRepository(); 219 IAgendaRepository agendaRepository = new AgendaRepository();
230 220
231 agendaRepository.Save(agenda); 221 agendaRepository.Save(agenda);
232 vanId = agenda.Id; 222 vanId = agenda.Id;
237 227
238 Agenda agenda = agendaRepository.Get(vanId); 228 Agenda agenda = agendaRepository.Get(vanId);
239 229
240 Assert.IsNotNull(agenda); 230 Assert.IsNotNull(agenda);
241 Assert.AreEqual(1, agenda.GetEventosPublicados().Count); 231 Assert.AreEqual(1, agenda.GetEventosPublicados().Count);
242 agenda.Publicar(EventoObjectMother.GetCafeValidoParaPublicar()); 232 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha);
243 233
244 agendaRepository.Update(agenda); 234 agendaRepository.Update(agenda);
245 } 235 }
246 236
247 { 237 {