1 # -*- coding: utf-8 -*-
4 from django
.core
.urlresolvers
import reverse
5 from django
.contrib
.auth
.models
import User
6 from project
.rh
.test
.common
import RhTest
7 from project
.rh
import models
as rh
9 class RapportContratTest(RhTest
):
11 Test l'accès au rapport des contrats
13 url
= reverse('rhr_contrats')
16 super(RapportContratTest
, self
).setUp()
18 cdi
= rh
.TypeContrat(nom
="CDI")
23 date_debut
=self
.today
,
24 dossier
=self
.dossier_cnf_ngaoundere
,)
29 date_debut
=self
.today
,
30 dossier
=self
.dossier_bap_ifi
)
33 def test_anonyme(self
):
35 Un anonyme ne peut pas accéder à ce rapport
38 self
._test_acces_ko(self
.url
)
40 def test_correspondant_rh(self
):
42 Un correspondant RH peut accéder à ce rapport limité aux dossiers de sa
45 self
._test_correspondant_rh()
46 self
._test_acces_ok(self
.url
)
47 contrats
= self
.client
.get(self
.url
).context
['contrats']
48 self
.assertEqual(len(contrats
), 1)
50 def test_administrateur_regional(self
):
52 Un administrateur peut accéder à ce rapport limité aux dossiers de sa
55 self
._test_administrateur_regional()
56 self
._test_acces_ok(self
.url
)
57 contrats
= self
.client
.get(self
.url
).context
['contrats']
58 self
.assertEqual(len(contrats
), 1)
60 def test_directeur_bureau(self
):
62 Un directeur de bureau peut accéder à ce rapport limité aux dossiers de
65 self
._test_directeur_bureau()
66 self
._test_acces_ok(self
.url
)
67 contrats
= self
.client
.get(self
.url
).context
['contrats']
68 self
.assertEqual(len(contrats
), 1)
72 Un DRH peut accéder à ce rapport
75 self
._test_acces_ok(self
.url
)
76 contrats
= self
.client
.get(self
.url
).context
['contrats']
77 self
.assertEqual(len(contrats
), 2)
81 Un DRH (2ieme niveau) peut accéder à ce rapport
84 self
._test_acces_ok(self
.url
)
85 contrats
= self
.client
.get(self
.url
).context
['contrats']
86 self
.assertEqual(len(contrats
), 2)
88 def _test_grp_accior(self
):
90 Un membre de l'ACCIOR ne peut pas accéder à ce rapport
92 self
._test_grp_accior()
93 self
._test_acces_ko(self
.url
)
95 def _test_grp_abf(self
):
97 Un membre de l'ABF ne peut pas accéder à ce rapport
99 self
._test_grp_abf(self
)
100 self
._test_acces_ko(self
.url
)
102 def _test_grp_haute_direction(self
):
104 Un membre de la haute direction ne peut pas accéder à ce rapport
106 self
._test_grp_haute_direction()
107 self
._test_acces_ko(self
.url
)
109 def _test_grp_service_utilisateurs(self
):
111 Un membre du groupe service utilisateur ne peut pas accéder à ce rapport
113 self
._test_grp_service_utilisateurs()
114 self
._test_acces_ko(self
.url
)
117 class RapportMasseSalarialeTest(RhTest
):
119 Test l'accès au rapport de masse salariale
121 url
= reverse('rhr_masse_salariale')
124 super(RapportMasseSalarialeTest
, self
).setUp()
126 def test_anonyme(self
):
128 Un anonyme ne peut pas accéder à ce rapport
131 self
._test_acces_ko(self
.url
)
133 def test_correspondant_rh(self
):
135 Un correspondant RH peut accéder à ce rapport
137 self
._test_correspondant_rh()
138 self
._test_acces_ok(self
.url
)
141 def test_administrateur_regional(self
):
143 Un administrateur peut accéder à ce rapport
145 self
._test_administrateur_regional()
146 self
._test_acces_ok(self
.url
)
149 def test_directeur_bureau(self
):
151 Un directeur de bureau peut accéder à ce rapport
153 self
._test_directeur_bureau()
154 self
._test_acces_ok(self
.url
)
159 Un DRH peut accéder à ce rapport
162 self
._test_acces_ok(self
.url
)
166 Un DRH (2ieme niveau) peut accéder à ce rapport
169 self
._test_acces_ok(self
.url
)
172 def _test_grp_accior(self
):
174 Un membre de l'ACCIOR ne peut pas accéder à ce rapport
176 self
._test_grp_accior()
177 self
._test_acces_ko(self
.url
)
179 def _test_grp_abf(self
):
181 Un membre de l'ABF ne peut pas accéder à ce rapport
183 self
._test_grp_abf(self
)
184 self
._test_acces_ko(self
.url
)
186 def _test_grp_haute_direction(self
):
188 Un membre de la haute direction ne peut pas accéder à ce rapport
190 self
._test_grp_haute_direction()
191 self
._test_acces_ko(self
.url
)
193 def _test_grp_service_utilisateurs(self
):
195 Un membre du groupe service utilisateur ne peut pas accéder à ce rapport
197 self
._test_grp_service_utilisateurs()
198 self
._test_acces_ko(self
.url
)
201 class RapportOrganigrammeTest(RhTest
):
203 Test l'accès aux organigrammes
206 super(RapportOrganigrammeTest
, self
).setUp()
207 self
.url1
= reverse('rho_employe', args
=[1, 'all'])
208 self
.url2
= reverse('rho_employe_sans_niveau', args
=[1])
209 self
.url3
= reverse('rho_service', args
=[1])
210 self
.url4
= reverse('rho_implantation', args
=[90])
211 self
.url5
= reverse('rho_region', args
=[1])
213 self
.url5
= reverse('admin:rh_implantationproxy_changelist')
214 self
.url6
= reverse('admin:rh_serviceproxy_changelist')
215 self
.url7
= reverse('admin:rh_regionproxy_changelist')
216 self
.url8
= reverse('admin:rh_employeproxy_changelist')
230 def test_anonyme(self
):
232 Un anonyme ne peut pas accéder à ce rapport
235 for url
in self
.urls
:
236 self
._test_acces_ko(url
)
238 def test_correspondant_rh(self
):
240 Un correspondant RH peut accéder à ce rapport
242 self
._test_correspondant_rh()
243 for url
in self
.urls
:
244 self
._test_acces_ok(url
)
246 def test_administrateur_regional(self
):
248 Un administrateur peut accéder à ce rapport
250 self
._test_administrateur_regional()
251 for url
in self
.urls
:
252 self
._test_acces_ok(url
)
254 def test_directeur_bureau(self
):
256 Un directeur de bureau peut accéder à ce rapport
258 self
._test_directeur_bureau()
259 for url
in self
.urls
:
260 self
._test_acces_ok(url
)
264 Un DRH peut accéder à ce rapport
267 for url
in self
.urls
:
268 self
._test_acces_ok(url
)
272 Un DRH (2ieme niveau) peut accéder à ce rapport
275 for url
in self
.urls
:
276 self
._test_acces_ok(url
)
278 def _test_grp_accior(self
):
280 Un membre de l'ACCIOR ne peut pas accéder à ce rapport
282 self
._test_grp_accior()
283 for url
in self
.urls
:
284 self
._test_acces_ko(url
)
286 def _test_grp_abf(self
):
288 Un membre de l'ABF ne peut pas accéder à ce rapport
290 self
._test_grp_abf(self
)
291 for url
in self
.urls
:
292 self
._test_acces_ko(url
)
294 def _test_grp_haute_direction(self
):
296 Un membre de la haute direction ne peut pas accéder à ce rapport
298 self
._test_grp_haute_direction()
299 for url
in self
.urls
:
300 self
._test_acces_ko(url
)
302 def _test_grp_service_utilisateurs(self
):
304 Un membre du groupe service utilisateur ne peut pas accéder à ce rapport
306 self
._test_grp_service_utilisateurs()
307 for url
in self
.urls
:
308 self
._test_acces_ko(url
)
310 class RapportMasseSalarialeCalculTest(RhTest
):
312 Test l'accès au rapport de masse salariale
314 url
= reverse('rhr_masse_salariale')
316 today
= datetime
.date
.today()
317 annee_moins_2
= datetime
.date(today
.year
- 2, 1, 1)
318 annee_moins_1
= datetime
.date(today
.year
- 1, 1, 1)
319 annee_plus_2
= datetime
.date(today
.year
+ 2, 1, 1)
320 annee_plus_1
= datetime
.date(today
.year
+ 1, 1, 1)
324 super(RapportMasseSalarialeCalculTest
, self
).setUp()
326 self
.type_salaire
= rh
.TypeRemuneration(nom
="salaire",
327 type_paiement
="Régulier",
328 nature_remuneration
="Indemnité",
330 self
.type_salaire
.save()
333 self
.dossier_cnf_ngaoundere
.date_debut
= self
.annee_moins_1
334 self
.dossier_cnf_ngaoundere
.date_fin
= self
.annee_plus_1
335 self
.dossier_cnf_ngaoundere
.save()
337 self
.dossier_cnf_bangui
.date_debut
= self
.annee_moins_1
338 self
.dossier_cnf_bangui
.date_fin
= self
.annee_plus_1
339 self
.dossier_cnf_bangui
.save()
341 self
.dossier_bap_bureau
.date_debut
= self
.annee_moins_1
342 self
.dossier_bap_bureau
.date_fin
= self
.annee_plus_1
343 self
.dossier_bap_bureau
.save()
345 self
.dossier_bap_ifi
.date_debut
= self
.annee_moins_1
346 self
.dossier_bap_ifi
.date_fin
= self
.annee_plus_1
347 self
.dossier_bap_ifi
.save()
350 self
.remun_cnf_ngaoundere
= rh
.Remuneration(
351 type=self
.type_salaire
,
352 date_debut
=self
.annee_moins_1
,
353 dossier
=self
.dossier_cnf_ngaoundere
,
355 devise
=self
.devise_cad
,
357 self
.remun_cnf_ngaoundere
.save()
359 self
.remun_cnf_bangui
= rh
.Remuneration(
360 type=self
.type_salaire
,
361 date_debut
=self
.annee_moins_1
,
362 dossier
=self
.dossier_cnf_bangui
,
364 devise
=self
.devise_cad
,
366 self
.remun_cnf_bangui
.save()
368 self
.remun_bap_bureau
= rh
.Remuneration(
369 type=self
.type_salaire
,
370 date_debut
=self
.annee_moins_1
,
371 dossier
=self
.dossier_bap_bureau
,
373 devise
=self
.devise_cad
,
375 self
.remun_bap_bureau
.save()
377 self
.remun_bap_ifi
= rh
.Remuneration(
378 type=self
.type_salaire
,
379 date_debut
=self
.annee_moins_1
,
380 dossier
=self
.dossier_bap_ifi
,
382 devise
=self
.devise_cad
,
384 self
.remun_bap_ifi
.save()
386 self
.taux_change_cad
= \
387 rh
.TauxChange(devise
=self
.devise_cad
,
389 annee
=self
.today
.year
)
390 self
.taux_change_cad
.save()
392 def test_taux_change_presence(self
):
394 Intégrité des rémunérations.
396 from project
.rh
.views
import rapports_masse_salariale
399 user_drh
= User
.objects
.get(email
="0@test.auf")
400 params
= {'annee': self
.today
.year
, }
406 def get_full_path(self
):
411 self
.taux_change_cad
.delete()
413 self
.assertRaises(rh
.RemunIntegrityException
,
414 rapports_masse_salariale
, request
)
417 def test_filtrage(self
):
419 Test la page avec des paramètres de filtrage.
422 self
._test_acces_ok(self
.url
)
424 params
= {'implantation': self
.IMPLANTATION_ACGL_CNF_NGAOUNDERE
.id,
425 'annee': self
.today
.year
,
427 resp
= self
.client
.get(self
.url
, params
)
428 self
.assertEqual(resp
.status_code
, 200)
429 self
.assertEqual(resp
.context
['form'].is_valid(), True, resp
.context
['form'].errors
)
430 self
.assertEqual(len(resp
.context
['lignes']), 1)
433 'region': self
.REGION_ACGL
.id,
434 'annee': self
.today
.year
,
436 resp
= self
.client
.get(self
.url
, params
)
437 self
.assertEqual(resp
.status_code
, 200)
438 self
.assertEqual(resp
.context
['form'].is_valid(), True)
439 self
.assertEqual(len(resp
.context
['lignes']), 2)
442 'annee': self
.today
.year
,
444 resp
= self
.client
.get(self
.url
, params
)
445 self
.assertEqual(resp
.status_code
, 200)
446 self
.assertEqual(resp
.context
['form'].is_valid(), True)
447 self
.assertEqual(len(resp
.context
['lignes']), 4)