comparison Agendas/trunk/src/Agendas.Tests/Cruds/PersonaCrud.cs @ 178:33e57fd1a6c9

Roles: en dominio y autoregistración
author nelopauselli
date Mon, 08 Aug 2011 12:30:37 -0300
parents
children 222362c29416
comparison
equal deleted inserted replaced
177:784d81e32366 178:33e57fd1a6c9
1 using System;
2 using System.Linq;
3 using AltNetHispano.Agendas.Domain;
4 using AltNetHispano.Agendas.Domain.Repositories;
5 using AltNetHispano.Agendas.Domain.Services;
6 using NUnit.Framework;
7
8 namespace AltNetHispano.Agendas.Tests.Cruds
9 {
10 public class PersonaCrud
11 {
12 private readonly IPersonaRepository _personaRepository;
13 private readonly Func<IDisposable> _requestEmulator;
14 private readonly PersonaService _personaService;
15
16 public PersonaCrud(Func<IPersonaRepository> createpersonaRepository, Func<IDisposable> requestEmulator)
17 {
18 _personaRepository = createpersonaRepository.Invoke();
19 _personaService = new PersonaService(_personaRepository);
20 _requestEmulator = requestEmulator;
21 }
22
23 public Guid CreateAdministrador()
24 {
25 using (_requestEmulator.Invoke())
26 {
27 _personaService.Add("Nelo Pauselli", "nelopauselli", "nelopauselli@gmail.com", "http://nelopauselli.blogspot.com");
28 }
29
30 using (_requestEmulator.Invoke())
31 {
32 var persona = _personaRepository.GetByNombre("Nelo Pauselli");
33 Assert.IsNotNull(persona);
34 return persona.Id;
35 }
36 }
37
38 public void ReadAdministrador()
39 {
40 Guid personaId = CreateAdministrador();
41
42 using (_requestEmulator.Invoke())
43 {
44 var persona = _personaRepository.Get(personaId);
45
46 Assert.IsNotNull(persona);
47 Assert.AreEqual("Nelo Pauselli", persona.Nombre);
48 Assert.AreEqual("nelopauselli", persona.Twitter);
49 Assert.AreEqual("nelopauselli@gmail.com", persona.Mail);
50 Assert.AreEqual("http://nelopauselli.blogspot.com", persona.Blog);
51
52 Assert.IsTrue(persona.Cuentas.Any());
53 Assert.AreEqual("nelopauselli", persona.Cuentas.First().LogonName);
54 Assert.AreEqual(IdentityProviderEnum.Twitter, persona.Cuentas.First().IdentityProvider);
55
56 Assert.IsTrue(persona.Roles.Any());
57 Assert.IsTrue(persona.Roles.Contains(Roles.Usuario));
58 Assert.IsTrue(persona.Roles.Contains(Roles.Administrador));
59 }
60 }
61
62 public Guid CreateUsuario()
63 {
64 using (_requestEmulator.Invoke())
65 {
66 _personaService.Add("Pablo Morales", "pablomorales", "pablomorales@gmail.com", "http://pablomorales.blogspot.com");
67 }
68
69 using (_requestEmulator.Invoke())
70 {
71 var persona = _personaRepository.GetByNombre("Pablo Morales");
72 Assert.IsNotNull(persona);
73 return persona.Id;
74 }
75 }
76
77 public void ReadUsuario()
78 {
79 Guid personaId = CreateUsuario();
80
81 using (_requestEmulator.Invoke())
82 {
83 var persona = _personaRepository.Get(personaId);
84
85 Assert.IsNotNull(persona);
86 Assert.AreEqual("Pablo Morales", persona.Nombre);
87 Assert.AreEqual("pablomorales", persona.Twitter);
88 Assert.AreEqual("pablomorales@gmail.com", persona.Mail);
89 Assert.AreEqual("http://pablomorales.blogspot.com", persona.Blog);
90
91 Assert.IsTrue(persona.Cuentas.Any());
92 Assert.AreEqual("pablomorales", persona.Cuentas.First().LogonName);
93 Assert.AreEqual(IdentityProviderEnum.Twitter, persona.Cuentas.First().IdentityProvider);
94
95 Assert.IsTrue(persona.Roles.Any());
96 Assert.IsTrue(persona.Roles.Contains(Roles.Usuario));
97 Assert.IsFalse(persona.Roles.Contains(Roles.Administrador));
98 }
99 }
100
101 public void Update()
102 {
103 Guid personaId = CreateAdministrador();
104
105 using (_requestEmulator.Invoke())
106 {
107 var persona = _personaRepository.Get(personaId);
108 Assert.IsNotNull(persona);
109
110 persona.Nombre = "Nelo Mariano Pauselli";
111 }
112
113 using (_requestEmulator.Invoke())
114 {
115 var persona = _personaRepository.Get(personaId);
116
117 Assert.IsNotNull(persona);
118 Assert.AreEqual("Nelo Mariano Pauselli", persona.Nombre);
119 }
120 }
121 }
122 }