#3774
[auf_rh_dae.git] / project / rh / test / rapport.py
CommitLineData
f96ec25c
OL
1# -*- coding: utf-8 -*-
2
c3d9c01c 3import datetime
f96ec25c 4from django.core.urlresolvers import reverse
a6ed66f9 5from django.contrib.auth.models import User
f96ec25c
OL
6from project.rh.test.common import RhTest
7from project.rh import models as rh
8
9class RapportContratTest(RhTest):
10 """
11 Test l'accès au rapport des contrats
12 """
13 url = reverse('rhr_contrats')
14
15 def setUp(self):
16 super(RapportContratTest, self).setUp()
17
18 cdi = rh.TypeContrat(nom="CDI")
19 cdi.save()
20
21 contrat = rh.Contrat(
22 type_contrat=cdi,
23 date_debut=self.today,
24 dossier=self.dossier_cnf_ngaoundere,)
25 contrat.save()
26
27 contrat = rh.Contrat(
28 type_contrat=cdi,
29 date_debut=self.today,
30 dossier=self.dossier_bap_ifi)
31 contrat.save()
32
f96ec25c
OL
33 def test_anonyme(self):
34 """
35 Un anonyme ne peut pas accéder à ce rapport
36 """
37 self._test_anonyme()
38 self._test_acces_ko(self.url)
39
40 def test_correspondant_rh(self):
41 """
35069664
OL
42 Un correspondant RH peut accéder à ce rapport limité aux dossiers de sa
43 région
f96ec25c
OL
44 """
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)
49
50 def test_administrateur_regional(self):
51 """
35069664
OL
52 Un administrateur peut accéder à ce rapport limité aux dossiers de sa
53 région
f96ec25c
OL
54 """
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)
59
60 def test_directeur_bureau(self):
61 """
35069664
OL
62 Un directeur de bureau peut accéder à ce rapport limité aux dossiers de
63 sa région
f96ec25c
OL
64 """
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)
69
70 def test_drh(self):
71 """
72 Un DRH peut accéder à ce rapport
73 """
74 self._test_drh()
75 self._test_acces_ok(self.url)
76 contrats = self.client.get(self.url).context['contrats']
77 self.assertEqual(len(contrats), 2)
78
79 def test_drh2(self):
80 """
81 Un DRH (2ieme niveau) peut accéder à ce rapport
82 """
83 self._test_drh2()
84 self._test_acces_ok(self.url)
85 contrats = self.client.get(self.url).context['contrats']
86 self.assertEqual(len(contrats), 2)
87
25f2c148 88 def test_grp_accior(self):
f96ec25c
OL
89 """
90 Un membre de l'ACCIOR ne peut pas accéder à ce rapport
91 """
92 self._test_grp_accior()
93 self._test_acces_ko(self.url)
94
25f2c148 95 def test_grp_abf(self):
f96ec25c
OL
96 """
97 Un membre de l'ABF ne peut pas accéder à ce rapport
98 """
25f2c148 99 self._test_grp_abf()
f96ec25c
OL
100 self._test_acces_ko(self.url)
101
25f2c148
OL
102 def test_grp_finance(self):
103 """
104 Un membre de Finance ne peut pas accéder à ce rapport
105 """
106 self._test_grp_finance()
107 self._test_acces_ko(self.url)
108
109 def test_grp_haute_direction(self):
f96ec25c
OL
110 """
111 Un membre de la haute direction ne peut pas accéder à ce rapport
112 """
113 self._test_grp_haute_direction()
114 self._test_acces_ko(self.url)
115
25f2c148 116 def test_grp_service_utilisateurs(self):
f96ec25c
OL
117 """
118 Un membre du groupe service utilisateur ne peut pas accéder à ce rapport
119 """
120 self._test_grp_service_utilisateurs()
121 self._test_acces_ko(self.url)
35069664
OL
122
123
124class RapportMasseSalarialeTest(RhTest):
125 """
126 Test l'accès au rapport de masse salariale
127 """
128 url = reverse('rhr_masse_salariale')
129
130 def setUp(self):
131 super(RapportMasseSalarialeTest, self).setUp()
132
133 def test_anonyme(self):
134 """
135 Un anonyme ne peut pas accéder à ce rapport
136 """
137 self._test_anonyme()
138 self._test_acces_ko(self.url)
139
140 def test_correspondant_rh(self):
141 """
142 Un correspondant RH peut accéder à ce rapport
143 """
144 self._test_correspondant_rh()
145 self._test_acces_ok(self.url)
f844c380 146 # todo TEST rapport
35069664
OL
147
148 def test_administrateur_regional(self):
149 """
150 Un administrateur peut accéder à ce rapport
151 """
152 self._test_administrateur_regional()
153 self._test_acces_ok(self.url)
f844c380 154 # todo TEST rapport
35069664
OL
155
156 def test_directeur_bureau(self):
157 """
158 Un directeur de bureau peut accéder à ce rapport
159 """
160 self._test_directeur_bureau()
161 self._test_acces_ok(self.url)
f844c380 162 # todo TEST rapport
35069664
OL
163
164 def test_drh(self):
165 """
166 Un DRH peut accéder à ce rapport
167 """
168 self._test_drh()
169 self._test_acces_ok(self.url)
170
171 def test_drh2(self):
172 """
173 Un DRH (2ieme niveau) peut accéder à ce rapport
174 """
175 self._test_drh2()
176 self._test_acces_ok(self.url)
177
25f2c148 178 def test_grp_accior(self):
35069664
OL
179 """
180 Un membre de l'ACCIOR ne peut pas accéder à ce rapport
181 """
182 self._test_grp_accior()
183 self._test_acces_ko(self.url)
184
25f2c148 185 def test_grp_abf(self):
35069664
OL
186 """
187 Un membre de l'ABF ne peut pas accéder à ce rapport
188 """
25f2c148
OL
189 self._test_grp_abf()
190 self._test_acces_ko(self.url)
191
192 def test_grp_finance(self):
193 """
194 Un membre de Finance ne peut pas accéder à ce rapport
195 """
196 self._test_grp_finance()
35069664
OL
197 self._test_acces_ko(self.url)
198
25f2c148 199 def test_grp_haute_direction(self):
35069664
OL
200 """
201 Un membre de la haute direction ne peut pas accéder à ce rapport
202 """
203 self._test_grp_haute_direction()
204 self._test_acces_ko(self.url)
205
25f2c148 206 def test_grp_service_utilisateurs(self):
35069664
OL
207 """
208 Un membre du groupe service utilisateur ne peut pas accéder à ce rapport
209 """
210 self._test_grp_service_utilisateurs()
211 self._test_acces_ko(self.url)
c5dab350
OL
212
213
214class RapportOrganigrammeTest(RhTest):
215 """
216 Test l'accès aux organigrammes
217 """
218 def setUp(self):
219 super(RapportOrganigrammeTest, self).setUp()
220 self.url1 = reverse('rho_employe', args=[1, 'all'])
221 self.url2 = reverse('rho_employe_sans_niveau', args=[1])
222 self.url3 = reverse('rho_service', args=[1])
223 self.url4 = reverse('rho_implantation', args=[90])
224 self.url5 = reverse('rho_region', args=[1])
225
226 self.url5 = reverse('admin:rh_implantationproxy_changelist')
227 self.url6 = reverse('admin:rh_serviceproxy_changelist')
228 self.url7 = reverse('admin:rh_regionproxy_changelist')
229 self.url8 = reverse('admin:rh_employeproxy_changelist')
230
231 self.urls = (
232 #self.url1,
233 #self.url2,
234 #self.url3,
235 #self.url4,
236 self.url5,
237 self.url6,
238 self.url7,
239 self.url8,
240 )
241
242
243 def test_anonyme(self):
244 """
245 Un anonyme ne peut pas accéder à ce rapport
246 """
247 self._test_anonyme()
248 for url in self.urls:
249 self._test_acces_ko(url)
250
251 def test_correspondant_rh(self):
252 """
253 Un correspondant RH peut accéder à ce rapport
254 """
255 self._test_correspondant_rh()
256 for url in self.urls:
257 self._test_acces_ok(url)
258
259 def test_administrateur_regional(self):
260 """
261 Un administrateur peut accéder à ce rapport
262 """
263 self._test_administrateur_regional()
264 for url in self.urls:
265 self._test_acces_ok(url)
266
267 def test_directeur_bureau(self):
268 """
269 Un directeur de bureau peut accéder à ce rapport
270 """
271 self._test_directeur_bureau()
272 for url in self.urls:
273 self._test_acces_ok(url)
274
275 def test_drh(self):
276 """
277 Un DRH peut accéder à ce rapport
278 """
279 self._test_drh()
280 for url in self.urls:
281 self._test_acces_ok(url)
282
283 def test_drh2(self):
284 """
285 Un DRH (2ieme niveau) peut accéder à ce rapport
286 """
287 self._test_drh2()
288 for url in self.urls:
289 self._test_acces_ok(url)
290
25f2c148 291 def test_grp_accior(self):
c5dab350
OL
292 """
293 Un membre de l'ACCIOR ne peut pas accéder à ce rapport
294 """
295 self._test_grp_accior()
296 for url in self.urls:
297 self._test_acces_ko(url)
298
25f2c148 299 def test_grp_abf(self):
c5dab350
OL
300 """
301 Un membre de l'ABF ne peut pas accéder à ce rapport
302 """
25f2c148
OL
303 self._test_grp_abf()
304 for url in self.urls:
305 self._test_acces_ko(url)
306
307 def test_grp_finance(self):
308 """
309 Un membre de Finance ne peut pas accéder à ce rapport
310 """
311 self._test_grp_abf()
c5dab350
OL
312 for url in self.urls:
313 self._test_acces_ko(url)
314
25f2c148 315 def test_grp_haute_direction(self):
c5dab350
OL
316 """
317 Un membre de la haute direction ne peut pas accéder à ce rapport
318 """
319 self._test_grp_haute_direction()
320 for url in self.urls:
321 self._test_acces_ko(url)
322
25f2c148 323 def test_grp_service_utilisateurs(self):
c5dab350
OL
324 """
325 Un membre du groupe service utilisateur ne peut pas accéder à ce rapport
326 """
327 self._test_grp_service_utilisateurs()
328 for url in self.urls:
329 self._test_acces_ko(url)
a6ed66f9
OL
330
331class RapportMasseSalarialeCalculTest(RhTest):
332 """
333 Test l'accès au rapport de masse salariale
334 """
335 url = reverse('rhr_masse_salariale')
336
337 today = datetime.date.today()
338 annee_moins_2 = datetime.date(today.year - 2, 1, 1)
339 annee_moins_1 = datetime.date(today.year - 1, 1, 1)
340 annee_plus_2 = datetime.date(today.year + 2, 1, 1)
341 annee_plus_1 = datetime.date(today.year + 1, 1, 1)
342
343
344 def setUp(self):
345 super(RapportMasseSalarialeCalculTest, self).setUp()
346
347 self.type_salaire = rh.TypeRemuneration(nom="salaire",
348 type_paiement="Régulier",
349 nature_remuneration="Indemnité",
350 )
351 self.type_salaire.save()
352
353 # 4 dossiers actifs
354 self.dossier_cnf_ngaoundere.date_debut = self.annee_moins_1
355 self.dossier_cnf_ngaoundere.date_fin = self.annee_plus_1
356 self.dossier_cnf_ngaoundere.save()
357
358 self.dossier_cnf_bangui.date_debut = self.annee_moins_1
359 self.dossier_cnf_bangui.date_fin = self.annee_plus_1
360 self.dossier_cnf_bangui.save()
361
362 self.dossier_bap_bureau.date_debut = self.annee_moins_1
363 self.dossier_bap_bureau.date_fin = self.annee_plus_1
364 self.dossier_bap_bureau.save()
365
366 self.dossier_bap_ifi.date_debut = self.annee_moins_1
367 self.dossier_bap_ifi.date_fin = self.annee_plus_1
368 self.dossier_bap_ifi.save()
369
370
371 self.remun_cnf_ngaoundere = rh.Remuneration(
372 type=self.type_salaire,
373 date_debut=self.annee_moins_1,
374 dossier=self.dossier_cnf_ngaoundere,
375 montant="111",
376 devise=self.devise_cad,
377 )
378 self.remun_cnf_ngaoundere.save()
379
380 self.remun_cnf_bangui = rh.Remuneration(
381 type=self.type_salaire,
382 date_debut=self.annee_moins_1,
383 dossier=self.dossier_cnf_bangui,
384 montant="222",
385 devise=self.devise_cad,
386 )
387 self.remun_cnf_bangui.save()
388
389 self.remun_bap_bureau = rh.Remuneration(
390 type=self.type_salaire,
391 date_debut=self.annee_moins_1,
392 dossier=self.dossier_bap_bureau,
393 montant="333",
394 devise=self.devise_cad,
395 )
396 self.remun_bap_bureau.save()
397
398 self.remun_bap_ifi = rh.Remuneration(
399 type=self.type_salaire,
400 date_debut=self.annee_moins_1,
401 dossier=self.dossier_bap_ifi,
402 montant="444",
403 devise=self.devise_cad,
404 )
405 self.remun_bap_ifi.save()
406
407 self.taux_change_cad = \
408 rh.TauxChange(devise=self.devise_cad,
409 taux=0.5,
410 annee=self.today.year)
411 self.taux_change_cad.save()
412
413 def test_taux_change_presence(self):
414 """
415 Intégrité des rémunérations.
416 """
417 from project.rh.views import rapports_masse_salariale
418
419 self._test_drh()
420 user_drh = User.objects.get(email="0@test.auf")
421 params = {'annee': self.today.year, }
422
423 class Request:
424 GET = params
425 user = user_drh
426
427 def get_full_path(self):
428 return
429
430 request = Request()
431
432 self.taux_change_cad.delete()
433
434 self.assertRaises(rh.RemunIntegrityException,
435 rapports_masse_salariale, request)
436
437
438 def test_filtrage(self):
439 """
440 Test la page avec des paramètres de filtrage.
441 """
442 self._test_drh()
443 self._test_acces_ok(self.url)
444
445 params = {'implantation': self.IMPLANTATION_ACGL_CNF_NGAOUNDERE.id,
446 'annee': self.today.year,
447 }
448 resp = self.client.get(self.url, params)
449 self.assertEqual(resp.status_code, 200)
450 self.assertEqual(resp.context['form'].is_valid(), True, resp.context['form'].errors)
451 self.assertEqual(len(resp.context['lignes']), 1)
452
453 params = {
654b0adf 454 'zone_administrative': self.ZA_ACGL.code,
a6ed66f9
OL
455 'annee': self.today.year,
456 }
457 resp = self.client.get(self.url, params)
458 self.assertEqual(resp.status_code, 200)
459 self.assertEqual(resp.context['form'].is_valid(), True)
460 self.assertEqual(len(resp.context['lignes']), 2)
461
462 params = {
463 'annee': self.today.year,
464 }
465 resp = self.client.get(self.url, params)
466 self.assertEqual(resp.status_code, 200)
467 self.assertEqual(resp.context['form'].is_valid(), True)
468 self.assertEqual(len(resp.context['lignes']), 4)