Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Repositories.Tests/EventoCrud.cs @ 234:cc71f96ac134
Combinar
author | juanjose.montesdeocaarbos |
---|---|
date | Tue, 04 Oct 2011 20:36:27 -0300 |
parents | f23ee59ef1bd |
children | c61954d24c8c |
rev | line source |
---|---|
60 | 1 using System; |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
2 using System.Linq; |
222
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
3 using Agendas.Repositories.Tests.Infraestructure; |
60 | 4 using AltNetHispano.Agendas.Domain; |
5 using AltNetHispano.Agendas.Domain.Repositories; | |
222
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
6 using Moq; |
60 | 7 using NUnit.Framework; |
8 | |
222
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
9 namespace Agendas.Repositories.Tests |
60 | 10 { |
222
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
11 public abstract class EventoCrud<T> where T : IInfraestrutureFactory, new() |
60 | 12 { |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
13 private readonly IEventoRepository _eventoRepository; |
60 | 14 private readonly Func<IDisposable> _requestEmulator; |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
15 private readonly IPersonaRepository _personaRepository; |
60 | 16 |
222
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
17 protected EventoCrud() |
60 | 18 { |
222
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
19 var infraestrutureFactory = new T(); |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
20 |
222
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
21 _eventoRepository = infraestrutureFactory.GetEventoRepository(); |
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
22 _personaRepository = infraestrutureFactory.GetPonenteRepository(); |
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
23 _requestEmulator = infraestrutureFactory.GetRequestEmulator(); |
60 | 24 } |
25 | |
222
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
26 [SetUp] |
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
27 public void SetearUsuario() |
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
28 { |
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
29 var seguridad = new Mock<ISeguridad>(); |
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
30 seguridad.Setup(s => s.GetUserName()).Returns("neluz"); |
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
31 IdentityContext.Init(seguridad.Object, _personaRepository); |
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
32 } |
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
33 |
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
34 [Test] |
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
35 public void Create() |
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
36 { |
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
37 Assert.AreNotEqual(Guid.Empty, CreateEvento()); |
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
38 } |
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
39 |
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
40 private Guid CreateEvento() |
60 | 41 { |
42 using (_requestEmulator.Invoke()) | |
43 { | |
143 | 44 var ponente = new Persona("Carlos Blé") {Twitter = "carlosble"}; |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
45 _personaRepository.Save(ponente); |
60 | 46 |
225 | 47 var colaboradores = new[] |
48 { | |
49 new Persona("Alejandro Labra") {Twitter = "alejandrolabra"}, | |
50 new Persona("Carlos Peix") {Twitter = "carlospeix"} | |
51 }; | |
52 | |
53 foreach (var colaborador in colaboradores) | |
54 _personaRepository.Save(colaborador); | |
55 | |
143 | 56 var usuario = new Persona("Nelo") {Twitter = "nelopauselli"}; |
120
c3573defd18f
Agregado de Fecha, Usuario y Successful en TrackLog
Jorge@Jorge-PC
parents:
106
diff
changeset
|
57 _personaRepository.Save(usuario); |
c3573defd18f
Agregado de Fecha, Usuario y Successful en TrackLog
Jorge@Jorge-PC
parents:
106
diff
changeset
|
58 |
c3573defd18f
Agregado de Fecha, Usuario y Successful en TrackLog
Jorge@Jorge-PC
parents:
106
diff
changeset
|
59 var evento = Evento.Proponer("TDD - Diseño Basado en Ejemplos", ponente, string.Empty, TipoEvento.Van); |
225 | 60 evento.ActualizarOtrosPonentes(colaboradores); |
61 | |
120
c3573defd18f
Agregado de Fecha, Usuario y Successful en TrackLog
Jorge@Jorge-PC
parents:
106
diff
changeset
|
62 evento.Tracks.First().LogAdd(new TrackLog(TrackLogPropietario.Twitter, "Mensaje", usuario, true)); |
c3573defd18f
Agregado de Fecha, Usuario y Successful en TrackLog
Jorge@Jorge-PC
parents:
106
diff
changeset
|
63 |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
80
diff
changeset
|
64 _eventoRepository.Save(evento); |
60 | 65 |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
80
diff
changeset
|
66 return evento.Id; |
60 | 67 } |
68 } | |
69 | |
222
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
70 [Test] |
60 | 71 public void Read() |
72 { | |
222
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
73 Guid eventoId = CreateEvento(); |
60 | 74 |
75 using (_requestEmulator.Invoke()) | |
76 { | |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
77 Evento van = _eventoRepository.Get(eventoId); |
60 | 78 |
79 Assert.IsNotNull(van); | |
97
2434c2323f3d
En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents:
95
diff
changeset
|
80 Assert.IsNotNull(van.Ponente); |
2434c2323f3d
En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents:
95
diff
changeset
|
81 Assert.AreEqual("Carlos Blé", van.Ponente.Nombre); |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
82 |
80
c2d98fd6593f
Track como objeto identificable y con referencia al evento correspondiente.
nelopauselli
parents:
79
diff
changeset
|
83 var track1 = van.Tracks.Where(t => t.Accion == Accion.Proponer).FirstOrDefault(); |
c2d98fd6593f
Track como objeto identificable y con referencia al evento correspondiente.
nelopauselli
parents:
79
diff
changeset
|
84 Assert.IsNotNull(track1); |
c2d98fd6593f
Track como objeto identificable y con referencia al evento correspondiente.
nelopauselli
parents:
79
diff
changeset
|
85 Assert.AreEqual(van, track1.Evento); |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
86 |
60 | 87 Assert.AreEqual("TDD - Diseño Basado en Ejemplos", van.Titulo); |
225 | 88 |
89 Assert.AreEqual(2, van.OtrosPonentes.Count()); | |
60 | 90 } |
91 } | |
92 | |
222
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
93 [Test] |
60 | 94 public void Update() |
95 { | |
222
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
96 Guid eventoId = CreateEvento(); |
185
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
169
diff
changeset
|
97 var fechaInicio = new DateTime(2010, 04, 17).ToUniversalTime(); |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
169
diff
changeset
|
98 var fechaTermino = fechaInicio.AddHours(2); |
60 | 99 |
100 using (_requestEmulator.Invoke()) | |
101 { | |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
102 Evento van = _eventoRepository.Get(eventoId); |
60 | 103 |
104 Assert.IsNotNull(van); | |
105 | |
106 van.CambiarTitulo("TDD & Ejemplos"); | |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
107 |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
108 var otroPonente = new Persona("José"); |
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
109 _personaRepository.Save(otroPonente); |
60 | 110 |
185
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
169
diff
changeset
|
111 van.Actualizar(otroPonente, fechaInicio, fechaTermino, null); |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
112 |
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
113 _eventoRepository.Update(van); |
60 | 114 } |
115 | |
116 using (_requestEmulator.Invoke()) | |
117 { | |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
118 Evento van = _eventoRepository.Get(eventoId); |
60 | 119 |
120 Assert.IsNotNull(van); | |
97
2434c2323f3d
En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents:
95
diff
changeset
|
121 Assert.IsNotNull(van.Ponente); |
2434c2323f3d
En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents:
95
diff
changeset
|
122 Assert.AreEqual("José", van.Ponente.Nombre); |
60 | 123 Assert.AreEqual("TDD & Ejemplos", van.Titulo); |
185
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
169
diff
changeset
|
124 Assert.AreEqual(new DateTime(2010, 04, 17).ToUniversalTime(), van.FechaInicio); |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
169
diff
changeset
|
125 Assert.AreEqual(fechaTermino, van.FechaTermino); |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
126 |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
127 var ponente1 = _personaRepository.GetByNombre("Carlos Blé"); |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
128 Assert.IsNotNull(ponente1); |
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
129 |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
130 var ponente2 = _personaRepository.GetByNombre("José"); |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
131 Assert.IsNotNull(ponente2); |
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
132 |
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
133 Assert.AreEqual(1, van.Tracks.Where(t => t.Accion == Accion.Proponer).Count()); |
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
134 Assert.AreEqual(1, van.Tracks.Where(t => t.Accion == Accion.Modificar).Count()); |
60 | 135 } |
136 } | |
137 | |
222
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
138 [Test] |
60 | 139 public void Delete() |
140 { | |
222
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
141 Guid eventoId = CreateEvento(); |
60 | 142 |
143 using (_requestEmulator.Invoke()) | |
144 { | |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
145 Evento van = _eventoRepository.Get(eventoId); |
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
146 Assert.IsNotNull(van); |
60 | 147 |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
148 _eventoRepository.Delete(van); |
60 | 149 } |
150 | |
151 using (_requestEmulator.Invoke()) | |
152 { | |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
153 Evento van = _eventoRepository.Get(eventoId); |
60 | 154 |
155 Assert.IsNull(van); | |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
156 |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
157 var ponente = _personaRepository.GetByNombre("Carlos Blé"); |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
158 |
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
159 Assert.IsNotNull(ponente); |
60 | 160 } |
161 } | |
140
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
162 |
222
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
163 [Test] |
140
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
164 public void Workflow() |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
165 { |
222
68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
nelopauselli
parents:
185
diff
changeset
|
166 Guid eventoId = CreateEvento(); |
140
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
167 |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
168 using (_requestEmulator.Invoke()) |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
169 { |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
170 Evento evento = _eventoRepository.Get(eventoId); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
171 Assert.AreEqual(EventoPropuestoState.GetInstance(), evento.Estado); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
172 |
185
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
169
diff
changeset
|
173 evento.Agendar(evento.Ponente, evento.FechaInicio, evento.FechaTermino, null); |
140
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
174 } |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
175 |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
176 using (_requestEmulator.Invoke()) |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
177 { |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
178 Evento evento = _eventoRepository.Get(eventoId); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
179 Assert.AreEqual(EventoAgendadoState.GetInstance(), evento.Estado); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
180 |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
181 evento.Confirmar(); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
182 } |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
183 |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
184 using (_requestEmulator.Invoke()) |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
185 { |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
186 Evento evento = _eventoRepository.Get(eventoId); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
187 Assert.AreEqual(EventoConfirmadoState.GetInstance(), evento.Estado); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
188 |
169
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
143
diff
changeset
|
189 evento.Publicar(1, null, new TimeSpan(0, 0, 0)); |
140
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
190 } |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
191 |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
192 using (_requestEmulator.Invoke()) |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
193 { |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
194 Evento evento = _eventoRepository.Get(eventoId); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
195 Assert.AreEqual(EventoPublicadoState.GetInstance(), evento.Estado); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
196 } |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
197 } |
60 | 198 } |
199 } |