annotate Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs @ 137:2d1adbaf0373

CRUD de Patrocinador
author nelopauselli
date Thu, 28 Jul 2011 09:26:24 -0300
parents b74734a1a755
children 62791999ad01
rev   line source
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
1 using System;
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
2 using System.Collections.Generic;
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
3 using System.Linq;
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
4 using AltNetHispano.Agendas.Domain;
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
5 using AltNetHispano.Agendas.Domain.Exceptions;
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
6 using AltNetHispano.Agendas.Domain.Repositories;
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
7 using Moq;
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
8 using NUnit.Framework;
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
9
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
10 namespace AltNetHispano.Agendas.Tests
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
11 {
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
12 [TestFixture]
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
13 public class PropuestasTests : TestBase
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
14 {
70
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 54
diff changeset
15 private const string urlInvitacion = "http://groups.google.com/group/altnet-hispano/browse_thread/thread/65d6d26eb381386e";
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 54
diff changeset
16
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
17 [Test]
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
18 public void Crear_modificar_y_publicar_evento_propuesto()
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
19 {
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
20 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
21
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
22 agenda.Proponer("Van", null, urlInvitacion, TipoEvento.Van);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
23 {
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
24 IList<Evento> eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
25 IList<Evento> eventosAgendados = agenda.GetEventosActivos(EventoAgendadoState.GetInstance());
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
26
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
27 Assert.AreEqual(1, eventosPropuestos.Count);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
28 Assert.AreEqual(0, eventosAgendados.Count);
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
29
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
30 var evento = eventosPropuestos.FirstOrDefault();
75
96d7609f2e08 Agendar evento propuesto
nelopauselli
parents: 74
diff changeset
31 agenda.ModificarPropuesta(evento.Id, "Van 2", "otro ponente", urlInvitacion);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
32
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
33 eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
34 Assert.AreEqual(1, eventosPropuestos.Count);
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
35
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
36 evento = eventosPropuestos.FirstOrDefault();
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
37 Assert.AreEqual("Van 2", evento.Titulo);
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: 94
diff changeset
38 Assert.AreEqual("otro ponente", evento.Ponente.Nombre);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
39 }
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
40
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
41 var r = agenda.Agendar("Van 2", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van);
53
d149bfea3892 Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents: 52
diff changeset
42 Assert.IsTrue(r.Succeful);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
43 {
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
44 IList<Evento> eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
45 IList<Evento> eventosAgendados = agenda.GetEventosActivos(EventoAgendadoState.GetInstance());
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
46
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
47 Assert.AreEqual(0, eventosPropuestos.Count);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
48 Assert.AreEqual(1, eventosAgendados.Count);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
49 }
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
50 }
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
51
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
52 [Test]
51
4a63a73e38e4 Cambio de nombres de test intentando describir mejor lo que verifican
nelopauselli
parents: 50
diff changeset
53 public void Intentar_agendar_evento_propuesto_sin_indicar_fecha()
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
54 {
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
55 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
56
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
57 {
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
58 agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van);
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
59 }
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
60
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
61 {
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
62 var van = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).FirstOrDefault();
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
63 Assert.IsNotNull(van);
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 70
diff changeset
64 var r = agenda.Agendar(van.Titulo, "Ponente", null,
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
65 urlInvitacion, TipoEvento.Van);
53
d149bfea3892 Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents: 52
diff changeset
66 Assert.IsFalse(r.Succeful);
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
67 }
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
68 }
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
69
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
70 [Test]
51
4a63a73e38e4 Cambio de nombres de test intentando describir mejor lo que verifican
nelopauselli
parents: 50
diff changeset
71 public void Intentar_agendar_evento_propuesto_sin_indicar_ponente()
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
72 {
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
73 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
74
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
75 {
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
76 agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van);
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
77 }
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
78
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
79 {
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
80 var van = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).FirstOrDefault();
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
81 Assert.IsNotNull(van);
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
82
79
8df9db937434 Url de invitación en la UI: validación y persistencia
nelopauselli
parents: 75
diff changeset
83 van.Actualizar(null, DateTime.Today.AddDays(5), urlInvitacion);
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 70
diff changeset
84 var r = agenda.Agendar(van.Titulo, string.Empty, van.Fecha,
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
85 urlInvitacion, TipoEvento.Van);
53
d149bfea3892 Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents: 52
diff changeset
86 Assert.IsFalse(r.Succeful);
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
87 }
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
88 }
29
016b9b9b8d3a Cuando se publica una van con el mismo titulo que una propuesta, se utiliza esta
nelo@MTEySS.neluz.int
parents: 26
diff changeset
89
016b9b9b8d3a Cuando se publica una van con el mismo titulo que una propuesta, se utiliza esta
nelo@MTEySS.neluz.int
parents: 26
diff changeset
90 [Test]
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
91 public void Intentar_obtener_un_evento_inexistente()
29
016b9b9b8d3a Cuando se publica una van con el mismo titulo que una propuesta, se utiliza esta
nelo@MTEySS.neluz.int
parents: 26
diff changeset
92 {
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
93 var idEventoNoExistente = new Guid("99999999999999999999999999999999");
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
94
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
95 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
29
016b9b9b8d3a Cuando se publica una van con el mismo titulo que una propuesta, se utiliza esta
nelo@MTEySS.neluz.int
parents: 26
diff changeset
96
81
c76661cff260 Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents: 79
diff changeset
97 Assert.Throws<EventoNotFoundException>(() => agenda.GetEvento(idEventoNoExistente));
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
98 }
45
2edc705aae0a Coverage 100% sobre Agendas.Tests
juanjose.montesdeocaarbos
parents: 38
diff changeset
99
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
100 [Test]
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
101 public void Intentar_proponer_evento_sin_titulo()
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
102 {
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
103 var repository = new Mock<IEventoRepository>();
29
016b9b9b8d3a Cuando se publica una van con el mismo titulo que una propuesta, se utiliza esta
nelo@MTEySS.neluz.int
parents: 26
diff changeset
104
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
105 var agenda = new Agenda(null, repository.Object, DefaultPersonaRepository);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
106
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
107 var r = agenda.Proponer(string.Empty, null, urlInvitacion, TipoEvento.Van);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
108 Assert.IsFalse(r.Succeful);
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
109
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
110 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
29
016b9b9b8d3a Cuando se publica una van con el mismo titulo que una propuesta, se utiliza esta
nelo@MTEySS.neluz.int
parents: 26
diff changeset
111 }
016b9b9b8d3a Cuando se publica una van con el mismo titulo que una propuesta, se utiliza esta
nelo@MTEySS.neluz.int
parents: 26
diff changeset
112
51
4a63a73e38e4 Cambio de nombres de test intentando describir mejor lo que verifican
nelopauselli
parents: 50
diff changeset
113 [Test]
4a63a73e38e4 Cambio de nombres de test intentando describir mejor lo que verifican
nelopauselli
parents: 50
diff changeset
114 public void Intentar_proponer_evento_sin_usuario_autenticado()
4a63a73e38e4 Cambio de nombres de test intentando describir mejor lo que verifican
nelopauselli
parents: 50
diff changeset
115 {
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
116 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
45
2edc705aae0a Coverage 100% sobre Agendas.Tests
juanjose.montesdeocaarbos
parents: 38
diff changeset
117
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
118 SetCurrentUser(null, null);
45
2edc705aae0a Coverage 100% sobre Agendas.Tests
juanjose.montesdeocaarbos
parents: 38
diff changeset
119
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
120 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Proponer("Inmortalidad de la meduza.", null, urlInvitacion, TipoEvento.Van));
51
4a63a73e38e4 Cambio de nombres de test intentando describir mejor lo que verifican
nelopauselli
parents: 50
diff changeset
121 }
45
2edc705aae0a Coverage 100% sobre Agendas.Tests
juanjose.montesdeocaarbos
parents: 38
diff changeset
122
51
4a63a73e38e4 Cambio de nombres de test intentando describir mejor lo que verifican
nelopauselli
parents: 50
diff changeset
123 [Test]
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
124 public void Proponer_evento_correctamente()
51
4a63a73e38e4 Cambio de nombres de test intentando describir mejor lo que verifican
nelopauselli
parents: 50
diff changeset
125 {
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
126 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
127 agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van);
45
2edc705aae0a Coverage 100% sobre Agendas.Tests
juanjose.montesdeocaarbos
parents: 38
diff changeset
128
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
129 IList<Evento> eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
130 Assert.IsNotNull(eventosPropuestos);
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
131 Assert.AreEqual(1, eventosPropuestos.Count);
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
132 Assert.AreEqual("Van propuesta", eventosPropuestos[0].Titulo);
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
133 }
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
134
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
135 [Test]
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
136 public void Verificar_propuesta_separada_de_publicacion()
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
137 {
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
138 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
45
2edc705aae0a Coverage 100% sobre Agendas.Tests
juanjose.montesdeocaarbos
parents: 38
diff changeset
139
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
140 agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van);
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 70
diff changeset
141 var r = agenda.Agendar("Van publicada", "jjmontes", DateTime.Now,
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
142 urlInvitacion, TipoEvento.Van);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
143 Assert.IsTrue(r.Succeful);
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
144
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
145 IList<Evento> eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
146 IList<Evento> eventosAgendados = agenda.GetEventosActivos(EventoAgendadoState.GetInstance());
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
147
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
148 Assert.AreEqual(1, eventosPropuestos.Count);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
149 Assert.AreEqual(1, eventosAgendados.Count);
51
4a63a73e38e4 Cambio de nombres de test intentando describir mejor lo que verifican
nelopauselli
parents: 50
diff changeset
150 }
54
3059a5f8930f Code cleanup
nelopauselli
parents: 53
diff changeset
151 }
20
c5a99dde072f reorganizando tests
nelo@MTEySS.neluz.int
parents:
diff changeset
152 }