1 # -*- coding: utf-8 -*-
4 from django
.core
.urlresolvers
import reverse
5 from django
.test
.client
import RequestFactory
, Client
6 from django
.contrib
.auth
.models
import User
7 from project
.rh
import groups
8 from auf
.django
.references
import models
as ref
9 from django
.test
import TestCase
10 from project
.rh
import models
as rh
13 class RhTest(TestCase
):
19 self.poste_cnf_ngaoundere
26 self.employe_cnf_ngaoundere
27 self.employe_cnf_bangui
28 self.employe_bap_bureau
37 self.dossier_cnf_ngaoundere
38 self.dossier_cnf_bangui
39 self.dossier_bap_bureau
44 self
.factory
= RequestFactory()
45 self
.password
= "0000"
46 today
= datetime
.datetime
.now()
47 #########################
48 # Régions / Implantations
49 #########################
50 self
.REGION_ACGL
= ref
.Region
.objects
.get(id=1)
51 self
.IMPLANTATION_ACGL_CNF_NGAOUNDERE
= ref
.Implantation
.objects
.get(id=90)
52 self
.IMPLANTATION_ACGL_CNF_BANGUI
= ref
.Implantation
.objects
.get(id=85)
54 self
.REGION_BAP
= ref
.Region
.objects
.get(id=4)
55 self
.IMPLANTATION_BAP_BUREAU
= ref
.Implantation
.objects
.get(id=51)
56 self
.IMPLANTATION_BAP_IFI
= ref
.Implantation
.objects
.get(id=55)
62 self
.employe_cnf_ngaoundere
= rh
.Employe(
66 self
.employe_cnf_ngaoundere
.save()
67 self
.employe_cnf_bangui
= rh
.Employe(
71 self
.employe_cnf_bangui
.save()
72 self
.employe_bap_bureau
= rh
.Employe(
76 self
.employe_bap_bureau
.save()
77 self
.employe_bap_ifi
= rh
.Employe(
81 self
.employe_bap_ifi
.save()
86 for idx
, e
in enumerate(rh
.Employe
.objects
.all()):
87 email
= u
"%s@test.auf" % idx
88 u
= User(first_name
=e
.prenom
,
93 u
.set_password(self
.password
)
95 auth
= ref
.Authentification(
97 motdepasse
=u
.password
,
106 self
.poste_cnf_ngaoundere
= rh
.Poste(nom
="poste à NGAOUNDERE",
107 implantation
=self
.IMPLANTATION_ACGL_CNF_NGAOUNDERE
)
109 self
.poste_cnf_bangui
= rh
.Poste(nom
="poste à BANGUI",
110 implantation
=self
.IMPLANTATION_ACGL_CNF_BANGUI
)
112 self
.poste_cnf_ngaoundere
.save()
113 self
.poste_cnf_bangui
.save()
115 self
.dossier_cnf_ngaoundere
= rh
.Dossier(poste
=self
.poste_cnf_ngaoundere
,
116 employe
=self
.employe_cnf_ngaoundere
, date_debut
=today
)
117 self
.dossier_cnf_bangui
= rh
.Dossier(poste
=self
.poste_cnf_bangui
,
118 employe
=self
.employe_cnf_bangui
, date_debut
=today
)
120 self
.dossier_cnf_ngaoundere
.save()
121 self
.dossier_cnf_bangui
.save()
126 self
.poste_bap_bureau
= rh
.Poste(nom
="poste au Bureau BAP",
127 implantation
=self
.IMPLANTATION_BAP_BUREAU
)
128 self
.poste_bap_ifi
= rh
.Poste(nom
="poste à l'IFI",
129 implantation
=self
.IMPLANTATION_BAP_IFI
)
131 self
.poste_bap_bureau
.save()
132 self
.poste_bap_ifi
.save()
134 self
.dossier_bap_bureau
= rh
.Dossier(poste
=self
.poste_bap_bureau
,
135 employe
=self
.employe_bap_bureau
, date_debut
=today
)
136 self
.dossier_bap_ifi
= rh
.Dossier(poste
=self
.poste_bap_ifi
,
137 employe
=self
.employe_bap_ifi
, date_debut
=today
)
139 self
.dossier_bap_bureau
.save()
140 self
.dossier_bap_ifi
.save()
142 def _test_acces_ok(self
, url
):
143 response
= self
.client
.get(url
, follow
=True)
144 self
.assertEqual(response
.status_code
, 200)
145 self
.assertEqual('next' in response
.context
, False)
148 class PortalTest(RhTest
):
150 def test_anonyme_frontend(self
):
151 response
= self
.client
.get('/')
152 self
.assertEqual(response
.status_code
, 200)
154 def test_anonyme_backend(self
):
155 admin_index_url
= reverse('admin:index')
156 response
= self
.client
.get(admin_index_url
)
157 self
.assertEqual(response
.context
['next'], admin_index_url
)
159 def test_logged_sans_groupe_backend(self
):
161 admin_index_url
= reverse('admin:index')
162 self
.client
.login(username
=email
, password
=self
.password
)
163 response
= self
.client
.get(admin_index_url
)
164 self
.assertEqual(response
.context
['next'], admin_index_url
)
166 class EmployeAddTest(RhTest
):
168 Test l'ajout d'un employé
171 def test_correspondant_rh(self
):
173 Un correspodant RH peut ajouter un employé
177 u
= User
.objects
.get(email
=email
)
178 groups
.grp_correspondants_rh
.user_set
.add(u
)
179 groups
.grp_correspondants_rh
.save()
181 credentials
= {'username': email
, 'password': self
.password
}
182 url
= reverse('admin:rh_employe_add')
183 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
184 self
._test_acces_ok(url
)
186 def test_administrateur_regional(self
):
188 Un administrateur peut ajouter un employé
192 u
= User
.objects
.get(email
=email
)
193 groups
.grp_administrateurs
.user_set
.add(u
)
194 groups
.grp_administrateurs
.save()
196 credentials
= {'username': email
, 'password': self
.password
}
197 url
= reverse('admin:rh_employe_add')
198 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
199 self
._test_acces_ok(url
)
201 def test_directeur_bureau(self
):
203 Un directeur de bureau peut ajouter un employé
207 u
= User
.objects
.get(email
=email
)
208 groups
.grp_directeurs_bureau
.user_set
.add(u
)
209 groups
.grp_directeurs_bureau
.save()
211 credentials
= {'username': email
, 'password': self
.password
}
212 url
= reverse('admin:rh_employe_add')
213 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
214 self
._test_acces_ok(url
)
218 Un DRH peut ajouter un employé
222 u
= User
.objects
.get(email
=email
)
223 groups
.grp_drh
.user_set
.add(u
)
224 groups
.grp_drh
.save()
226 credentials
= {'username': email
, 'password': self
.password
}
227 url
= reverse('admin:rh_employe_add')
228 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
229 self
._test_acces_ok(url
)
233 Un DRH (2ieme niveau) peut ajouter un employé
237 u
= User
.objects
.get(email
=email
)
238 groups
.grp_drh2
.user_set
.add(u
)
239 groups
.grp_drh2
.save()
241 credentials
= {'username': email
, 'password': self
.password
}
242 url
= reverse('admin:rh_employe_add')
243 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
244 self
._test_acces_ok(url
)