comparison Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs @ 62:c40b97bbed01

Verificando persistencia de Ponentes y Tracks en tests de CRUD
author nelopauselli
date Tue, 17 May 2011 01:55:19 -0300
parents 02e163f2ca38
children 96d7609f2e08
comparison
equal deleted inserted replaced
61:cb3f7b47c1f0 62:c40b97bbed01
1 using System; 1 using System;
2 using System.Linq;
2 using AltNetHispano.Agendas.Domain; 3 using AltNetHispano.Agendas.Domain;
3 using AltNetHispano.Agendas.Domain.Repositories; 4 using AltNetHispano.Agendas.Domain.Repositories;
4 using NUnit.Framework; 5 using NUnit.Framework;
5 6
6 namespace AltNetHispano.Agendas.Tests.Cruds 7 namespace AltNetHispano.Agendas.Tests.Cruds
7 { 8 {
8 public class EventoCrud 9 public class EventoCrud
9 { 10 {
10 private readonly Func<IEventoRepository> _createRepository; 11 private readonly IEventoRepository _eventoRepository;
11 private readonly Func<IDisposable> _requestEmulator; 12 private readonly Func<IDisposable> _requestEmulator;
13 private readonly IPonenteRepository _ponenteRepository;
12 14
13 public EventoCrud(Func<IEventoRepository> createRepository, Func<IDisposable> requestEmulator) 15 public EventoCrud(Func<IEventoRepository> createEventoRepository, Func<IPonenteRepository> createPonenteRepository, Func<IDisposable> requestEmulator)
14 { 16 {
15 _createRepository = createRepository; 17 _eventoRepository = createEventoRepository.Invoke();
18 _ponenteRepository = createPonenteRepository.Invoke();
19
16 _requestEmulator = requestEmulator; 20 _requestEmulator = requestEmulator;
17 } 21 }
18 22
19 public Guid Create() 23 public Guid Create()
20 { 24 {
21 using (_requestEmulator.Invoke()) 25 using (_requestEmulator.Invoke())
22 { 26 {
23 var van = Evento.Proponer("TDD - Diseño Basado en Ejemplos", new Ponente("Carlos Blé")); 27 var ponente = new Ponente("Carlos Blé");
28 _ponenteRepository.Save(ponente);
24 29
25 IEventoRepository eventoRepository = _createRepository.Invoke(); 30 var van = Evento.Proponer("TDD - Diseño Basado en Ejemplos", ponente);
26 31 _eventoRepository.Save(van);
27 eventoRepository.Save(van);
28 32
29 return van.Id; 33 return van.Id;
30 } 34 }
31 } 35 }
32 36
34 { 38 {
35 Guid eventoId = Create(); 39 Guid eventoId = Create();
36 40
37 using (_requestEmulator.Invoke()) 41 using (_requestEmulator.Invoke())
38 { 42 {
39 IEventoRepository eventoRepository = _createRepository.Invoke(); 43 Evento van = _eventoRepository.Get(eventoId);
40
41 Evento van = eventoRepository.Get(eventoId);
42 44
43 Assert.IsNotNull(van); 45 Assert.IsNotNull(van);
44 Assert.IsNotNull(van.Ponente); 46 Assert.IsNotNull(van.Ponente);
45 Assert.AreEqual("Carlos Blé", van.Ponente.Nombre); 47 Assert.AreEqual("Carlos Blé", van.Ponente.Nombre);
48 Assert.AreEqual(1, van.Ponente.Eventos.Count());
49 Assert.AreEqual(van, van.Ponente.Eventos.First());
50
51 Assert.AreEqual(1, van.Tracks.Where(t => t.Accion == Accion.Proponer).Count());
52
46 Assert.AreEqual("TDD - Diseño Basado en Ejemplos", van.Titulo); 53 Assert.AreEqual("TDD - Diseño Basado en Ejemplos", van.Titulo);
47 } 54 }
48 } 55 }
49 56
50 public void Update() 57 public void Update()
51 { 58 {
52 Guid eventoId = Create(); 59 Guid eventoId = Create();
53 60
54 using (_requestEmulator.Invoke()) 61 using (_requestEmulator.Invoke())
55 { 62 {
56 IEventoRepository eventoRepository = _createRepository.Invoke(); 63 Evento van = _eventoRepository.Get(eventoId);
57
58 Evento van = eventoRepository.Get(eventoId);
59 64
60 Assert.IsNotNull(van); 65 Assert.IsNotNull(van);
61 66
62 van.CambiarTitulo("TDD & Ejemplos"); 67 van.CambiarTitulo("TDD & Ejemplos");
63 van.Actualizar(van.Ponente, new DateTime(2010, 04, 17));
64 68
65 eventoRepository.Update(van); 69 var otroPonente = new Ponente("José");
70 _ponenteRepository.Save(otroPonente);
71
72 van.Actualizar(otroPonente, new DateTime(2010, 04, 17));
73
74 _eventoRepository.Update(van);
66 } 75 }
67 76
68 using (_requestEmulator.Invoke()) 77 using (_requestEmulator.Invoke())
69 { 78 {
70 IEventoRepository eventoRepository = _createRepository.Invoke(); 79 Evento van = _eventoRepository.Get(eventoId);
71
72 Evento van = eventoRepository.Get(eventoId);
73 80
74 Assert.IsNotNull(van); 81 Assert.IsNotNull(van);
75 Assert.IsNotNull(van.Ponente); 82 Assert.IsNotNull(van.Ponente);
76 Assert.AreEqual("Carlos Blé", van.Ponente.Nombre); 83 Assert.AreEqual("José", van.Ponente.Nombre);
77 Assert.AreEqual("TDD & Ejemplos", van.Titulo); 84 Assert.AreEqual("TDD & Ejemplos", van.Titulo);
78 Assert.AreEqual(new DateTime(2010, 04, 17), van.Fecha); 85 Assert.AreEqual(new DateTime(2010, 04, 17), van.Fecha);
86
87 var ponente1 = _ponenteRepository.GetByNombre("Carlos Blé");
88 Assert.IsNotNull(ponente1);
89 Assert.AreEqual(0, ponente1.Eventos.Count());
90
91 var ponente2 = _ponenteRepository.GetByNombre("José");
92 Assert.IsNotNull(ponente2);
93 Assert.AreEqual(1, ponente2.Eventos.Count());
94
95 Assert.AreEqual(1, van.Tracks.Where(t => t.Accion == Accion.Proponer).Count());
96 Assert.AreEqual(1, van.Tracks.Where(t => t.Accion == Accion.Modificar).Count());
79 } 97 }
80 } 98 }
81 99
82 public void Delete() 100 public void Delete()
83 { 101 {
84 Guid eventoId = Create(); 102 Guid eventoId = Create();
85 103
86 using (_requestEmulator.Invoke()) 104 using (_requestEmulator.Invoke())
87 { 105 {
88 IEventoRepository eventoRepository = _createRepository.Invoke(); 106 Evento van = _eventoRepository.Get(eventoId);
107 Assert.IsNotNull(van);
89 108
90 Evento van = eventoRepository.Get(eventoId); 109 _eventoRepository.Delete(van);
91 Assert.IsNotNull(van);
92 eventoRepository.Delete(van);
93 } 110 }
94 111
95 using (_requestEmulator.Invoke()) 112 using (_requestEmulator.Invoke())
96 { 113 {
97 IEventoRepository eventoRepository = _createRepository.Invoke(); 114 Evento van = _eventoRepository.Get(eventoId);
98
99 Evento van = eventoRepository.Get(eventoId);
100 115
101 Assert.IsNull(van); 116 Assert.IsNull(van);
117
118 var ponente = _ponenteRepository.GetByNombre("Carlos Blé");
119
120 Assert.IsNotNull(ponente);
121 Assert.AreEqual(0, ponente.Eventos.Count());
102 } 122 }
103 } 123 }
104 } 124 }
105 } 125 }