1 # -*- coding: utf-8 -*-
4 from django
.core
.urlresolvers
import reverse
5 from project
.rh
.test
.common
import RhTest
6 from project
.rh
.change_list
import KEY_STATUT
, STATUT_ACTIF
, STATUT_INACTIF
,\
10 class EmployeVolumetrieTest(RhTest
):
12 Test les notions d'actifs / inactifs
15 today
= datetime
.today()
16 annee_moins_2
= datetime
.date(today
.year
- 2, 1, 1)
17 annee_moins_1
= datetime
.date(today
.year
- 1, 1, 1)
18 annee_plus_2
= datetime
.date(today
.year
+ 2, 1, 1)
19 annee_plus_1
= datetime
.date(today
.year
+ 1, 1, 1)
21 def test_actifs(self
):
23 Test la remontée des dossiers actifs pour 4 employés différents
24 avec chacun un dossier.
27 self
.dossier_cnf_ngaoundere
.date_debut
= self
.annee_moins_1
28 self
.dossier_cnf_ngaoundere
.date_fin
= self
.annee_plus_1
29 self
.dossier_cnf_ngaoundere
.save()
31 self
.dossier_cnf_bangui
.date_debut
= self
.annee_moins_1
32 self
.dossier_cnf_bangui
.date_fin
= self
.annee_plus_1
33 self
.dossier_cnf_bangui
.save()
36 self
.dossier_bap_bureau
.date_debut
= self
.annee_moins_2
37 self
.dossier_bap_bureau
.date_fin
= self
.annee_moins_1
38 self
.dossier_bap_bureau
.save()
41 self
.dossier_bap_ifi
.date_debut
= self
.annee_plus_1
42 self
.dossier_bap_ifi
.date_fin
= self
.annee_plus_2
43 self
.dossier_bap_ifi
.save()
46 url
= reverse('admin:rh_employe_changelist')
47 params
= {KEY_STATUT
: STATUT_ACTIF
}
48 qs
= self
.client
.get(url
, params
).context
['cl'].query_set
49 self
.assertEqual(len(qs
), 2)
51 # Puis 1 seul dossier actif
52 self
.dossier_cnf_bangui
.date_debut
= self
.annee_moins_2
53 self
.dossier_cnf_bangui
.date_fin
= self
.annee_moins_1
54 self
.dossier_cnf_bangui
.save()
56 qs
= self
.client
.get(url
, params
).context
['cl'].query_set
57 self
.assertEqual(len(qs
), 1)
59 def test_inactifs(self
):
61 Test la remontée des dossiers inactifs de 4 employés différents
62 avec chacun un dossier
65 self
.dossier_cnf_ngaoundere
.date_debut
= self
.annee_moins_1
66 self
.dossier_cnf_ngaoundere
.date_fin
= self
.annee_plus_1
67 self
.dossier_cnf_ngaoundere
.save()
69 self
.dossier_cnf_bangui
.date_debut
= self
.annee_moins_1
70 self
.dossier_cnf_bangui
.date_fin
= self
.annee_plus_1
71 self
.dossier_cnf_bangui
.save()
74 self
.dossier_bap_bureau
.date_debut
= self
.annee_moins_2
75 self
.dossier_bap_bureau
.date_fin
= self
.annee_moins_1
76 self
.dossier_bap_bureau
.save()
79 self
.dossier_bap_ifi
.date_debut
= self
.annee_plus_1
80 self
.dossier_bap_ifi
.date_fin
= self
.annee_plus_2
81 self
.dossier_bap_ifi
.save()
84 url
= reverse('admin:rh_employe_changelist')
85 params
= {KEY_STATUT
: STATUT_INACTIF
}
86 qs
= self
.client
.get(url
, params
).context
['cl'].query_set
87 self
.assertEqual(len(qs
), 1)
89 # Puis 1 seul dossier actif
90 self
.dossier_cnf_bangui
.date_debut
= self
.annee_moins_2
91 self
.dossier_cnf_bangui
.date_fin
= self
.annee_moins_1
92 self
.dossier_cnf_bangui
.save()
94 qs
= self
.client
.get(url
, params
).context
['cl'].query_set
95 self
.assertEqual(len(qs
), 2)
97 def test_futurs(self
):
99 Test la remontée des dossiers futurs pour 4 employés différents
100 avec chacun un dossier.
103 self
.dossier_cnf_ngaoundere
.date_debut
= self
.annee_moins_1
104 self
.dossier_cnf_ngaoundere
.date_fin
= self
.annee_plus_1
105 self
.dossier_cnf_ngaoundere
.save()
107 self
.dossier_cnf_bangui
.date_debut
= self
.annee_moins_1
108 self
.dossier_cnf_bangui
.date_fin
= self
.annee_plus_1
109 self
.dossier_cnf_bangui
.save()
112 self
.dossier_bap_bureau
.date_debut
= self
.annee_moins_2
113 self
.dossier_bap_bureau
.date_fin
= self
.annee_moins_1
114 self
.dossier_bap_bureau
.save()
117 self
.dossier_bap_ifi
.date_debut
= self
.annee_plus_1
118 self
.dossier_bap_ifi
.date_fin
= self
.annee_plus_2
119 self
.dossier_bap_ifi
.save()
122 url
= reverse('admin:rh_employe_changelist')
123 params
= {KEY_STATUT
: STATUT_FUTUR
}
124 qs
= self
.client
.get(url
, params
).context
['cl'].query_set
125 self
.assertEqual(len(qs
), 1)
127 # Puis 1 seul dossier actif
128 self
.dossier_cnf_bangui
.date_debut
= self
.annee_moins_2
129 self
.dossier_cnf_bangui
.date_fin
= self
.annee_moins_1
130 self
.dossier_cnf_bangui
.save()
132 qs
= self
.client
.get(url
, params
).context
['cl'].query_set
133 self
.assertEqual(len(qs
), 1)
135 def test_2_dossiers_actifs(self
):
137 Test employe qui a 2 dossiers actifs.
139 self
.dossier_bap_bureau
.delete()
140 self
.dossier_bap_ifi
.delete()
143 self
.dossier_cnf_ngaoundere
.date_debut
= self
.annee_moins_1
144 self
.dossier_cnf_ngaoundere
.date_fin
= self
.annee_plus_1
145 self
.dossier_cnf_ngaoundere
.save()
147 self
.dossier_cnf_bangui
.date_debut
= self
.annee_moins_1
148 self
.dossier_cnf_bangui
.date_fin
= self
.annee_plus_1
149 self
.dossier_cnf_bangui
.save()
152 url
= reverse('admin:rh_employe_changelist')
153 params
= {KEY_STATUT
: STATUT_ACTIF
}
155 qs
= self
.client
.get(url
, params
).context
['cl'].query_set
156 self
.assertEqual(len(qs
), 1)
158 def test_1_dossier_actif(self
):
160 Test employe qui a 1 dossier actifs et 1 inactif.
162 self
.dossier_bap_bureau
.delete()
163 self
.dossier_bap_ifi
.delete()
165 self
.dossier_cnf_ngaoundere
= self
.employe_cnf_ngaoundere
166 self
.dossier_cnf_ngaoundere
.date_debut
= self
.annee_moins_2
167 self
.dossier_cnf_ngaoundere
.date_fin
= None
168 self
.dossier_cnf_ngaoundere
.save()
170 self
.dossier_cnf_bangui
.employe
= self
.employe_cnf_ngaoundere
171 self
.dossier_cnf_bangui
.date_debut
= self
.annee_moins_2
172 self
.dossier_cnf_bangui
.date_fin
= self
.annee_moins_1
173 self
.dossier_cnf_bangui
.save()
176 url
= reverse('admin:rh_employe_changelist')
177 params
= {KEY_STATUT
: STATUT_ACTIF
}
179 qs
= self
.client
.get(url
, params
).context
['cl'].query_set
180 self
.assertEqual(len(qs
), 1)
182 def test_2_dossiers_inactifs(self
):
184 Test employe qui a 2 dossiers inactifs.
186 self
.dossier_bap_bureau
.delete()
187 self
.dossier_bap_ifi
.delete()
189 self
.dossier_cnf_ngaoundere
.employe
= self
.employe_cnf_ngaoundere
190 self
.dossier_cnf_ngaoundere
.date_debut
= self
.annee_moins_2
191 self
.dossier_cnf_ngaoundere
.date_fin
= self
.annee_moins__1
192 self
.dossier_cnf_ngaoundere
.save()
194 self
.dossier_cnf_bangui
.employe
= self
.employe_cnf_ngaoundere
195 self
.dossier_cnf_bangui
.date_debut
= self
.annee_moins_2
196 self
.dossier_cnf_bangui
.date_fin
= self
.annee_moins__1
197 self
.dossier_cnf_bangui
.save()
200 url
= reverse('admin:rh_employe_changelist')
201 params
= {KEY_STATUT
: STATUT_ACTIF
}
203 qs
= self
.client
.get(url
, params
).context
['cl'].query_set
204 self
.assertEqual(len(qs
), 0)
207 class EmployeAddTest(RhTest
):
209 Test l'ajout d'un employé
211 url
= reverse('admin:rh_employe_add')
213 def test_anonyme(self
):
215 Un anonyme ne peut pas créer d'employé
218 self
._test_acces_ko(self
.url
)
220 def test_correspondant_rh(self
):
222 Un correspodant RH peut ajouter un employé
224 self
._test_correspondant_rh()
225 self
._test_acces_ok(self
.url
)
227 def test_administrateur_regional(self
):
229 Un administrateur peut ajouter un employé
231 self
._test_administrateur_regional()
232 self
._test_acces_ok(self
.url
)
234 def test_directeur_bureau(self
):
236 Un directeur de bureau peut ajouter un employé
238 self
._test_directeur_bureau()
239 self
._test_acces_ok(self
.url
)
243 Un DRH peut ajouter un employé
246 self
._test_acces_ok(self
.url
)
250 Un DRH (2ieme niveau) peut ajouter un employé
253 self
._test_acces_ok(self
.url
)
255 def _test_grp_accior(self
):
257 Un membre de l'ACCIOR ne peut pas ajouter un employé
259 self
._test_grp_accior()
260 self
._test_acces_ko(self
.url
)
262 def _test_grp_abf(self
):
264 Un membre de l'ABF ne peut pas ajouter un employé
266 self
._test_grp_abf(self
)
267 self
._test_acces_ko(self
.url
)
269 def _test_grp_haute_direction(self
):
271 Un membre de la haute direction ne peut pas ajouter un employé
273 self
._test_grp_haute_direction()
274 self
._test_acces_ko(self
.url
)
276 def _test_grp_service_utilisateurs(self
):
278 Un membre du groupe service utilisateur ne peut pas ajouter un employé
280 self
._test_grp_service_utilisateurs()
281 self
._test_acces_ko(self
.url
)
284 class EmployeDeleteTest(RhTest
):
286 Test la suppression d'un employé
290 super(EmployeDeleteTest
, self
).setUp()
291 self
.url
= reverse('admin:rh_employe_delete',
292 args
=[self
.employe_cnf_ngaoundere
.id])
294 def test_anonyme(self
):
296 Un anonyme ne peut pas supprimer un employé
299 self
._test_acces_ko(self
.url
)
301 def test_correspondant_rh(self
):
303 Un correspodant RH ne peut pas supprimer un employé
305 self
._test_correspondant_rh()
306 self
._test_acces_ko(self
.url
)
308 def test_administrateur_regional(self
):
310 Un administrateur ne peut pas supprimer un employé
312 self
._test_administrateur_regional()
313 self
._test_acces_ko(self
.url
)
315 def test_directeur_bureau(self
):
317 Un directeur de bureau ne peut pas supprimer un employé
319 self
._test_directeur_bureau()
320 self
._test_acces_ko(self
.url
)
324 Un DRH peut supprimer un employé
327 self
._test_acces_ok(self
.url
)
331 Un DRH (2ieme niveau) peut supprimer un employé
334 self
._test_acces_ok(self
.url
)
336 def _test_grp_accior(self
):
338 Un membre de l'ACCIOR ne peut pas supprimer un employé
340 self
._test_grp_accior()
341 self
._test_acces_ko(self
.url
)
343 def _test_grp_abf(self
):
345 Un membre de l'ABF ne peut pas supprimer un employé
347 self
._test_grp_abf(self
)
348 self
._test_acces_ko(self
.url
)
350 def _test_grp_haute_direction(self
):
352 Un membre de la haute direction ne peut pas supprimer un employé
354 self
._test_grp_haute_direction()
355 self
._test_acces_ko(self
.url
)
357 def _test_grp_service_utilisateurs(self
):
359 Un membre du groupe service utilisateur
360 ne peut pas supprimer un employé
362 self
._test_grp_service_utilisateurs()
363 self
._test_acces_ko(self
.url
)
366 class EmployeListTest(RhTest
):
368 Test la suppression d'un employé
372 super(EmployeListTest
, self
).setUp()
373 self
.url
= reverse('admin:rh_employe_changelist')
375 def test_anonyme(self
):
377 Un anonyme ne peut pas voir les employés
380 self
._test_acces_ko(self
.url
)
382 def test_correspondant_rh(self
):
384 Un correspodant RH peut voir les employés
386 self
._test_correspondant_rh()
387 self
._test_acces_ok(self
.url
)
388 qs
= self
.client
.get(self
.url
).context
['cl'].query_set
389 self
.assertEqual(len(qs
), 2)
391 def test_administrateur_regional(self
):
393 Un administrateur peut voir les employés de sa région
395 self
._test_administrateur_regional()
396 self
._test_acces_ok(self
.url
)
397 qs
= self
.client
.get(self
.url
).context
['cl'].query_set
398 self
.assertEqual(len(qs
), 2)
400 def test_directeur_bureau(self
):
402 Un directeur de bureau peut voir les employés de sa région
404 self
._test_directeur_bureau()
405 self
._test_acces_ok(self
.url
)
406 qs
= self
.client
.get(self
.url
).context
['cl'].query_set
407 self
.assertEqual(len(qs
), 2)
411 Un DRH peut voir tous les employés
414 self
._test_acces_ok(self
.url
)
415 qs
= self
.client
.get(self
.url
).context
['cl'].query_set
416 self
.assertEqual(len(qs
), 4)
420 Un DRH (2ieme niveau) peut voir tous les employés
423 self
._test_acces_ok(self
.url
)
425 def _test_grp_accior(self
):
427 Un membre de l'ACCIOR ne peut pas voir les employés
429 self
._test_grp_accior()
430 self
._test_acces_ko(self
.url
)
432 def _test_grp_abf(self
):
434 Un membre de l'ABF ne peut pas voir les employés
436 self
._test_grp_abf(self
)
437 self
._test_acces_ko(self
.url
)
439 def _test_grp_haute_direction(self
):
441 Un membre de la haute direction ne peut pas voir les employés
443 self
._test_grp_haute_direction()
444 self
._test_acces_ko(self
.url
)
446 def _test_grp_service_utilisateurs(self
):
448 Un membre du groupe service utilisateur ne peut pas voir les employés
450 self
._test_grp_service_utilisateurs()
451 self
._test_acces_ko(self
.url
)
454 class EmployeApercuTest(RhTest
):
456 Test l'accès à un aperçu de l'employé
460 super(EmployeApercuTest
, self
).setUp()
461 self
.url
= reverse('employe_apercu',
462 args
=[self
.employe_cnf_ngaoundere
.id])
463 self
.url2
= reverse('employe_apercu',
464 args
=[self
.employe_bap_ifi
.id])
466 def test_anonyme(self
):
468 Un anonyme ne peut pas voir l'aperçu
471 self
._test_acces_ko(self
.url
)
473 def test_correspondant_rh(self
):
475 Un correspondant RH peut voir l'aperçu
476 Les dossiers qui ne sont pas de sa région ne sont pas disponibles
478 self
._test_correspondant_rh()
479 self
._test_acces_ok(self
.url
)
480 dossiers
= self
.client
.get(self
.url
).context
['dossiers']
481 self
.assertEqual(len(dossiers
), 1)
482 self
._test_acces_ok(self
.url2
)
483 dossiers
= self
.client
.get(self
.url2
).context
['dossiers']
484 self
.assertEqual(len(dossiers
), 0)
486 def test_administrateur_regional(self
):
488 Un administrateur peut voir l'aperçu de l'employé
489 Les dossiers qui ne sont pas de sa région ne sont pas disponibles
491 self
._test_administrateur_regional()
492 self
._test_acces_ok(self
.url
)
493 dossiers
= self
.client
.get(self
.url
).context
['dossiers']
494 self
.assertEqual(len(dossiers
), 1)
495 self
._test_acces_ok(self
.url2
)
496 dossiers
= self
.client
.get(self
.url2
).context
['dossiers']
497 self
.assertEqual(len(dossiers
), 0)
499 def test_directeur_bureau(self
):
501 Un directeur de bureau peut voir l'aperçu employé
502 Les dossiers qui ne sont pas de sa région ne sont pas disponibles
504 self
._test_directeur_bureau()
505 dossiers
= self
.client
.get(self
.url
).context
['dossiers']
506 self
.assertEqual(len(dossiers
), 1)
507 self
._test_acces_ok(self
.url2
)
508 dossiers
= self
.client
.get(self
.url2
).context
['dossiers']
509 self
.assertEqual(len(dossiers
), 0)
513 Un DRH peut voir tous les aperçus d'employés avec tous les dossiers
516 self
._test_acces_ok(self
.url
)
517 self
._test_acces_ok(self
.url2
)
518 dossiers
= self
.client
.get(self
.url
).context
['dossiers']
519 self
.assertEqual(len(dossiers
), 1)
520 dossiers
= self
.client
.get(self
.url2
).context
['dossiers']
521 self
.assertEqual(len(dossiers
), 1)
525 Un DRH (2ieme niveau) peut voir tous les aperçus d'employés
526 avec tous les dossiers
529 self
._test_acces_ok(self
.url
)
530 self
._test_acces_ok(self
.url2
)
531 dossiers
= self
.client
.get(self
.url
).context
['dossiers']
532 self
.assertEqual(len(dossiers
), 1)
533 dossiers
= self
.client
.get(self
.url2
).context
['dossiers']
534 self
.assertEqual(len(dossiers
), 1)
536 def _test_grp_accior(self
):
538 Un membre de l'ACCIOR ne peut pas voir les aperçus d'employés
540 self
._test_grp_accior()
541 self
._test_acces_ko(self
.url
)
543 def _test_grp_abf(self
):
545 Un membre de l'ABF ne peut pas voir les aperçus d'employés
547 self
._test_grp_abf(self
)
548 self
._test_acces_ko(self
.url
)
550 def _test_grp_haute_direction(self
):
552 Un membre de la haute direction ne peut pas voir
553 les aperçus d'employés
555 self
._test_grp_haute_direction()
556 self
._test_acces_ko(self
.url
)
558 def _test_grp_service_utilisateurs(self
):
560 Un membre du groupe service utilisateur ne pas pas voir
561 les aperçus d'employés
563 self
._test_grp_service_utilisateurs()
564 self
._test_acces_ko(self
.url
)