1 # -*- coding: utf-8 -*-
3 from decimal
import Decimal
4 from django
.core
.urlresolvers
import reverse
5 from django
.contrib
.auth
.models
import User
6 from project
.dae
import models
as dae
7 from project
.dae
.test
.common
import DaeTest
8 from project
.dae
.forms
import PosteForm
9 from project
.dae
.workflow
import POSTE_ACTION_ENVOYER_ADMINISTRATEUR
, \
10 POSTE_ETAT_BROUILLON
, \
11 POSTE_ETAT_ADMINISTRATEUR
13 class PosteTest(DaeTest
):
15 Test l'ajout d'un poste
17 url
= reverse('admin:rh_poste_add')
20 super(PosteTest
, self
).setUp()
21 key
= "rh-%s" % self
.poste_cnf_ngaoundere
.id
22 self
.url
= reverse('poste', kwargs
={'key': key
})
25 'regime_travail_nb_heure_semaine' : '35',
26 'indemn_expat_min' : '110',
27 'indemn_expat_max' : '210',
28 'type_intervention': dae
.POSTE_ACTION
[0][0],
29 'service' : self
.srv_info
.id,
30 'implantation' : self
.IMPLANTATION_ACGL_CNF_NGAOUNDERE
.id,
31 'indemn_fct_min' : '120',
32 'indemn_fct_max' : '220',
33 'appel' : dae
.POSTE_APPEL_CHOICES
[0][0],
34 'regime_travail': '100',
35 'type_poste': self
.type_poste_tech
.id,
36 'responsable' : self
.poste_cnf_ngaoundere
.id,
37 'devise_min' : self
.devise_cad
.id,
38 'devise_max' : self
.devise_cad
.id,
39 'classement_min' : self
.classement_p_5_0
.id,
40 'classement_max' : self
.classement_p_5_10
.id,
41 'valeur_point_min' : self
.vp_cad_ngaoundere_2012
.id,
42 'valeur_point_max' : self
.vp_cad_ngaoundere_2012
.id,
43 'salaire_min' : '130',
44 'salaire_max' : '230',
47 'charges_patronales_min' : '160',
48 'charges_patronales_max' : '260',
51 'dae_financements-TOTAL_FORMS' : 0,
52 'dae_financements-INITIAL_FORMS': 0,
53 'dae_financements-MAX_NUM_FORMS': '',
54 'dae_pieces-TOTAL_FORMS' : 0,
55 'dae_pieces-INITIAL_FORMS': 0,
56 'dae_pieces-MAX_NUM_FORMS': '',
57 'dae_comparaisons_internes-TOTAL_FORMS' : 0,
58 'dae_comparaisons_internes-INITIAL_FORMS': 0,
59 'dae_comparaisons_internes-MAX_NUM_FORMS': '',
64 'regime_travail_nb_heure_semaine' : Decimal('35'),
65 'indemn_expat_min' : Decimal('110'),
66 'indemn_expat_max' : Decimal('210'),
67 'type_intervention': dae
.POSTE_ACTION
[0][0],
68 'service' : self
.srv_info
,
69 'implantation' : self
.IMPLANTATION_ACGL_CNF_NGAOUNDERE
,
70 'indemn_fct_min' : Decimal('120'),
71 'indemn_fct_max' : Decimal('220'),
72 'appel' : dae
.POSTE_APPEL_CHOICES
[0][0],
73 'regime_travail': Decimal('100'),
74 'type_poste': self
.type_poste_tech
,
75 'responsable' : self
.poste_cnf_ngaoundere
,
76 'devise_min' : self
.devise_cad
,
77 'devise_max' : self
.devise_cad
,
78 'classement_min' : self
.classement_p_5_0
,
79 'classement_max' : self
.classement_p_5_10
,
80 'valeur_point_min' : self
.vp_cad_ngaoundere_2012
,
81 'valeur_point_max' : self
.vp_cad_ngaoundere_2012
,
82 'salaire_min' : Decimal('130'),
83 'salaire_max' : Decimal('230'),
84 'autre_min' : Decimal('150'),
85 'autre_max' : Decimal('250'),
86 'charges_patronales_min' : Decimal('160'),
87 'charges_patronales_max' : Decimal('260'),
90 def test_poste_form(self
):
92 Test PosteForm sans instance
99 request
.user
= User
.objects
.get(email
='0@test.auf')
100 form
= PosteForm(self
.post
, request
=request
)
102 self
.assertTrue(form
.is_valid())
106 poste
= dae
.Poste
.objects
.get(nom
=self
.post
['nom'])
107 for k
, expect_value
in self
.expect
.items():
108 self
.assertEqual(getattr(poste
, k
), expect_value
)
110 def test_page_creation_poste(self
):
112 Teste la page de création d'un poste avec un compte DRH
115 resp
= self
.client
.post(self
.url
, self
.post
)
116 self
.assertEqual(resp
.status_code
, 302)
118 poste
= dae
.Poste
.objects
.get(nom
=self
.post
['nom'])
119 for k
, expect_value
in self
.expect
.items():
120 self
.assertEqual(getattr(poste
, k
), expect_value
)
122 def test_validation_poste(self
):
124 self
.client
.post(self
.url
, self
.post
)
126 p
= dae
.Poste
.objects
.get(nom
='nom')
127 self
.assertEqual(p
.etat
, POSTE_ETAT_BROUILLON
)
129 key
= "dae-%s" % p
.id
130 url
= reverse('poste_consulter', args
=(key
, ))
132 POSTE_ACTION_ENVOYER_ADMINISTRATEUR
: "Envoyer à l'adminstrateur",
133 'commentaire': 'xxx',
135 resp
= self
.client
.post(url
, post
)
136 self
.assertEqual(resp
.status_code
, 302)
138 p
= dae
.Poste
.objects
.get(nom
='nom')
139 self
.assertEqual(p
.etat
, POSTE_ETAT_ADMINISTRATEUR
)
141 commentaires
= p
.commentaires
.all()
142 self
.assertEqual(len(commentaires
), 1)
143 self
.assertEqual(commentaires
[0].texte
, post
['commentaire'])
144 self
.assertEqual(commentaires
[0].etat_initial
, POSTE_ETAT_BROUILLON
)
145 self
.assertEqual(commentaires
[0].etat_final
, POSTE_ETAT_ADMINISTRATEUR
)
147 def test_anonyme(self
):
149 Un anonyme ne peut pas créer d'poste
152 self
._test_acces_ko(self
.url
)
154 def test_correspondant_rh(self
):
156 Un correspodant RH peut ajouter un poste
158 self
._test_correspondant_rh()
159 self
._test_acces_ok(self
.url
)
161 def test_administrateur_regional(self
):
163 Un administrateur peut ajouter un poste
165 self
._test_administrateur_regional()
166 self
._test_acces_ok(self
.url
)
168 def test_directeur_bureau(self
):
170 Un directeur de bureau peut ajouter un poste
172 self
._test_directeur_bureau()
173 self
._test_acces_ok(self
.url
)
177 Un DRH peut ajouter un poste
180 self
._test_acces_ok(self
.url
)
184 Un DRH (2ieme niveau) peut ajouter un poste
187 self
._test_acces_ok(self
.url
)
189 def test_grp_accior(self
):
191 Un membre de l'ACCIOR ne peut pas ajouter un poste
193 self
._test_grp_accior()
194 self
._test_acces_ko(self
.url
)
196 def test_grp_abf(self
):
198 Un membre de l'ABF ne peut pas ajouter un poste
201 self
._test_acces_ko(self
.url
)
203 def test_grp_finance(self
):
205 Un membre de Finance ne peut pas ajouter un poste
207 self
._test_grp_finance()
208 self
._test_acces_ko(self
.url
)
210 def test_grp_haute_direction(self
):
212 Un membre de la haute direction ne peut pas ajouter un poste
214 self
._test_grp_haute_direction()
215 self
._test_acces_ko(self
.url
)
217 def test_grp_service_utilisateurs(self
):
219 Un membre du groupe service utilisateur ne peut pas ajouter un poste
221 self
._test_grp_service_utilisateurs()
222 self
._test_acces_ko(self
.url
)