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 }