20
|
1 using System;
|
|
2 using System.Linq;
|
|
3 using Agendas.Repositories.Memory;
|
|
4 using AltNetHispano.Agendas.Domain;
|
|
5 using AltNetHispano.Agendas.Domain.Repositories;
|
|
6 using Moq;
|
|
7 using NUnit.Framework;
|
|
8
|
|
9 namespace AltNetHispano.Agendas.Tests
|
|
10 {
|
|
11 [TestFixture]
|
|
12 public class PulicarTests : TestBase
|
|
13 {
|
|
14 [Test]
|
|
15 public void Publicar_van_con_usuario_autenticado()
|
|
16 {
|
|
17 var publicador = new Mock<IPublicador>();
|
|
18 var repository = new EventoRepository();
|
|
19
|
|
20 var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, repository);
|
|
21
|
|
22 var van = EventoObjectMother.GetVanValidaParaPublicar();
|
|
23
|
|
24 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha);
|
|
25 Assert.AreEqual(1, agenda.GetEventosPublicados().Count);
|
|
26
|
|
27 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
|
|
28 }
|
|
29
|
|
30 [Test]
|
|
31 public void Publicar_van_sin_usuario_autenticado() {
|
|
32 var seguridad = new Mock<ISeguridad>();
|
|
33 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalSinAutenticar());
|
|
34
|
|
35 var publicador = new Mock<IPublicador>();
|
|
36 var repository = new Mock<IEventoRepository>();
|
|
37
|
|
38 var agenda = new Agenda(publicador.Object, null, seguridad.Object, repository.Object);
|
|
39
|
|
40 var van = EventoObjectMother.GetVanValidaParaPublicar();
|
|
41
|
|
42 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha));
|
|
43
|
|
44 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(0));
|
|
45 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
|
|
46 }
|
|
47
|
|
48 [Test]
|
|
49 public void Publicar_van_sin_servicio_de_seguridad()
|
|
50 {
|
|
51 var publicador = new Mock<IPublicador>();
|
|
52 var repository = new Mock<IEventoRepository>();
|
|
53
|
|
54 var agenda = new Agenda(publicador.Object, null, null, repository.Object);
|
|
55
|
|
56 var van = EventoObjectMother.GetVanValidaParaPublicar();
|
|
57
|
|
58 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha));
|
|
59 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
|
|
60 }
|
|
61
|
|
62 [Test]
|
|
63 public void Error_al_publicar_van()
|
|
64 {
|
|
65 var publicador = new Mock<IPublicador>();
|
|
66 var repository = new Mock<IEventoRepository>();
|
|
67
|
|
68 publicador.Setup(p => p.Publicar(It.IsAny<Evento>())).Throws(new Exception("Error intencional"));
|
|
69
|
|
70 var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault, repository.Object);
|
|
71
|
|
72 var van = EventoObjectMother.GetVanValidaParaPublicar();
|
|
73 Assert.Throws<Exception>(() => agenda.Publicar(van.Titulo, van.Ponente, van.Fecha));
|
|
74 Assert.AreEqual(0, agenda.GetEventosPublicados().Count);
|
|
75
|
|
76 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
|
|
77 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
|
|
78 }
|
|
79
|
|
80 [Test]
|
|
81 public void Publicar_van_multiples_publicadores()
|
|
82 {
|
|
83 var publicador1 = new Mock<IPublicador>();
|
|
84 var publicador2 = new Mock<IPublicador>();
|
|
85
|
|
86 var repository = new Mock<IEventoRepository>();
|
|
87
|
|
88 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), null, SeguridadServiceDefault, repository.Object);
|
|
89
|
|
90 var van = EventoObjectMother.GetVanValidaParaPublicar();
|
|
91 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha);
|
|
92
|
|
93 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
|
|
94 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
|
|
95 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(1));
|
|
96 }
|
|
97
|
|
98 [Test]
|
|
99 public void Publicar_y_recordar_van()
|
|
100 {
|
|
101 var repository = new Mock<IEventoRepository>();
|
|
102
|
|
103 var publicador1 = new Mock<IPublicador>();
|
|
104 var publicador2 = new Mock<IPublicador>();
|
|
105 var recordador1 = new Mock<IRecordador>();
|
|
106
|
|
107 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), recordador1.Object, SeguridadServiceDefault, repository.Object);
|
|
108
|
|
109 var van = EventoObjectMother.GetVanValidaParaPublicar();
|
|
110 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha);
|
|
111
|
|
112 agenda.Recordar(van);
|
|
113
|
|
114 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
|
|
115 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
|
|
116 recordador1.Verify(r => r.Recordar(It.IsAny<Evento>()), Times.Exactly(1));
|
|
117
|
|
118 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(1));
|
|
119 }
|
|
120
|
|
121 [Test]
|
|
122 public void Publicar_y_modificar_van()
|
|
123 {
|
|
124 var repository = new EventoRepository();
|
|
125
|
|
126 var agenda = new Agenda(null, null, SeguridadServiceDefault, repository);
|
|
127
|
|
128 var van = EventoObjectMother.GetVanValidaParaPublicar();
|
|
129 agenda.Publicar(van.Titulo, van.Ponente, van.Fecha);
|
|
130
|
|
131 var evento = repository.GetEventosConFecha().First();
|
|
132 Assert.AreNotEqual(Guid.Empty, evento.Id);
|
|
133
|
|
134 DateTime fecha = evento.Fecha.Value.AddDays(7);
|
|
135 agenda.ModificarEvento(evento.Id, "otro titulo", "otro ponente", fecha);
|
|
136
|
|
137 evento = repository.GetEventosConFecha().First();
|
|
138 Assert.AreEqual("otro titulo", evento.Titulo);
|
|
139 Assert.AreEqual("otro ponente", evento.Ponente);
|
|
140 Assert.AreEqual(fecha, evento.Fecha);
|
|
141 }
|
|
142 }
|
|
143 } |