comparison Agendas/trunk/src/Agendas.Tests/AgendaTests.cs @ 4:49b572535156

proponer van publicar van propuesta comportamiento ante excepcion en publicador
author nelopauselli
date Tue, 08 Feb 2011 00:08:49 -0300
parents 5f007e266509
children 2912c1dd0e6b
comparison
equal deleted inserted replaced
3:5f007e266509 4:49b572535156
1 using System; 1 using System;
2 using System.Collections.Generic;
2 using System.Linq; 3 using System.Linq;
3 using Agendas.Repositories.Memory; 4 using Agendas.Repositories.Memory;
4 using AltNetHispano.Agendas.Domain; 5 using AltNetHispano.Agendas.Domain;
6 using AltNetHispano.Agendas.Domain.Exceptions;
5 using AltNetHispano.Agendas.Domain.Repositories; 7 using AltNetHispano.Agendas.Domain.Repositories;
6 using Moq; 8 using Moq;
7 using NUnit.Framework; 9 using NUnit.Framework;
8 10
9 namespace AltNetHispano.Agendas.Tests 11 namespace AltNetHispano.Agendas.Tests
16 { 18 {
17 var publicador = new Mock<IPublicador>(); 19 var publicador = new Mock<IPublicador>();
18 20
19 var agenda = new Agenda(publicador.Object, null); 21 var agenda = new Agenda(publicador.Object, null);
20 22
21 var cafe = new Cafe(); 23 var cafe = EventoObjectMother.GetCafeValidoParaPublicar();
22 agenda.Publicar(cafe); 24 agenda.Publicar(cafe);
23 25
24 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); 26 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
25 } 27 }
26 28
29 { 31 {
30 var publicador = new Mock<IPublicador>(); 32 var publicador = new Mock<IPublicador>();
31 33
32 var agenda = new Agenda(publicador.Object, null); 34 var agenda = new Agenda(publicador.Object, null);
33 35
34 var van = new Van(); 36 var van = EventoObjectMother.GetVanValidaParaPublicar();
37
35 agenda.Publicar(van); 38 agenda.Publicar(van);
39 Assert.AreEqual(1, agenda.Eventos.Count());
36 40
37 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); 41 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
38 } 42 }
43
44 [Test]
45 public void Error_al_publicar_van()
46 {
47 var publicador = new Mock<IPublicador>();
48 publicador.Setup(p => p.Publicar(It.IsAny<Evento>())).Throws(new Exception("Error intencional"));
49
50 var agenda = new Agenda(publicador.Object, null);
51
52 var van = EventoObjectMother.GetVanValidaParaPublicar();
53 Assert.Throws<Exception>(() => agenda.Publicar(van));
54 Assert.AreEqual(0, agenda.Eventos.Count());
55
56 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
57 }
58
39 59
40 [Test] 60 [Test]
41 public void Publicar_van_multiples_publicadores() 61 public void Publicar_van_multiples_publicadores()
42 { 62 {
43 var publicador1 = new Mock<IPublicador>(); 63 var publicador1 = new Mock<IPublicador>();
44 var publicador2 = new Mock<IPublicador>(); 64 var publicador2 = new Mock<IPublicador>();
45 65
46 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), null); 66 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), null);
47 67
48 var cafe = new Cafe(); 68 var van = EventoObjectMother.GetVanValidaParaPublicar();
49 agenda.Publicar(cafe); 69 agenda.Publicar(van);
50 70
51 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); 71 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
52 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); 72 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
53 } 73 }
54 74
59 var publicador2 = new Mock<IPublicador>(); 79 var publicador2 = new Mock<IPublicador>();
60 var recordador1 = new Mock<IRecordador>(); 80 var recordador1 = new Mock<IRecordador>();
61 81
62 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), recordador1.Object); 82 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), recordador1.Object);
63 83
64 var van = new Van(); 84 var van = EventoObjectMother.GetVanValidaParaPublicar();
65 agenda.Publicar(van); 85 agenda.Publicar(van);
66 86
67 agenda.Recordar(van); 87 agenda.Recordar(van);
68 88
69 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); 89 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
72 92
73 Assert.AreEqual(1, agenda.Eventos.Count()); 93 Assert.AreEqual(1, agenda.Eventos.Count());
74 } 94 }
75 95
76 [Test] 96 [Test]
97 public void Propuesta_de_van()
98 {
99 var van = new Van{Titulo = "Van propuesta"};
100
101 var agenda = new Agenda(null, null);
102 agenda.Proponer(van);
103
104 IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos();
105 Assert.IsNotNull(eventosPropuestos);
106 Assert.AreEqual(1, eventosPropuestos.Count);
107 Assert.AreEqual("Van propuesta", eventosPropuestos[0].Titulo);
108 }
109
110 [Test]
111 public void Propuesta_de_van_sin_titulo()
112 {
113 var van = new Van();
114
115 var agenda = new Agenda(null, null);
116 Assert.Throws<ValidationException>(() => agenda.Proponer(van));
117 Assert.AreEqual(Guid.Empty, van.Id);
118 }
119
120
121 [Test]
122 public void Agendar_van_propuesta_sin_fecha()
123 {
124 var agenda = new Agenda(null, null);
125
126 {
127 var van = new Van {Titulo = "Van propuesta"};
128 agenda.Proponer(van);
129 }
130
131 {
132 var van = agenda.GetEventosPropuestos().FirstOrDefault();
133 Assert.IsNotNull(van);
134 Assert.Throws<ValidationException>(()=>agenda.Publicar(van));
135 }
136 }
137
138 [Test]
139 public void Agendar_van_propuesta_sin_ponente()
140 {
141 var agenda = new Agenda(null, null);
142
143 {
144 var van = new Van { Titulo = "Van propuesta" };
145 agenda.Proponer(van);
146 }
147
148 {
149 var van = agenda.GetEventosPropuestos().FirstOrDefault() as Van;
150 Assert.IsNotNull(van);
151
152 van.Fecha = DateTime.Today.AddDays(5);
153 Assert.Throws<ValidationException>(() => agenda.Publicar(van));
154 }
155 }
156
157
158 [Test]
77 public void Van_crud() 159 public void Van_crud()
78 { 160 {
79 Guid vanId; 161 Guid vanId;
80 { 162 {
81 var agenda = new Agenda(null, null); 163 var agenda = new Agenda(null, null);
82 agenda.Publicar(new Van()); 164 agenda.Publicar(EventoObjectMother.GetVanValidaParaPublicar());
83 165
84 IAgendaRepository agendaRepository = new AgendaRepository(); 166 IAgendaRepository agendaRepository = new AgendaRepository();
85 167
86 agendaRepository.Save(agenda); 168 agendaRepository.Save(agenda);
87 vanId = agenda.Id; 169 vanId = agenda.Id;
92 174
93 Agenda agenda = agendaRepository.Get(vanId); 175 Agenda agenda = agendaRepository.Get(vanId);
94 176
95 Assert.IsNotNull(agenda); 177 Assert.IsNotNull(agenda);
96 Assert.AreEqual(1, agenda.Eventos.Count()); 178 Assert.AreEqual(1, agenda.Eventos.Count());
97 agenda.Publicar(new Cafe()); 179 agenda.Publicar(EventoObjectMother.GetCafeValidoParaPublicar());
98 180
99 agendaRepository.Update(agenda); 181 agendaRepository.Update(agenda);
100 } 182 }
101 183
102 { 184 {