Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs @ 195:4d0b2552edb2
Ticket 170: Cuando se agenda o confirma un evento, verificar que no existan otros dentro del rango horario en que se desarrollará el evento actual.
author | juanjose.montesdeocaarbos |
---|---|
date | Sat, 13 Aug 2011 01:01:54 -0300 |
parents | 2d02adb79322 |
children |
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; |
60 | 3 using AltNetHispano.Agendas.Domain; |
4 using AltNetHispano.Agendas.Domain.Repositories; | |
5 using NUnit.Framework; | |
6 | |
7 namespace AltNetHispano.Agendas.Tests.Cruds | |
8 { | |
9 public class EventoCrud | |
10 { | |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
11 private readonly IEventoRepository _eventoRepository; |
60 | 12 private readonly Func<IDisposable> _requestEmulator; |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
13 private readonly IPersonaRepository _personaRepository; |
60 | 14 |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
15 public EventoCrud(Func<IEventoRepository> createEventoRepository, Func<IPersonaRepository> createPonenteRepository, Func<IDisposable> requestEmulator) |
60 | 16 { |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
17 _eventoRepository = createEventoRepository.Invoke(); |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
18 _personaRepository = createPonenteRepository.Invoke(); |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
19 |
60 | 20 _requestEmulator = requestEmulator; |
21 } | |
22 | |
23 public Guid Create() | |
24 { | |
25 using (_requestEmulator.Invoke()) | |
26 { | |
143 | 27 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
|
28 _personaRepository.Save(ponente); |
60 | 29 |
143 | 30 var usuario = new Persona("Nelo") {Twitter = "nelopauselli"}; |
120
c3573defd18f
Agregado de Fecha, Usuario y Successful en TrackLog
Jorge@Jorge-PC
parents:
106
diff
changeset
|
31 _personaRepository.Save(usuario); |
c3573defd18f
Agregado de Fecha, Usuario y Successful en TrackLog
Jorge@Jorge-PC
parents:
106
diff
changeset
|
32 |
c3573defd18f
Agregado de Fecha, Usuario y Successful en TrackLog
Jorge@Jorge-PC
parents:
106
diff
changeset
|
33 var evento = Evento.Proponer("TDD - Diseño Basado en Ejemplos", ponente, string.Empty, TipoEvento.Van); |
c3573defd18f
Agregado de Fecha, Usuario y Successful en TrackLog
Jorge@Jorge-PC
parents:
106
diff
changeset
|
34 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
|
35 |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
80
diff
changeset
|
36 _eventoRepository.Save(evento); |
60 | 37 |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
80
diff
changeset
|
38 return evento.Id; |
60 | 39 } |
40 } | |
41 | |
42 public void Read() | |
43 { | |
44 Guid eventoId = Create(); | |
45 | |
46 using (_requestEmulator.Invoke()) | |
47 { | |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
48 Evento van = _eventoRepository.Get(eventoId); |
60 | 49 |
50 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
|
51 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
|
52 Assert.AreEqual("Carlos Blé", van.Ponente.Nombre); |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
53 |
80
c2d98fd6593f
Track como objeto identificable y con referencia al evento correspondiente.
nelopauselli
parents:
79
diff
changeset
|
54 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
|
55 Assert.IsNotNull(track1); |
c2d98fd6593f
Track como objeto identificable y con referencia al evento correspondiente.
nelopauselli
parents:
79
diff
changeset
|
56 Assert.AreEqual(van, track1.Evento); |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
57 |
60 | 58 Assert.AreEqual("TDD - Diseño Basado en Ejemplos", van.Titulo); |
59 } | |
60 } | |
61 | |
62 public void Update() | |
63 { | |
64 Guid eventoId = Create(); | |
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
|
65 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
|
66 var fechaTermino = fechaInicio.AddHours(2); |
60 | 67 |
68 using (_requestEmulator.Invoke()) | |
69 { | |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
70 Evento van = _eventoRepository.Get(eventoId); |
60 | 71 |
72 Assert.IsNotNull(van); | |
73 | |
74 van.CambiarTitulo("TDD & Ejemplos"); | |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
75 |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
76 var otroPonente = new Persona("José"); |
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
77 _personaRepository.Save(otroPonente); |
60 | 78 |
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
|
79 van.Actualizar(otroPonente, fechaInicio, fechaTermino, null); |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
80 |
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
81 _eventoRepository.Update(van); |
60 | 82 } |
83 | |
84 using (_requestEmulator.Invoke()) | |
85 { | |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
86 Evento van = _eventoRepository.Get(eventoId); |
60 | 87 |
88 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
|
89 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
|
90 Assert.AreEqual("José", van.Ponente.Nombre); |
60 | 91 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
|
92 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
|
93 Assert.AreEqual(fechaTermino, van.FechaTermino); |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
94 |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
95 var ponente1 = _personaRepository.GetByNombre("Carlos Blé"); |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
96 Assert.IsNotNull(ponente1); |
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
97 |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
98 var ponente2 = _personaRepository.GetByNombre("José"); |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
99 Assert.IsNotNull(ponente2); |
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
100 |
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
101 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
|
102 Assert.AreEqual(1, van.Tracks.Where(t => t.Accion == Accion.Modificar).Count()); |
60 | 103 } |
104 } | |
105 | |
106 public void Delete() | |
107 { | |
108 Guid eventoId = Create(); | |
109 | |
110 using (_requestEmulator.Invoke()) | |
111 { | |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
112 Evento van = _eventoRepository.Get(eventoId); |
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
113 Assert.IsNotNull(van); |
60 | 114 |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
115 _eventoRepository.Delete(van); |
60 | 116 } |
117 | |
118 using (_requestEmulator.Invoke()) | |
119 { | |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
120 Evento van = _eventoRepository.Get(eventoId); |
60 | 121 |
122 Assert.IsNull(van); | |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
123 |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
124 var ponente = _personaRepository.GetByNombre("Carlos Blé"); |
62
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
125 |
c40b97bbed01
Verificando persistencia de Ponentes y Tracks en tests de CRUD
nelopauselli
parents:
60
diff
changeset
|
126 Assert.IsNotNull(ponente); |
60 | 127 } |
128 } | |
140
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
129 |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
130 public void Workflow() |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
131 { |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
132 Guid eventoId = Create(); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
133 |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
134 using (_requestEmulator.Invoke()) |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
135 { |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
136 Evento evento = _eventoRepository.Get(eventoId); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
137 Assert.AreEqual(EventoPropuestoState.GetInstance(), evento.Estado); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
138 |
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
|
139 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
|
140 } |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
141 |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
142 using (_requestEmulator.Invoke()) |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
143 { |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
144 Evento evento = _eventoRepository.Get(eventoId); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
145 Assert.AreEqual(EventoAgendadoState.GetInstance(), evento.Estado); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
146 |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
147 evento.Confirmar(); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
148 } |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
149 |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
150 using (_requestEmulator.Invoke()) |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
151 { |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
152 Evento evento = _eventoRepository.Get(eventoId); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
153 Assert.AreEqual(EventoConfirmadoState.GetInstance(), evento.Estado); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
154 |
169
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
143
diff
changeset
|
155 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
|
156 } |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
157 |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
158 using (_requestEmulator.Invoke()) |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
159 { |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
160 Evento evento = _eventoRepository.Get(eventoId); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
161 Assert.AreEqual(EventoPublicadoState.GetInstance(), evento.Estado); |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
162 } |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
120
diff
changeset
|
163 } |
60 | 164 } |
165 } |