Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Tests/AgendaTests.cs @ 7:deee2ca97f5b
Se modificó Agenda para exponer los eventos a través de métodos y no a través de propiedades. (Servicio de Negocios vs Objeto Persistente).
author | juanjose.montesdeocaarbos |
---|---|
date | Tue, 08 Feb 2011 07:56:53 -0300 |
parents | 2912c1dd0e6b |
children | cae27d7eb697 |
rev | line source |
---|---|
2 | 1 using System; |
4 | 2 using System.Collections.Generic; |
2 | 3 using System.Linq; |
4 using Agendas.Repositories.Memory; | |
5 using AltNetHispano.Agendas.Domain; | |
4 | 6 using AltNetHispano.Agendas.Domain.Exceptions; |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
7 using AltNetHispano.Agendas.Domain.Repositories; |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
8 using Moq; |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
9 using NUnit.Framework; |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
10 |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
11 namespace AltNetHispano.Agendas.Tests |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
12 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
13 [TestFixture] |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
14 public class AgendaTests |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
15 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
16 [Test] |
3 | 17 public void Publicar_cafe() |
18 { | |
19 var publicador = new Mock<IPublicador>(); | |
20 | |
21 var agenda = new Agenda(publicador.Object, null); | |
22 | |
4 | 23 var cafe = EventoObjectMother.GetCafeValidoParaPublicar(); |
3 | 24 agenda.Publicar(cafe); |
25 | |
26 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | |
27 } | |
28 | |
29 [Test] | |
1 | 30 public void Publicar_van() |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
31 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
32 var publicador = new Mock<IPublicador>(); |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
33 |
2 | 34 var agenda = new Agenda(publicador.Object, null); |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
35 |
4 | 36 var van = EventoObjectMother.GetVanValidaParaPublicar(); |
37 | |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
38 agenda.Publicar(van); |
7
deee2ca97f5b
Se modificó Agenda para exponer los eventos a través de métodos y no a través de propiedades. (Servicio de Negocios vs Objeto Persistente).
juanjose.montesdeocaarbos
parents:
6
diff
changeset
|
39 Assert.AreEqual(1, agenda.GetEventosPublicados().Count); |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
40 |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
41 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
42 } |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
43 |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
44 [Test] |
4 | 45 public void Error_al_publicar_van() |
46 { | |
47 var publicador = new Mock<IPublicador>(); | |
48 publicador.Setup(p => p.Publicar(It.IsAny<Evento>())).Throws(new Exception("Error intencional")); | |
49 | |
50 var agenda = new Agenda(publicador.Object, null); | |
51 | |
52 var van = EventoObjectMother.GetVanValidaParaPublicar(); | |
53 Assert.Throws<Exception>(() => agenda.Publicar(van)); | |
7
deee2ca97f5b
Se modificó Agenda para exponer los eventos a través de métodos y no a través de propiedades. (Servicio de Negocios vs Objeto Persistente).
juanjose.montesdeocaarbos
parents:
6
diff
changeset
|
54 Assert.AreEqual(0, agenda.GetEventosPublicados().Count); |
4 | 55 |
56 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | |
57 } | |
58 | |
59 [Test] | |
1 | 60 public void Publicar_van_multiples_publicadores() |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
61 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
62 var publicador1 = new Mock<IPublicador>(); |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
63 var publicador2 = new Mock<IPublicador>(); |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
64 |
3 | 65 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), null); |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
66 |
4 | 67 var van = EventoObjectMother.GetVanValidaParaPublicar(); |
68 agenda.Publicar(van); | |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
69 |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
70 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
71 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
72 } |
1 | 73 |
74 [Test] | |
75 public void Publicar_y_recordar_van() | |
76 { | |
77 var publicador1 = new Mock<IPublicador>(); | |
78 var publicador2 = new Mock<IPublicador>(); | |
79 var recordador1 = new Mock<IRecordador>(); | |
80 | |
3 | 81 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), recordador1.Object); |
1 | 82 |
4 | 83 var van = EventoObjectMother.GetVanValidaParaPublicar(); |
1 | 84 agenda.Publicar(van); |
85 | |
86 agenda.Recordar(van); | |
87 | |
88 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | |
89 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | |
90 recordador1.Verify(r => r.Recordar(It.IsAny<Evento>()), Times.Exactly(1)); | |
91 | |
7
deee2ca97f5b
Se modificó Agenda para exponer los eventos a través de métodos y no a través de propiedades. (Servicio de Negocios vs Objeto Persistente).
juanjose.montesdeocaarbos
parents:
6
diff
changeset
|
92 Assert.AreEqual(1, agenda.GetEventosPublicados().Count); |
2 | 93 } |
94 | |
95 [Test] | |
4 | 96 public void Propuesta_de_van() |
97 { | |
98 var van = new Van{Titulo = "Van propuesta"}; | |
99 | |
100 var agenda = new Agenda(null, null); | |
101 agenda.Proponer(van); | |
102 | |
103 IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); | |
104 Assert.IsNotNull(eventosPropuestos); | |
105 Assert.AreEqual(1, eventosPropuestos.Count); | |
106 Assert.AreEqual("Van propuesta", eventosPropuestos[0].Titulo); | |
107 } | |
108 | |
6
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
109 [Test] |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
110 public void Verificar_propuesta_separada_de_publicacion() |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
111 { |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
112 var agenda = new Agenda(null, null); |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
113 |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
114 var vanPropuesta = new Van { Titulo = "Van propuesta" }; |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
115 var vanPublicada = EventoObjectMother.GetVanValidaParaPublicar(); |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
116 |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
117 agenda.Proponer(vanPropuesta); |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
118 agenda.Publicar(vanPublicada); |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
119 |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
120 IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
121 IList<Evento> eventosPublicados = agenda.GetEventosPublicados(); |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
122 |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
123 Assert.AreEqual(1, eventosPropuestos.Count); |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
124 Assert.AreEqual(1, eventosPublicados.Count); |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
125 } |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
126 |
4 | 127 [Test] |
128 public void Propuesta_de_van_sin_titulo() | |
129 { | |
130 var van = new Van(); | |
131 | |
132 var agenda = new Agenda(null, null); | |
133 Assert.Throws<ValidationException>(() => agenda.Proponer(van)); | |
134 Assert.AreEqual(Guid.Empty, van.Id); | |
135 } | |
136 | |
137 [Test] | |
138 public void Agendar_van_propuesta_sin_fecha() | |
139 { | |
140 var agenda = new Agenda(null, null); | |
141 | |
142 { | |
143 var van = new Van {Titulo = "Van propuesta"}; | |
144 agenda.Proponer(van); | |
145 } | |
146 | |
147 { | |
148 var van = agenda.GetEventosPropuestos().FirstOrDefault(); | |
149 Assert.IsNotNull(van); | |
150 Assert.Throws<ValidationException>(()=>agenda.Publicar(van)); | |
151 } | |
152 } | |
153 | |
154 [Test] | |
155 public void Agendar_van_propuesta_sin_ponente() | |
156 { | |
157 var agenda = new Agenda(null, null); | |
158 | |
159 { | |
160 var van = new Van { Titulo = "Van propuesta" }; | |
161 agenda.Proponer(van); | |
162 } | |
163 | |
164 { | |
165 var van = agenda.GetEventosPropuestos().FirstOrDefault() as Van; | |
166 Assert.IsNotNull(van); | |
167 | |
168 van.Fecha = DateTime.Today.AddDays(5); | |
169 Assert.Throws<ValidationException>(() => agenda.Publicar(van)); | |
170 } | |
171 } | |
172 | |
173 [Test] | |
2 | 174 public void Van_crud() |
175 { | |
176 Guid vanId; | |
177 { | |
178 var agenda = new Agenda(null, null); | |
4 | 179 agenda.Publicar(EventoObjectMother.GetVanValidaParaPublicar()); |
2 | 180 |
181 IAgendaRepository agendaRepository = new AgendaRepository(); | |
182 | |
183 agendaRepository.Save(agenda); | |
184 vanId = agenda.Id; | |
185 } | |
186 | |
187 { | |
188 IAgendaRepository agendaRepository = new AgendaRepository(); | |
189 | |
3 | 190 Agenda agenda = agendaRepository.Get(vanId); |
2 | 191 |
192 Assert.IsNotNull(agenda); | |
7
deee2ca97f5b
Se modificó Agenda para exponer los eventos a través de métodos y no a través de propiedades. (Servicio de Negocios vs Objeto Persistente).
juanjose.montesdeocaarbos
parents:
6
diff
changeset
|
193 Assert.AreEqual(1, agenda.GetEventosPublicados().Count); |
4 | 194 agenda.Publicar(EventoObjectMother.GetCafeValidoParaPublicar()); |
2 | 195 |
196 agendaRepository.Update(agenda); | |
197 } | |
198 | |
199 { | |
200 IAgendaRepository agendaRepository = new AgendaRepository(); | |
201 | |
3 | 202 Agenda agenda = agendaRepository.Get(vanId); |
2 | 203 |
204 Assert.IsNotNull(agenda); | |
7
deee2ca97f5b
Se modificó Agenda para exponer los eventos a través de métodos y no a través de propiedades. (Servicio de Negocios vs Objeto Persistente).
juanjose.montesdeocaarbos
parents:
6
diff
changeset
|
205 Assert.AreEqual(2, agenda.GetEventosPublicados().Count); |
2 | 206 |
207 agendaRepository.Delete(agenda); | |
208 } | |
209 | |
210 { | |
211 IAgendaRepository agendaRepository = new AgendaRepository(); | |
212 | |
3 | 213 Agenda agenda = agendaRepository.Get(vanId); |
2 | 214 |
215 Assert.IsNull(agenda); | |
216 } | |
1 | 217 } |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
218 } |
3 | 219 } |