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);