comparison Agendas/trunk/src/Agendas.Tests/AgendarTests.cs @ 94:db4b1e2cae49

Cambio del nombre de la clase Ponente a Persona Se agrega la clase Cuenta para identificar cada una de las cuentas con que se puede autenticar una persona Alta Automatica de cuentas de twitter creando la persona
author Nelo@Kenia.neluz.int
date Sat, 04 Jun 2011 12:11:17 -0300
parents 26d0513a8410
children 83d76f6e0a3c
comparison
equal deleted inserted replaced
93:65f0b3d70c18 94:db4b1e2cae49
2 using System.Collections.Generic; 2 using System.Collections.Generic;
3 using System.Linq; 3 using System.Linq;
4 using AltNetHispano.Agendas.Domain; 4 using AltNetHispano.Agendas.Domain;
5 using AltNetHispano.Agendas.Domain.Exceptions; 5 using AltNetHispano.Agendas.Domain.Exceptions;
6 using AltNetHispano.Agendas.Domain.Repositories; 6 using AltNetHispano.Agendas.Domain.Repositories;
7 using AltNetHispano.Agendas.Repositories.Memory;
7 using Moq; 8 using Moq;
8 using NUnit.Framework; 9 using NUnit.Framework;
9 10
10 namespace AltNetHispano.Agendas.Tests 11 namespace AltNetHispano.Agendas.Tests
11 { 12 {
26 var publicador = new Mock<IPublicador>(); 27 var publicador = new Mock<IPublicador>();
27 var repository = new Mock<IEventoRepository>(); 28 var repository = new Mock<IEventoRepository>();
28 29
29 publicador.Setup(p => p.Publicar(It.IsAny<IEnumerable<Track>>())).Throws(new Exception("Error intencional")); 30 publicador.Setup(p => p.Publicar(It.IsAny<IEnumerable<Track>>())).Throws(new Exception("Error intencional"));
30 31
31 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPonenteRepository); 32 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository);
32 33
33 Assert.Throws<Exception>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion)); 34 Assert.Throws<Exception>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion));
34 Assert.AreEqual(0, agenda.GetEventosAgendados().Count); 35 Assert.AreEqual(0, agenda.GetEventosAgendados().Count);
35 36
36 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); 37 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
38 } 39 }
39 40
40 [Test] 41 [Test]
41 public void Intentar_agendar_evento_sin_servicio_de_seguridad() 42 public void Intentar_agendar_evento_sin_servicio_de_seguridad()
42 { 43 {
43 IdentityContext.Current = null; 44 IdentityContext.Init(null, new PersonaRepository());
44 45
45 var publicador = new Mock<IPublicador>(); 46 var publicador = new Mock<IPublicador>();
46 var repository = new Mock<IEventoRepository>(); 47 var repository = new Mock<IEventoRepository>();
47 48
48 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPonenteRepository); 49 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository);
49 50
50 Assert.Throws<IdentityContextNotConfiguredException>( 51 Assert.Throws<IdentityContextNotConfiguredException>(
51 () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 52 () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
52 urlInvitacion)); 53 urlInvitacion));
53 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); 54 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
54 } 55 }
55 56
56 [Test] 57 [Test]
57 public void Intentar_agendar_evento_sin_usuario_autenticado() 58 public void Intentar_agendar_evento_sin_usuario_autenticado()
58 { 59 {
59 SetCurrentUser(null); 60 SetCurrentUser(null, null);
60 61
61 var publicador = new Mock<IPublicador>(); 62 var publicador = new Mock<IPublicador>();
62 var repository = new Mock<IEventoRepository>(); 63 var repository = new Mock<IEventoRepository>();
63 64
64 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPonenteRepository); 65 var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository);
65 66
66 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 67 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
67 urlInvitacion)); 68 urlInvitacion));
68 69
69 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(0)); 70 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(0));
71 } 72 }
72 73
73 [Test] 74 [Test]
74 public void Intentar_agendar_evento_sin_ponente() 75 public void Intentar_agendar_evento_sin_ponente()
75 { 76 {
76 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPonenteRepository); 77 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
77 78
78 var r = agenda.Agendar("Van para publicar", string.Empty, DateTime.Now, 79 var r = agenda.Agendar("Van para publicar", string.Empty, DateTime.Now,
79 urlInvitacion); 80 urlInvitacion);
80 81
81 Assert.IsFalse(r.Succeful); 82 Assert.IsFalse(r.Succeful);
88 var publicador2 = new Mock<IPublicador>(); 89 var publicador2 = new Mock<IPublicador>();
89 90
90 var repository = new Mock<IEventoRepository>(); 91 var repository = new Mock<IEventoRepository>();
91 92
92 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), 93 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}),
93 repository.Object, DefaultPonenteRepository); 94 repository.Object, DefaultPersonaRepository);
94 95
95 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 96 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
96 urlInvitacion); 97 urlInvitacion);
97 98
98 publicador1.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); 99 publicador1.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
103 [Test] 104 [Test]
104 public void Agendar_evento_correctamente() 105 public void Agendar_evento_correctamente()
105 { 106 {
106 var publicador = new Mock<IPublicador>(); 107 var publicador = new Mock<IPublicador>();
107 108
108 var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPonenteRepository); 109 var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository);
109 110
110 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 111 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
111 urlInvitacion); 112 urlInvitacion);
112 113
113 Assert.AreEqual(0, agenda.GetEventosPropuestos().Count); 114 Assert.AreEqual(0, agenda.GetEventosPropuestos().Count);
117 118
118 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); 119 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
119 120
120 var evento = eventos[0]; 121 var evento = eventos[0];
121 122
122 Assert.IsNotNull(evento.Ponente); 123 Assert.IsNotNull(evento.Persona);
123 Assert.IsNotNull(evento.Ponente.Eventos); 124 Assert.IsNotNull(evento.Persona.Eventos);
124 Assert.AreEqual(1, evento.Ponente.Eventos.Count()); 125 Assert.AreEqual(1, evento.Persona.Eventos.Count());
125 Assert.AreEqual(evento, evento.Ponente.Eventos.First()); 126 Assert.AreEqual(evento, evento.Persona.Eventos.First());
126 127
127 } 128 }
128 129
129 [Test] 130 [Test]
130 public void Agendar_y_modificar_evento() 131 public void Agendar_y_modificar_evento()
131 { 132 {
132 var repository = DefaultEventoRepository; 133 var repository = DefaultEventoRepository;
133 var publicador = new Mock<IPublicador>(); 134 var publicador = new Mock<IPublicador>();
134 135
135 var agenda = new Agenda(publicador.Object, repository, DefaultPonenteRepository); 136 var agenda = new Agenda(publicador.Object, repository, DefaultPersonaRepository);
136 137
137 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 138 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
138 urlInvitacion); 139 urlInvitacion);
139 140
140 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); 141 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
148 149
149 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2)); 150 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2));
150 151
151 evento = repository.GetEventosConFecha().First(); 152 evento = repository.GetEventosConFecha().First();
152 Assert.AreEqual("otro titulo", evento.Titulo); 153 Assert.AreEqual("otro titulo", evento.Titulo);
153 Assert.AreEqual("otro ponente", evento.Ponente.Nombre); 154 Assert.AreEqual("otro ponente", evento.Persona.Nombre);
154 Assert.AreEqual(fecha, evento.Fecha); 155 Assert.AreEqual(fecha, evento.Fecha);
155 156
156 var idEventoNoExistente = new Guid("99999999999999999999999999999999"); 157 var idEventoNoExistente = new Guid("99999999999999999999999999999999");
157 Assert.Throws<EventoNotFoundException>( 158 Assert.Throws<EventoNotFoundException>(
158 () => agenda.ModificarEvento(idEventoNoExistente, "algún título", "un ponente", DateTime.Now, urlInvitacion)); 159 () => agenda.ModificarEvento(idEventoNoExistente, "algún título", "un ponente", DateTime.Now, urlInvitacion));
163 { 164 {
164 var publicador1 = new Mock<IPublicador>(); 165 var publicador1 = new Mock<IPublicador>();
165 var publicador2 = new Mock<IPublicador>(); 166 var publicador2 = new Mock<IPublicador>();
166 167
167 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), 168 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}),
168 DefaultEventoRepository, DefaultPonenteRepository); 169 DefaultEventoRepository, DefaultPersonaRepository);
169 170
170 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, 171 agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
171 urlInvitacion); 172 urlInvitacion);
172 173
173 var van = agenda.GetEventosAgendados().Single(v => v.Titulo == "Van para publicar"); 174 var van = agenda.GetEventosAgendados().Single(v => v.Titulo == "Van para publicar");
183 { 184 {
184 var publicador1 = new Mock<IPublicador>(); 185 var publicador1 = new Mock<IPublicador>();
185 var publicador2 = new Mock<IPublicador>(); 186 var publicador2 = new Mock<IPublicador>();
186 187
187 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), 188 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }),
188 DefaultEventoRepository, DefaultPonenteRepository); 189 DefaultEventoRepository, DefaultPersonaRepository);
189 190
190 agenda.Proponer("Html 5", "jjmontes", urlInvitacion); 191 agenda.Proponer("Html 5", "jjmontes", urlInvitacion);
191 Assert.AreEqual(1, agenda.GetEventosPropuestos().Count); 192 Assert.AreEqual(1, agenda.GetEventosPropuestos().Count);
192 Assert.AreEqual(0, agenda.GetEventosAgendados().Count); 193 Assert.AreEqual(0, agenda.GetEventosAgendados().Count);
193 194