test rapport masse salariale
[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
88 def _test_grp_accior(self):
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
95 def _test_grp_abf(self):
96 """
97 Un membre de l'ABF ne peut pas accéder à ce rapport
98 """
99 self._test_grp_abf(self)
100 self._test_acces_ko(self.url)
101
102 def _test_grp_haute_direction(self):
103 """
104 Un membre de la haute direction ne peut pas accéder à ce rapport
105 """
106 self._test_grp_haute_direction()
107 self._test_acces_ko(self.url)
108
109 def _test_grp_service_utilisateurs(self):
110 """
111 Un membre du groupe service utilisateur ne peut pas accéder à ce rapport
112 """
113 self._test_grp_service_utilisateurs()
114 self._test_acces_ko(self.url)
35069664
OL
115
116
117class RapportMasseSalarialeTest(RhTest):
118 """
119 Test l'accès au rapport de masse salariale
120 """
121 url = reverse('rhr_masse_salariale')
122
123 def setUp(self):
124 super(RapportMasseSalarialeTest, self).setUp()
125
126 def test_anonyme(self):
127 """
128 Un anonyme ne peut pas accéder à ce rapport
129 """
130 self._test_anonyme()
131 self._test_acces_ko(self.url)
132
133 def test_correspondant_rh(self):
134 """
135 Un correspondant RH peut accéder à ce rapport
136 """
137 self._test_correspondant_rh()
138 self._test_acces_ok(self.url)
f844c380 139 # todo TEST rapport
35069664
OL
140
141 def test_administrateur_regional(self):
142 """
143 Un administrateur peut accéder à ce rapport
144 """
145 self._test_administrateur_regional()
146 self._test_acces_ok(self.url)
f844c380 147 # todo TEST rapport
35069664
OL
148
149 def test_directeur_bureau(self):
150 """
151 Un directeur de bureau peut accéder à ce rapport
152 """
153 self._test_directeur_bureau()
154 self._test_acces_ok(self.url)
f844c380 155 # todo TEST rapport
35069664
OL
156
157 def test_drh(self):
158 """
159 Un DRH peut accéder à ce rapport
160 """
161 self._test_drh()
162 self._test_acces_ok(self.url)
163
164 def test_drh2(self):
165 """
166 Un DRH (2ieme niveau) peut accéder à ce rapport
167 """
168 self._test_drh2()
169 self._test_acces_ok(self.url)
f844c380 170 # todo TEST rapport
35069664
OL
171
172 def _test_grp_accior(self):
173 """
174 Un membre de l'ACCIOR ne peut pas accéder à ce rapport
175 """
176 self._test_grp_accior()
177 self._test_acces_ko(self.url)
178
179 def _test_grp_abf(self):
180 """
181 Un membre de l'ABF ne peut pas accéder à ce rapport
182 """
183 self._test_grp_abf(self)
184 self._test_acces_ko(self.url)
185
186 def _test_grp_haute_direction(self):
187 """
188 Un membre de la haute direction ne peut pas accéder à ce rapport
189 """
190 self._test_grp_haute_direction()
191 self._test_acces_ko(self.url)
192
193 def _test_grp_service_utilisateurs(self):
194 """
195 Un membre du groupe service utilisateur ne peut pas accéder à ce rapport
196 """
197 self._test_grp_service_utilisateurs()
198 self._test_acces_ko(self.url)
c5dab350
OL
199
200
201class RapportOrganigrammeTest(RhTest):
202 """
203 Test l'accès aux organigrammes
204 """
205 def setUp(self):
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])
212
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')
217
218 self.urls = (
219 #self.url1,
220 #self.url2,
221 #self.url3,
222 #self.url4,
223 self.url5,
224 self.url6,
225 self.url7,
226 self.url8,
227 )
228
229
230 def test_anonyme(self):
231 """
232 Un anonyme ne peut pas accéder à ce rapport
233 """
234 self._test_anonyme()
235 for url in self.urls:
236 self._test_acces_ko(url)
237
238 def test_correspondant_rh(self):
239 """
240 Un correspondant RH peut accéder à ce rapport
241 """
242 self._test_correspondant_rh()
243 for url in self.urls:
244 self._test_acces_ok(url)
245
246 def test_administrateur_regional(self):
247 """
248 Un administrateur peut accéder à ce rapport
249 """
250 self._test_administrateur_regional()
251 for url in self.urls:
252 self._test_acces_ok(url)
253
254 def test_directeur_bureau(self):
255 """
256 Un directeur de bureau peut accéder à ce rapport
257 """
258 self._test_directeur_bureau()
259 for url in self.urls:
260 self._test_acces_ok(url)
261
262 def test_drh(self):
263 """
264 Un DRH peut accéder à ce rapport
265 """
266 self._test_drh()
267 for url in self.urls:
268 self._test_acces_ok(url)
269
270 def test_drh2(self):
271 """
272 Un DRH (2ieme niveau) peut accéder à ce rapport
273 """
274 self._test_drh2()
275 for url in self.urls:
276 self._test_acces_ok(url)
277
278 def _test_grp_accior(self):
279 """
280 Un membre de l'ACCIOR ne peut pas accéder à ce rapport
281 """
282 self._test_grp_accior()
283 for url in self.urls:
284 self._test_acces_ko(url)
285
286 def _test_grp_abf(self):
287 """
288 Un membre de l'ABF ne peut pas accéder à ce rapport
289 """
290 self._test_grp_abf(self)
291 for url in self.urls:
292 self._test_acces_ko(url)
293
294 def _test_grp_haute_direction(self):
295 """
296 Un membre de la haute direction ne peut pas accéder à ce rapport
297 """
298 self._test_grp_haute_direction()
299 for url in self.urls:
300 self._test_acces_ko(url)
301
302 def _test_grp_service_utilisateurs(self):
303 """
304 Un membre du groupe service utilisateur ne peut pas accéder à ce rapport
305 """
306 self._test_grp_service_utilisateurs()
307 for url in self.urls:
308 self._test_acces_ko(url)
a6ed66f9
OL
309
310class RapportMasseSalarialeCalculTest(RhTest):
311 """
312 Test l'accès au rapport de masse salariale
313 """
314 url = reverse('rhr_masse_salariale')
315
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)
321
322
323 def setUp(self):
324 super(RapportMasseSalarialeCalculTest, self).setUp()
325
326 self.type_salaire = rh.TypeRemuneration(nom="salaire",
327 type_paiement="Régulier",
328 nature_remuneration="Indemnité",
329 )
330 self.type_salaire.save()
331
332 # 4 dossiers actifs
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()
336
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()
340
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()
344
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()
348
349
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,
354 montant="111",
355 devise=self.devise_cad,
356 )
357 self.remun_cnf_ngaoundere.save()
358
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,
363 montant="222",
364 devise=self.devise_cad,
365 )
366 self.remun_cnf_bangui.save()
367
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,
372 montant="333",
373 devise=self.devise_cad,
374 )
375 self.remun_bap_bureau.save()
376
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,
381 montant="444",
382 devise=self.devise_cad,
383 )
384 self.remun_bap_ifi.save()
385
386 self.taux_change_cad = \
387 rh.TauxChange(devise=self.devise_cad,
388 taux=0.5,
389 annee=self.today.year)
390 self.taux_change_cad.save()
391
392 def test_taux_change_presence(self):
393 """
394 Intégrité des rémunérations.
395 """
396 from project.rh.views import rapports_masse_salariale
397
398 self._test_drh()
399 user_drh = User.objects.get(email="0@test.auf")
400 params = {'annee': self.today.year, }
401
402 class Request:
403 GET = params
404 user = user_drh
405
406 def get_full_path(self):
407 return
408
409 request = Request()
410
411 self.taux_change_cad.delete()
412
413 self.assertRaises(rh.RemunIntegrityException,
414 rapports_masse_salariale, request)
415
416
417 def test_filtrage(self):
418 """
419 Test la page avec des paramètres de filtrage.
420 """
421 self._test_drh()
422 self._test_acces_ok(self.url)
423
424 params = {'implantation': self.IMPLANTATION_ACGL_CNF_NGAOUNDERE.id,
425 'annee': self.today.year,
426 }
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)
431
432 params = {
433 'region': self.REGION_ACGL.id,
434 'annee': self.today.year,
435 }
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)
440
441 params = {
442 'annee': self.today.year,
443 }
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)