Commit | Line | Data |
---|---|---|
93817ef3 OL |
1 | # -*- coding: utf-8 -*- |
2 | ||
5ac79652 | 3 | from decimal import Decimal |
93817ef3 | 4 | from django.core.urlresolvers import reverse |
5ac79652 OL |
5 | from django.contrib.auth.models import User |
6 | from project.dae import models as dae | |
93817ef3 | 7 | from project.dae.test.common import DaeTest |
5ac79652 | 8 | from project.dae.forms import PosteForm |
8ae0583f OL |
9 | from project.dae.workflow import POSTE_ACTION_ENVOYER_ADMINISTRATEUR, \ |
10 | POSTE_ETAT_BROUILLON, \ | |
11 | POSTE_ETAT_ADMINISTRATEUR | |
5ac79652 | 12 | |
8ae0583f | 13 | class 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 = { | |
25b374b3 | 132 | POSTE_ACTION_ENVOYER_ADMINISTRATEUR: "Envoyer à l'administrateur", |
8ae0583f OL |
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 |