Mercurial > altnet-hispano
comparison Agendas/trunk/src/Agendas.Repositories.Tests/PatrocinadorEventoTests.cs @ 287:eeca9ddb330a
BUG: Los Patrocinadores quedaban asociados a un único evento. Se armó un test que lo demuestra y se modificó el modelo de la base de datos.
author | juanjose.montesdeocaarbos |
---|---|
date | Mon, 02 Jan 2012 19:44:41 -0300 |
parents | |
children | 9bc60d166c8a |
comparison
equal
deleted
inserted
replaced
286:a8f7c41e3b47 | 287:eeca9ddb330a |
---|---|
1 using System; | |
2 using System.Collections.Generic; | |
3 using System.Linq; | |
4 using System.Text; | |
5 using Agendas.Repositories.Tests.Infraestructure; | |
6 using AltNetHispano.Agendas.Domain; | |
7 using AltNetHispano.Agendas.Domain.Repositories; | |
8 using Moq; | |
9 using NUnit.Framework; | |
10 | |
11 namespace Agendas.Repositories.Tests | |
12 { | |
13 public abstract class PatrocinadorEventoTests<T> where T : IInfraestrutureFactory, new() | |
14 { | |
15 private readonly IPersonaRepository _personaRepository; | |
16 private readonly IEventoRepository _eventoRepository; | |
17 private readonly IPatrocinadorRepository _patrocinadorRepository; | |
18 private readonly Func<IDisposable> _requestEmulator; | |
19 | |
20 private Guid _apressId; | |
21 private Guid _eventoUnoId; | |
22 private Guid _eventoDosId; | |
23 private Agenda _agenda; | |
24 private readonly TestsHelper _testsHelper; | |
25 | |
26 protected PatrocinadorEventoTests() | |
27 { | |
28 var infraestrutureFactory = new T(); | |
29 | |
30 _eventoRepository = infraestrutureFactory.GetEventoRepository(); | |
31 _personaRepository = infraestrutureFactory.GetPonenteRepository(); | |
32 _patrocinadorRepository = infraestrutureFactory.GetPatrocinadorRepository(); | |
33 _requestEmulator = infraestrutureFactory.GetRequestEmulator(); | |
34 | |
35 _testsHelper = new TestsHelper(_personaRepository, _patrocinadorRepository); | |
36 } | |
37 | |
38 [SetUp] | |
39 public void SetearUsuario() | |
40 { | |
41 var seguridad = new Mock<ISeguridad>(); | |
42 seguridad.Setup(s => s.GetUserName()).Returns("neluz"); | |
43 IdentityContext.Init(seguridad.Object, _personaRepository); | |
44 } | |
45 | |
46 private Guid CrearEvento(string[] nombrePonentes, string nombreEvento, DateTime fechaInicio, DateTime fechaTermino) | |
47 { | |
48 Evento evento; | |
49 var ponentes = new Guid[nombrePonentes.Length]; | |
50 for (var nroPonente = 0; nroPonente < nombrePonentes.Length; nroPonente++) | |
51 { | |
52 using (_requestEmulator.Invoke()) | |
53 { | |
54 ponentes[nroPonente] = _testsHelper.GetOrCreatePonente(nombrePonentes[nroPonente]); | |
55 } | |
56 } | |
57 | |
58 using (_requestEmulator.Invoke()) | |
59 { | |
60 _agenda.Agendar(nombreEvento, ponentes, fechaInicio, fechaTermino, null, TipoEvento.Van); | |
61 } | |
62 using (_requestEmulator.Invoke()) | |
63 { | |
64 evento = _eventoRepository.GetActivos().First(e => e.Titulo == nombreEvento); | |
65 } | |
66 return evento.Id; | |
67 } | |
68 | |
69 private Guid CrearPatrocinador(string nombre, string images) | |
70 { | |
71 var patrocinador = new Patrocinador(nombre); | |
72 patrocinador.LoadLogo(images); | |
73 using (_requestEmulator.Invoke()) | |
74 { | |
75 _patrocinadorRepository.Save(patrocinador); | |
76 } | |
77 return patrocinador.Id; | |
78 } | |
79 | |
80 protected void CrearDatos() | |
81 { | |
82 var fechaInicio = DateTime.Today.AddDays(7).ToUniversalTime(); | |
83 var fechaTermino = fechaInicio.AddHours(2); | |
84 _agenda = new Agenda(null, _eventoRepository, _personaRepository, _patrocinadorRepository); | |
85 | |
86 _apressId = CrearPatrocinador("Apress", "images/apress.gif"); | |
87 _eventoUnoId = CrearEvento(new[] { "Carlos Peix", "Nelo Pauselli" }, "ADFS", fechaInicio, fechaTermino); | |
88 _eventoDosId = CrearEvento(new[] { "Carlos Peix", "Nelo Pauselli" }, "ADFS: Segunda parte.", fechaInicio.AddDays(3), fechaTermino.AddDays(3)); | |
89 } | |
90 | |
91 [Test] | |
92 public void MismoPatrocinadorEnDosEventosDiferentes() | |
93 { | |
94 CrearDatos(); | |
95 Evento eventoUno, eventoDos; | |
96 { | |
97 using (_requestEmulator.Invoke()) | |
98 { | |
99 _agenda.IndicarPatrocinadores(_eventoUnoId, new[] {_apressId}); | |
100 } | |
101 using (_requestEmulator.Invoke()) | |
102 { | |
103 eventoUno = _eventoRepository.GetActivos().First(e => e.Id == _eventoUnoId); | |
104 Assert.AreEqual(1, eventoUno.Patrocinadores.Count()); | |
105 } | |
106 } | |
107 | |
108 { | |
109 using (_requestEmulator.Invoke()) | |
110 { | |
111 _agenda.IndicarPatrocinadores(_eventoDosId, new[] {_apressId}); | |
112 } | |
113 using (_requestEmulator.Invoke()) | |
114 { | |
115 eventoDos = _eventoRepository.GetActivos().First(e => e.Id == _eventoDosId); | |
116 Assert.AreEqual(1, eventoDos.Patrocinadores.Count()); | |
117 } | |
118 } | |
119 using (_requestEmulator.Invoke()) | |
120 { | |
121 eventoDos = _eventoRepository.GetActivos().First(e => e.Id == _eventoDosId); | |
122 Assert.AreEqual(1, eventoDos.Patrocinadores.Count()); | |
123 } | |
124 using (_requestEmulator.Invoke()) | |
125 { | |
126 eventoUno = _eventoRepository.GetActivos().First(e => e.Id == _eventoUnoId); | |
127 Assert.AreEqual(1, eventoUno.Patrocinadores.Count()); | |
128 } | |
129 } | |
130 } | |
131 } |