Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs @ 87:26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
Quitamos el concepto de Recordador ya que el mismo es un publicador, cuándo publicar es responsabilidad de cada publicador
author | nelopauselli |
---|---|
date | Fri, 27 May 2011 14:42:38 -0300 |
parents | c76661cff260 |
children | db4b1e2cae49 |
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 { |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
20 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPonenteRepository); |
54 | 21 |
75 | 22 agenda.Proponer("Van", null, urlInvitacion); |
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); | |
38 Assert.AreEqual("otro ponente", evento.Ponente.Nombre); | |
39 } | |
20 | 40 |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
70
diff
changeset
|
41 var r = agenda.Agendar("Van 2", "jjmontes", DateTime.Now, urlInvitacion); |
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 { |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
55 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPonenteRepository); |
54 | 56 |
20 | 57 { |
75 | 58 agenda.Proponer("Van propuesta", null, urlInvitacion); |
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, |
70
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
54
diff
changeset
|
65 urlInvitacion); |
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 { |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
73 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPonenteRepository); |
54 | 74 |
20 | 75 { |
75 | 76 agenda.Proponer("Van propuesta", null, urlInvitacion); |
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, |
70
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
54
diff
changeset
|
85 urlInvitacion); |
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 | |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
95 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPonenteRepository); |
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 |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
105 var agenda = new Agenda(null, repository.Object, DefaultPonenteRepository); |
54 | 106 |
75 | 107 var r = agenda.Proponer(string.Empty, null, urlInvitacion); |
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 { |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
116 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPonenteRepository); |
45 | 117 |
51
4a63a73e38e4
Cambio de nombres de test intentando describir mejor lo que verifican
nelopauselli
parents:
50
diff
changeset
|
118 SetCurrentUser(null); |
45 | 119 |
75 | 120 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Proponer("Inmortalidad de la meduza.", null, urlInvitacion)); |
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 { |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
126 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPonenteRepository); |
75 | 127 agenda.Proponer("Van propuesta", null, urlInvitacion); |
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 { | |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
138 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPonenteRepository); |
45 | 139 |
75 | 140 agenda.Proponer("Van propuesta", null, urlInvitacion); |
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, |
70
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
54
diff
changeset
|
142 urlInvitacion); |
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 } |