Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs @ 109:6bd9be78caa0
Merge
author | Nelo@Kenia.neluz.int |
---|---|
date | Tue, 07 Jun 2011 23:21:07 -0300 |
parents | 80c22175c9b5 |
children | b74734a1a755 |
rev | line source |
---|---|
20 | 1 using System; |
2 using System.Collections.Generic; | |
3 using System.Linq; | |
4 using AltNetHispano.Agendas.Domain; | |
5 using AltNetHispano.Agendas.Domain.Exceptions; | |
6 using AltNetHispano.Agendas.Domain.Repositories; | |
7 using Moq; | |
8 using NUnit.Framework; | |
9 | |
10 namespace AltNetHispano.Agendas.Tests | |
11 { | |
12 [TestFixture] | |
13 public class PropuestasTests : TestBase | |
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 | 17 [Test] |
54 | 18 public void Crear_modificar_y_publicar_evento_propuesto() |
20 | 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 | 21 |
106
80c22175c9b5
agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents:
97
diff
changeset
|
22 agenda.Proponer("Van", null, urlInvitacion, TipoEvento.Van); |
54 | 23 { |
24 IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); | |
75 | 25 IList<Evento> eventosPublicados = agenda.GetEventosAgendados(); |
54 | 26 |
27 Assert.AreEqual(1, eventosPropuestos.Count); | |
28 Assert.AreEqual(0, eventosPublicados.Count); | |
20 | 29 |
54 | 30 var evento = eventosPropuestos.FirstOrDefault(); |
75 | 31 agenda.ModificarPropuesta(evento.Id, "Van 2", "otro ponente", urlInvitacion); |
54 | 32 |
33 eventosPropuestos = agenda.GetEventosPropuestos(); | |
34 Assert.AreEqual(1, eventosPropuestos.Count); | |
20 | 35 |
54 | 36 evento = eventosPropuestos.FirstOrDefault(); |
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 | 39 } |
20 | 40 |
106
80c22175c9b5
agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents:
97
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 | 43 { |
44 IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); | |
75 | 45 IList<Evento> eventosPublicados = agenda.GetEventosAgendados(); |
20 | 46 |
54 | 47 Assert.AreEqual(0, eventosPropuestos.Count); |
48 Assert.AreEqual(1, eventosPublicados.Count); | |
49 } | |
20 | 50 } |
51 | |
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 | 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 | 56 |
20 | 57 { |
106
80c22175c9b5
agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents:
97
diff
changeset
|
58 agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van); |
20 | 59 } |
60 | |
61 { | |
62 var van = agenda.GetEventosPropuestos().FirstOrDefault(); | |
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, |
106
80c22175c9b5
agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents:
97
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 | 67 } |
68 } | |
69 | |
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 | 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 | 74 |
20 | 75 { |
106
80c22175c9b5
agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents:
97
diff
changeset
|
76 agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van); |
20 | 77 } |
78 | |
79 { | |
80 var van = agenda.GetEventosPropuestos().FirstOrDefault(); | |
81 Assert.IsNotNull(van); | |
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, |
106
80c22175c9b5
agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents:
97
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 | 87 } |
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 | 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 | 93 var idEventoNoExistente = new Guid("99999999999999999999999999999999"); |
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 | 98 } |
45 | 99 |
54 | 100 [Test] |
101 public void Intentar_proponer_evento_sin_titulo() | |
102 { | |
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 | 106 |
106
80c22175c9b5
agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents:
97
diff
changeset
|
107 var r = agenda.Proponer(string.Empty, null, urlInvitacion, TipoEvento.Van); |
54 | 108 Assert.IsFalse(r.Succeful); |
109 | |
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 | 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 | 119 |
106
80c22175c9b5
agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents:
97
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 | 122 |
51
4a63a73e38e4
Cambio de nombres de test intentando describir mejor lo que verifican
nelopauselli
parents:
50
diff
changeset
|
123 [Test] |
54 | 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); |
106
80c22175c9b5
agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents:
97
diff
changeset
|
127 agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van); |
45 | 128 |
54 | 129 IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); |
130 Assert.IsNotNull(eventosPropuestos); | |
131 Assert.AreEqual(1, eventosPropuestos.Count); | |
132 Assert.AreEqual("Van propuesta", eventosPropuestos[0].Titulo); | |
133 } | |
134 | |
135 [Test] | |
136 public void Verificar_propuesta_separada_de_publicacion() | |
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 | 139 |
106
80c22175c9b5
agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents:
97
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, |
106
80c22175c9b5
agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents:
97
diff
changeset
|
142 urlInvitacion, TipoEvento.Van); |
54 | 143 Assert.IsTrue(r.Succeful); |
144 | |
145 IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); | |
75 | 146 IList<Evento> eventosPublicados = agenda.GetEventosAgendados(); |
54 | 147 |
148 Assert.AreEqual(1, eventosPropuestos.Count); | |
149 Assert.AreEqual(1, eventosPublicados.Count); | |
51
4a63a73e38e4
Cambio de nombres de test intentando describir mejor lo que verifican
nelopauselli
parents:
50
diff
changeset
|
150 } |
54 | 151 } |
20 | 152 } |