Mercurial > altnet-hispano
comparison Agendas/trunk/src/Agendas.Repositories.Tests/EventoCrud.cs @ 222:68b09c30b0d2
Separando los test de persistencia en un proyecto aparte
author | nelopauselli |
---|---|
date | Mon, 19 Sep 2011 18:18:17 -0300 |
parents | Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs@2d02adb79322 |
children | f23ee59ef1bd |
comparison
equal
deleted
inserted
replaced
221:37ddf81333d3 | 222:68b09c30b0d2 |
---|---|
1 using System; | |
2 using System.Linq; | |
3 using Agendas.Repositories.Tests.Infraestructure; | |
4 using AltNetHispano.Agendas.Domain; | |
5 using AltNetHispano.Agendas.Domain.Repositories; | |
6 using Moq; | |
7 using NUnit.Framework; | |
8 | |
9 namespace Agendas.Repositories.Tests | |
10 { | |
11 public abstract class EventoCrud<T> where T : IInfraestrutureFactory, new() | |
12 { | |
13 private readonly IEventoRepository _eventoRepository; | |
14 private readonly Func<IDisposable> _requestEmulator; | |
15 private readonly IPersonaRepository _personaRepository; | |
16 | |
17 protected EventoCrud() | |
18 { | |
19 var infraestrutureFactory = new T(); | |
20 | |
21 _eventoRepository = infraestrutureFactory.GetEventoRepository(); | |
22 _personaRepository = infraestrutureFactory.GetPonenteRepository(); | |
23 _requestEmulator = infraestrutureFactory.GetRequestEmulator(); | |
24 } | |
25 | |
26 [SetUp] | |
27 public void SetearUsuario() | |
28 { | |
29 var seguridad = new Mock<ISeguridad>(); | |
30 seguridad.Setup(s => s.GetUserName()).Returns("neluz"); | |
31 IdentityContext.Init(seguridad.Object, _personaRepository); | |
32 } | |
33 | |
34 [Test] | |
35 public void Create() | |
36 { | |
37 Assert.AreNotEqual(Guid.Empty, CreateEvento()); | |
38 } | |
39 | |
40 private Guid CreateEvento() | |
41 { | |
42 using (_requestEmulator.Invoke()) | |
43 { | |
44 var ponente = new Persona("Carlos Blé") {Twitter = "carlosble"}; | |
45 _personaRepository.Save(ponente); | |
46 | |
47 var usuario = new Persona("Nelo") {Twitter = "nelopauselli"}; | |
48 _personaRepository.Save(usuario); | |
49 | |
50 var evento = Evento.Proponer("TDD - Diseño Basado en Ejemplos", ponente, string.Empty, TipoEvento.Van); | |
51 evento.Tracks.First().LogAdd(new TrackLog(TrackLogPropietario.Twitter, "Mensaje", usuario, true)); | |
52 | |
53 _eventoRepository.Save(evento); | |
54 | |
55 return evento.Id; | |
56 } | |
57 } | |
58 | |
59 [Test] | |
60 public void Read() | |
61 { | |
62 Guid eventoId = CreateEvento(); | |
63 | |
64 using (_requestEmulator.Invoke()) | |
65 { | |
66 Evento van = _eventoRepository.Get(eventoId); | |
67 | |
68 Assert.IsNotNull(van); | |
69 Assert.IsNotNull(van.Ponente); | |
70 Assert.AreEqual("Carlos Blé", van.Ponente.Nombre); | |
71 | |
72 var track1 = van.Tracks.Where(t => t.Accion == Accion.Proponer).FirstOrDefault(); | |
73 Assert.IsNotNull(track1); | |
74 Assert.AreEqual(van, track1.Evento); | |
75 | |
76 Assert.AreEqual("TDD - Diseño Basado en Ejemplos", van.Titulo); | |
77 } | |
78 } | |
79 | |
80 [Test] | |
81 public void Update() | |
82 { | |
83 Guid eventoId = CreateEvento(); | |
84 var fechaInicio = new DateTime(2010, 04, 17).ToUniversalTime(); | |
85 var fechaTermino = fechaInicio.AddHours(2); | |
86 | |
87 using (_requestEmulator.Invoke()) | |
88 { | |
89 Evento van = _eventoRepository.Get(eventoId); | |
90 | |
91 Assert.IsNotNull(van); | |
92 | |
93 van.CambiarTitulo("TDD & Ejemplos"); | |
94 | |
95 var otroPonente = new Persona("José"); | |
96 _personaRepository.Save(otroPonente); | |
97 | |
98 van.Actualizar(otroPonente, fechaInicio, fechaTermino, null); | |
99 | |
100 _eventoRepository.Update(van); | |
101 } | |
102 | |
103 using (_requestEmulator.Invoke()) | |
104 { | |
105 Evento van = _eventoRepository.Get(eventoId); | |
106 | |
107 Assert.IsNotNull(van); | |
108 Assert.IsNotNull(van.Ponente); | |
109 Assert.AreEqual("José", van.Ponente.Nombre); | |
110 Assert.AreEqual("TDD & Ejemplos", van.Titulo); | |
111 Assert.AreEqual(new DateTime(2010, 04, 17).ToUniversalTime(), van.FechaInicio); | |
112 Assert.AreEqual(fechaTermino, van.FechaTermino); | |
113 | |
114 var ponente1 = _personaRepository.GetByNombre("Carlos Blé"); | |
115 Assert.IsNotNull(ponente1); | |
116 | |
117 var ponente2 = _personaRepository.GetByNombre("José"); | |
118 Assert.IsNotNull(ponente2); | |
119 | |
120 Assert.AreEqual(1, van.Tracks.Where(t => t.Accion == Accion.Proponer).Count()); | |
121 Assert.AreEqual(1, van.Tracks.Where(t => t.Accion == Accion.Modificar).Count()); | |
122 } | |
123 } | |
124 | |
125 [Test] | |
126 public void Delete() | |
127 { | |
128 Guid eventoId = CreateEvento(); | |
129 | |
130 using (_requestEmulator.Invoke()) | |
131 { | |
132 Evento van = _eventoRepository.Get(eventoId); | |
133 Assert.IsNotNull(van); | |
134 | |
135 _eventoRepository.Delete(van); | |
136 } | |
137 | |
138 using (_requestEmulator.Invoke()) | |
139 { | |
140 Evento van = _eventoRepository.Get(eventoId); | |
141 | |
142 Assert.IsNull(van); | |
143 | |
144 var ponente = _personaRepository.GetByNombre("Carlos Blé"); | |
145 | |
146 Assert.IsNotNull(ponente); | |
147 } | |
148 } | |
149 | |
150 [Test] | |
151 public void Workflow() | |
152 { | |
153 Guid eventoId = CreateEvento(); | |
154 | |
155 using (_requestEmulator.Invoke()) | |
156 { | |
157 Evento evento = _eventoRepository.Get(eventoId); | |
158 Assert.AreEqual(EventoPropuestoState.GetInstance(), evento.Estado); | |
159 | |
160 evento.Agendar(evento.Ponente, evento.FechaInicio, evento.FechaTermino, null); | |
161 } | |
162 | |
163 using (_requestEmulator.Invoke()) | |
164 { | |
165 Evento evento = _eventoRepository.Get(eventoId); | |
166 Assert.AreEqual(EventoAgendadoState.GetInstance(), evento.Estado); | |
167 | |
168 evento.Confirmar(); | |
169 } | |
170 | |
171 using (_requestEmulator.Invoke()) | |
172 { | |
173 Evento evento = _eventoRepository.Get(eventoId); | |
174 Assert.AreEqual(EventoConfirmadoState.GetInstance(), evento.Estado); | |
175 | |
176 evento.Publicar(1, null, new TimeSpan(0, 0, 0)); | |
177 } | |
178 | |
179 using (_requestEmulator.Invoke()) | |
180 { | |
181 Evento evento = _eventoRepository.Get(eventoId); | |
182 Assert.AreEqual(EventoPublicadoState.GetInstance(), evento.Estado); | |
183 } | |
184 } | |
185 } | |
186 } |