comparison Agendas/trunk/src/Agendas.Tests/PulicarTests.cs @ 54:3059a5f8930f

Code cleanup
author nelopauselli
date Sat, 14 May 2011 13:01:24 -0300
parents 4a63a73e38e4
children 4a4e12e32256
comparison
equal deleted inserted replaced
53:d149bfea3892 54:3059a5f8930f
6 using Moq; 6 using Moq;
7 using NUnit.Framework; 7 using NUnit.Framework;
8 8
9 namespace AltNetHispano.Agendas.Tests 9 namespace AltNetHispano.Agendas.Tests
10 { 10 {
11 [TestFixture] 11 [TestFixture]
12 public class PulicarTests : TestBase 12 public class PulicarTests : TestBase
13 { 13 {
14 [Test] 14 [Test]
15 public void Publicar_evento_correctamente() 15 public void CompositePublicador_constructor_parametro_null_debe_generar_ArgumentNullException()
16 { 16 {
17 var publicador = new Mock<IPublicador>(); 17 Assert.Throws<ArgumentNullException>(() => new CompositePublicador(null));
18
19 var agenda = new Agenda(publicador.Object, null, DefaultEventoRepository, DefaultPonenteRepository);
20
21 agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now);
22 Assert.AreEqual(1, agenda.GetEventosPublicados().Count);
23
24 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
25 }
26
27 [Test]
28 public void Intentar_publicar_evento_sin_usuario_autenticado()
29 {
30 SetCurrentUser(null);
31
32 var publicador = new Mock<IPublicador>();
33 var repository = new Mock<IEventoRepository>();
34
35 var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository);
36
37 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now));
38
39 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(0));
40 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
41 }
42
43 [Test]
44 public void Intentar_publicar_evento_sin_servicio_de_seguridad()
45 {
46 IdentityContext.Current = null;
47
48 var publicador = new Mock<IPublicador>();
49 var repository = new Mock<IEventoRepository>();
50
51 var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository);
52
53 Assert.Throws<IdentityContextNotConfiguredException>(() => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now));
54 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
55 } 18 }
56 19
57 [Test] 20 [Test]
58 public void Intentar_publicar_evento_donde_ocurre_una_excepcion_no_manejada() 21 public void Intentar_publicar_evento_donde_ocurre_una_excepcion_no_manejada()
59 { 22 {
70 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); 33 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
71 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); 34 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
72 } 35 }
73 36
74 [Test] 37 [Test]
38 public void Intentar_publicar_evento_sin_servicio_de_seguridad()
39 {
40 IdentityContext.Current = null;
41
42 var publicador = new Mock<IPublicador>();
43 var repository = new Mock<IEventoRepository>();
44
45 var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository);
46
47 Assert.Throws<IdentityContextNotConfiguredException>(
48 () => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now));
49 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
50 }
51
52 [Test]
53 public void Intentar_publicar_evento_sin_usuario_autenticado()
54 {
55 SetCurrentUser(null);
56
57 var publicador = new Mock<IPublicador>();
58 var repository = new Mock<IEventoRepository>();
59
60 var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository);
61
62 Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now));
63
64 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(0));
65 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
66 }
67
68 [Test]
75 public void Publicar_evento_con_multiples_publicadores() 69 public void Publicar_evento_con_multiples_publicadores()
76 { 70 {
77 var publicador1 = new Mock<IPublicador>(); 71 var publicador1 = new Mock<IPublicador>();
78 var publicador2 = new Mock<IPublicador>(); 72 var publicador2 = new Mock<IPublicador>();
79 73
80 var repository = new Mock<IEventoRepository>(); 74 var repository = new Mock<IEventoRepository>();
81 75
82 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), null, repository.Object, DefaultPonenteRepository); 76 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), null,
77 repository.Object, DefaultPonenteRepository);
83 78
84 agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now); 79 agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now);
85 80
86 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); 81 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
87 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); 82 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
88 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(1)); 83 repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(1));
89 } 84 }
90 85
91 [Test] 86 [Test]
92 public void Publicar_y_recordar_evento() 87 public void Publicar_evento_correctamente()
93 { 88 {
94 var publicador1 = new Mock<IPublicador>(); 89 var publicador = new Mock<IPublicador>();
95 var publicador2 = new Mock<IPublicador>();
96 var recordador1 = new Mock<IRecordador>();
97 90
98 var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), recordador1.Object, DefaultEventoRepository, DefaultPonenteRepository); 91 var agenda = new Agenda(publicador.Object, null, DefaultEventoRepository, DefaultPonenteRepository);
99 92
100 agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now); 93 agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now);
94 Assert.AreEqual(1, agenda.GetEventosPublicados().Count);
101 95
102 var van = agenda.GetEventosPublicados().Single(v => v.Titulo == "Van para publicar"); 96 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
103 agenda.Recordar(van.Id);
104
105 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
106 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
107 recordador1.Verify(r => r.Recordar(It.IsAny<Evento>()), Times.Exactly(1));
108 } 97 }
109 98
110 [Test] 99 [Test]
111 public void Publicar_y_modificar_evento() 100 public void Publicar_y_modificar_evento()
112 { 101 {
131 evento = repository.GetEventosConFecha().First(); 120 evento = repository.GetEventosConFecha().First();
132 Assert.AreEqual("otro titulo", evento.Titulo); 121 Assert.AreEqual("otro titulo", evento.Titulo);
133 Assert.AreEqual("otro ponente", evento.Ponente.Nombre); 122 Assert.AreEqual("otro ponente", evento.Ponente.Nombre);
134 Assert.AreEqual(fecha, evento.Fecha); 123 Assert.AreEqual(fecha, evento.Fecha);
135 124
136 var idEventoNoExistente = new Guid("99999999999999999999999999999999"); 125 var idEventoNoExistente = new Guid("99999999999999999999999999999999");
137 Assert.Throws<EventoNotFoundException>( 126 Assert.Throws<EventoNotFoundException>(
138 () => agenda.ModificarEvento(idEventoNoExistente, "algún título", "un ponente", DateTime.Now)); 127 () => agenda.ModificarEvento(idEventoNoExistente, "algún título", "un ponente", DateTime.Now));
139 } 128 }
140 129
141 [Test] 130 [Test]
142 public void CompositePublicador_constructor_parametro_null_debe_generar_ArgumentNullException() 131 public void Publicar_y_recordar_evento()
143 { 132 {
144 Assert.Throws<ArgumentNullException>(() => new CompositePublicador(null)); 133 var publicador1 = new Mock<IPublicador>();
145 } 134 var publicador2 = new Mock<IPublicador>();
146 } 135 var recordador1 = new Mock<IRecordador>();
136
137 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), recordador1.Object,
138 DefaultEventoRepository, DefaultPonenteRepository);
139
140 agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now);
141
142 var van = agenda.GetEventosPublicados().Single(v => v.Titulo == "Van para publicar");
143 agenda.Recordar(van.Id);
144
145 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
146 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
147 recordador1.Verify(r => r.Recordar(It.IsAny<Evento>()), Times.Exactly(1));
148 }
149 }
147 } 150 }