comparison Agendas/trunk/src/Agendas.Tests/PulicarTests.cs @ 20:c5a99dde072f

reorganizando tests
author nelo@MTEySS.neluz.int
date Mon, 14 Mar 2011 20:59:28 -0300
parents
children 43360bf09b1a
comparison
equal deleted inserted replaced
19:74eb4577d447 20:c5a99dde072f
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 }