Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Tests/AgendaTests.cs @ 4:49b572535156
proponer van
publicar van propuesta
comportamiento ante excepcion en publicador
author | nelopauselli |
---|---|
date | Tue, 08 Feb 2011 00:08:49 -0300 |
parents | 5f007e266509 |
children | 2912c1dd0e6b |
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); |
4 | 39 Assert.AreEqual(1, agenda.Eventos.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)); | |
54 Assert.AreEqual(0, agenda.Eventos.Count()); | |
55 | |
56 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | |
57 } | |
58 | |
59 | |
60 [Test] | |
1 | 61 public void Publicar_van_multiples_publicadores() |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
62 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
63 var publicador1 = new Mock<IPublicador>(); |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
64 var publicador2 = new Mock<IPublicador>(); |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
65 |
3 | 66 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
|
67 |
4 | 68 var van = EventoObjectMother.GetVanValidaParaPublicar(); |
69 agenda.Publicar(van); | |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
70 |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
71 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
|
72 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
|
73 } |
1 | 74 |
75 [Test] | |
76 public void Publicar_y_recordar_van() | |
77 { | |
78 var publicador1 = new Mock<IPublicador>(); | |
79 var publicador2 = new Mock<IPublicador>(); | |
80 var recordador1 = new Mock<IRecordador>(); | |
81 | |
3 | 82 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), recordador1.Object); |
1 | 83 |
4 | 84 var van = EventoObjectMother.GetVanValidaParaPublicar(); |
1 | 85 agenda.Publicar(van); |
86 | |
87 agenda.Recordar(van); | |
88 | |
89 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | |
90 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | |
91 recordador1.Verify(r => r.Recordar(It.IsAny<Evento>()), Times.Exactly(1)); | |
92 | |
2 | 93 Assert.AreEqual(1, agenda.Eventos.Count()); |
94 } | |
95 | |
96 [Test] | |
4 | 97 public void Propuesta_de_van() |
98 { | |
99 var van = new Van{Titulo = "Van propuesta"}; | |
100 | |
101 var agenda = new Agenda(null, null); | |
102 agenda.Proponer(van); | |
103 | |
104 IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); | |
105 Assert.IsNotNull(eventosPropuestos); | |
106 Assert.AreEqual(1, eventosPropuestos.Count); | |
107 Assert.AreEqual("Van propuesta", eventosPropuestos[0].Titulo); | |
108 } | |
109 | |
110 [Test] | |
111 public void Propuesta_de_van_sin_titulo() | |
112 { | |
113 var van = new Van(); | |
114 | |
115 var agenda = new Agenda(null, null); | |
116 Assert.Throws<ValidationException>(() => agenda.Proponer(van)); | |
117 Assert.AreEqual(Guid.Empty, van.Id); | |
118 } | |
119 | |
120 | |
121 [Test] | |
122 public void Agendar_van_propuesta_sin_fecha() | |
123 { | |
124 var agenda = new Agenda(null, null); | |
125 | |
126 { | |
127 var van = new Van {Titulo = "Van propuesta"}; | |
128 agenda.Proponer(van); | |
129 } | |
130 | |
131 { | |
132 var van = agenda.GetEventosPropuestos().FirstOrDefault(); | |
133 Assert.IsNotNull(van); | |
134 Assert.Throws<ValidationException>(()=>agenda.Publicar(van)); | |
135 } | |
136 } | |
137 | |
138 [Test] | |
139 public void Agendar_van_propuesta_sin_ponente() | |
140 { | |
141 var agenda = new Agenda(null, null); | |
142 | |
143 { | |
144 var van = new Van { Titulo = "Van propuesta" }; | |
145 agenda.Proponer(van); | |
146 } | |
147 | |
148 { | |
149 var van = agenda.GetEventosPropuestos().FirstOrDefault() as Van; | |
150 Assert.IsNotNull(van); | |
151 | |
152 van.Fecha = DateTime.Today.AddDays(5); | |
153 Assert.Throws<ValidationException>(() => agenda.Publicar(van)); | |
154 } | |
155 } | |
156 | |
157 | |
158 [Test] | |
2 | 159 public void Van_crud() |
160 { | |
161 Guid vanId; | |
162 { | |
163 var agenda = new Agenda(null, null); | |
4 | 164 agenda.Publicar(EventoObjectMother.GetVanValidaParaPublicar()); |
2 | 165 |
166 IAgendaRepository agendaRepository = new AgendaRepository(); | |
167 | |
168 agendaRepository.Save(agenda); | |
169 vanId = agenda.Id; | |
170 } | |
171 | |
172 { | |
173 IAgendaRepository agendaRepository = new AgendaRepository(); | |
174 | |
3 | 175 Agenda agenda = agendaRepository.Get(vanId); |
2 | 176 |
177 Assert.IsNotNull(agenda); | |
178 Assert.AreEqual(1, agenda.Eventos.Count()); | |
4 | 179 agenda.Publicar(EventoObjectMother.GetCafeValidoParaPublicar()); |
2 | 180 |
181 agendaRepository.Update(agenda); | |
182 } | |
183 | |
184 { | |
185 IAgendaRepository agendaRepository = new AgendaRepository(); | |
186 | |
3 | 187 Agenda agenda = agendaRepository.Get(vanId); |
2 | 188 |
189 Assert.IsNotNull(agenda); | |
190 Assert.AreEqual(2, agenda.Eventos.Count()); | |
191 | |
192 agendaRepository.Delete(agenda); | |
193 } | |
194 | |
195 { | |
196 IAgendaRepository agendaRepository = new AgendaRepository(); | |
197 | |
3 | 198 Agenda agenda = agendaRepository.Get(vanId); |
2 | 199 |
200 Assert.IsNull(agenda); | |
201 } | |
1 | 202 } |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
203 } |
3 | 204 } |