#3774
[auf_rh_dae.git] / project / dae / test / poste.py
CommitLineData
93817ef3
OL
1# -*- coding: utf-8 -*-
2
5ac79652 3from decimal import Decimal
93817ef3 4from django.core.urlresolvers import reverse
5ac79652
OL
5from django.contrib.auth.models import User
6from project.dae import models as dae
93817ef3 7from project.dae.test.common import DaeTest
5ac79652 8from project.dae.forms import PosteForm
8ae0583f
OL
9from project.dae.workflow import POSTE_ACTION_ENVOYER_ADMINISTRATEUR, \
10 POSTE_ETAT_BROUILLON, \
11 POSTE_ETAT_ADMINISTRATEUR
5ac79652 12
8ae0583f 13class PosteTest(DaeTest):
5ac79652 14 """
d9677fba 15 Test l'ajout d'un poste
5ac79652 16 """
d9677fba 17 url = reverse('admin:rh_poste_add')
5ac79652 18
d9677fba 19 def setUp(self):
8ae0583f 20 super(PosteTest, self).setUp()
d9677fba
OL
21 key = "rh-%s" % self.poste_cnf_ngaoundere.id
22 self.url = reverse('poste', kwargs={'key': key})
23 self.post = {
5ac79652
OL
24 'nom' : 'nom',
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',
45 'autre_min' : '150',
46 'autre_max' : '250',
47 'charges_patronales_min' : '160',
48 'charges_patronales_max' : '260',
d9677fba
OL
49
50 # pour tester la vue
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': '',
60
5ac79652 61 }
d9677fba 62 self.expect = {
5ac79652
OL
63 'nom' : 'nom',
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'),
88 }
d9677fba
OL
89
90 def test_poste_form(self):
91 """
92 Test PosteForm sans instance
93 """
94
95 class Request:
96 user = None
97
98 request = Request()
99 request.user = User.objects.get(email='0@test.auf')
100 form = PosteForm(self.post, request=request)
5ac79652
OL
101 form.is_valid()
102 self.assertTrue(form.is_valid())
103
104 form.save()
105
d9677fba
OL
106 poste = dae.Poste.objects.get(nom=self.post['nom'])
107 for k, expect_value in self.expect.items():
5ac79652 108 self.assertEqual(getattr(poste, k), expect_value)
93817ef3 109
d9677fba
OL
110 def test_page_creation_poste(self):
111 """
112 Teste la page de création d'un poste avec un compte DRH
113 """
114 self._test_drh()
115 resp = self.client.post(self.url, self.post)
116 self.assertEqual(resp.status_code, 302)
117
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)
93817ef3 121
8ae0583f
OL
122 def test_validation_poste(self):
123 self._test_drh()
124 self.client.post(self.url, self.post)
125
126 p = dae.Poste.objects.get(nom='nom')
127 self.assertEqual(p.etat, POSTE_ETAT_BROUILLON)
128
129 key = "dae-%s" % p.id
130 url = reverse('poste_consulter', args=(key, ))
131 post = {
132 POSTE_ACTION_ENVOYER_ADMINISTRATEUR: "Envoyer à l'adminstrateur",
133 'commentaire': 'xxx',
134 }
135 resp = self.client.post(url, post)
136 self.assertEqual(resp.status_code, 302)
137
138 p = dae.Poste.objects.get(nom='nom')
139 self.assertEqual(p.etat, POSTE_ETAT_ADMINISTRATEUR)
140
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)
93817ef3
OL
146
147 def test_anonyme(self):
148 """
149 Un anonyme ne peut pas créer d'poste
150 """
151 self._test_anonyme()
152 self._test_acces_ko(self.url)
153
154 def test_correspondant_rh(self):
155 """
156 Un correspodant RH peut ajouter un poste
157 """
158 self._test_correspondant_rh()
159 self._test_acces_ok(self.url)
160
161 def test_administrateur_regional(self):
162 """
163 Un administrateur peut ajouter un poste
164 """
165 self._test_administrateur_regional()
166 self._test_acces_ok(self.url)
167
168 def test_directeur_bureau(self):
169 """
170 Un directeur de bureau peut ajouter un poste
171 """
172 self._test_directeur_bureau()
173 self._test_acces_ok(self.url)
174
175 def test_drh(self):
176 """
177 Un DRH peut ajouter un poste
178 """
179 self._test_drh()
180 self._test_acces_ok(self.url)
181
182 def test_drh2(self):
183 """
184 Un DRH (2ieme niveau) peut ajouter un poste
185 """
186 self._test_drh2()
187 self._test_acces_ok(self.url)
188
25f2c148 189 def test_grp_accior(self):
93817ef3
OL
190 """
191 Un membre de l'ACCIOR ne peut pas ajouter un poste
192 """
193 self._test_grp_accior()
194 self._test_acces_ko(self.url)
195
25f2c148 196 def test_grp_abf(self):
93817ef3
OL
197 """
198 Un membre de l'ABF ne peut pas ajouter un poste
199 """
25f2c148 200 self._test_grp_abf()
93817ef3
OL
201 self._test_acces_ko(self.url)
202
25f2c148
OL
203 def test_grp_finance(self):
204 """
205 Un membre de Finance ne peut pas ajouter un poste
206 """
207 self._test_grp_finance()
208 self._test_acces_ko(self.url)
209
210 def test_grp_haute_direction(self):
93817ef3
OL
211 """
212 Un membre de la haute direction ne peut pas ajouter un poste
213 """
214 self._test_grp_haute_direction()
215 self._test_acces_ko(self.url)
216
25f2c148 217 def test_grp_service_utilisateurs(self):
93817ef3
OL
218 """
219 Un membre du groupe service utilisateur ne peut pas ajouter un poste
220 """
221 self._test_grp_service_utilisateurs()
222 self._test_acces_ko(self.url)
223
224