1 |
<?php |
2 |
/** |
3 |
* |
4 |
* |
5 |
* @package openfoncier |
6 |
* @version SVN : $Id: testCommissions.php 5673 2015-12-21 19:35:24Z nmeucci $ |
7 |
*/ |
8 |
|
9 |
// |
10 |
require_once "base.php"; |
11 |
|
12 |
/** |
13 |
* |
14 |
*/ |
15 |
class Commissions extends Base2TestCase { |
16 |
|
17 |
/** |
18 |
* Fonction lancée en debut de chaque test |
19 |
*/ |
20 |
public function setUp() { |
21 |
parent::setUp(); |
22 |
echo ' = '.get_class().'.'.str_replace('test_', '', $this->getName())."\r\n"; |
23 |
} |
24 |
|
25 |
public function onNotSuccessfulTest(Exception $e){ |
26 |
echo 'Line '.$e->getLine().' : '.$e->getMessage()."\r\n"; |
27 |
parent::onNotSuccessfulTest($e); |
28 |
} |
29 |
|
30 |
/* |
31 |
* Ajout d'un type de commission par l'administrateur fonctionnel |
32 |
* */ |
33 |
public function test_01_ajout_type_commission_administrateur_fonctionnel() { |
34 |
|
35 |
// On se connecte en tant que "admin" |
36 |
$this->login("admin", "admin"); |
37 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
38 |
$this->verifyNoErrors(); |
39 |
// On clique sur le menu de paramétrage |
40 |
$this->byLinkText("Paramétrage")->click(); |
41 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
42 |
$this->verifyNoErrors(); |
43 |
// On clique sur le menu du type des commissions |
44 |
$this->byLinkText("Type De Commission")->click(); |
45 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
46 |
$this->verifyNoErrors(); |
47 |
// On clique sur le bouton d'ajout de type de commission |
48 |
$this->byClassName("add-16")->click(); |
49 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
50 |
$this->verifyNoErrors(); |
51 |
// On ajoute les informations du type de commission |
52 |
$this->byId("code")->value("TTDC"); |
53 |
$this->byId("libelle")->value("Test type de commission"); |
54 |
$this->byId("lieu_salle")->value("2a"); |
55 |
$this->byId("listes_de_diffusion")->value("[email protected]"); |
56 |
$this->byId("participants")->value("Atreal"); |
57 |
$this->byId("corps_du_courriel")->value("Test du type de commission"); |
58 |
// On ajoute le type de commission |
59 |
$this->byXpath("//input[@value='Ajouter']")->click(); |
60 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
61 |
$this->verifyNoErrors(); |
62 |
// On retourne sur le tableau listant les types de commission |
63 |
$this->byCssSelector("a.retour")->click(); |
64 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
65 |
$this->verifyNoErrors(); |
66 |
// On vérifie que le type de commission nouvellement créé avec les informations |
67 |
// ci-dessus existe bien |
68 |
$this->assertEquals($this->byCssSelector(".even td:nth-child(2)")->text(), "2"); |
69 |
$this->assertEquals($this->byCssSelector(".even td:nth-child(3)")->text(), "TTDC"); |
70 |
$this->assertEquals($this->byCssSelector(".even td:nth-child(4)")->text(), "Test type de commission"); |
71 |
$this->assertEquals($this->byCssSelector(".even td:nth-child(7)")->text(), "2a"); |
72 |
//On se déconnecte de l'application |
73 |
$this->logout(); |
74 |
} |
75 |
|
76 |
/* |
77 |
* Ajout d'une demande de passage en commission dans le contexte d'un dossier |
78 |
* d'instruction par l'instructeur |
79 |
* */ |
80 |
public function test_02_ajout_demande_de_passage_instructeur() { |
81 |
|
82 |
// On se connecte en tant que "instr" |
83 |
$this->login("instr", "instr"); |
84 |
|
85 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
86 |
$this->verifyNoErrors(); |
87 |
// On clique sur le lien "Mes encours" dans le menu |
88 |
$this->byLinkText("Mes Encours")->click(); |
89 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
90 |
$this->verifyNoErrors(); |
91 |
// On clique sur le lien "AZ0130551200001P0" dans le tableau |
92 |
$this->byLinkText("AZ 013055 12 00001P0")->click(); |
93 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
94 |
$this->verifyNoErrors(); |
95 |
// On clique sur l'onglet "Commission(s)" |
96 |
$this->byId("dossier_commission")->click(); |
97 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
98 |
$this->verifyNoErrors(); |
99 |
// On clique sur le lien "Ajouter" dans le tableau |
100 |
$this->byClassName("add-16")->click(); |
101 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
102 |
$this->verifyNoErrors(); |
103 |
// On vérifie que la date du jour est pré-remplie dans le champs "date souhaitée" |
104 |
try { |
105 |
$this->assertEquals(date("d/m/Y"), $this->byId("date_souhaitee")->attribute('value')); |
106 |
} catch (PHPUnit_Framework_AssertionFailedError $e) { |
107 |
array_push($this->verificationErrors, $e->toString()); |
108 |
} |
109 |
// On clique sur le bouton "Ajouter" du formulaire sans sélectionner de type de commission |
110 |
$this->byXpath("//input[@value='Ajouter']")->click(); |
111 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
112 |
$this->verifyNoErrors(); |
113 |
// On vérifie que le message d'erreur est présent |
114 |
$this->assertContains("SAISIE NON ENREGISTRÉE", $this->byCssSelector("#sousform-dossier_commission .message .text")->text()); |
115 |
// On sélectionne le type de commission "Commission Technique d'Urbanisme" |
116 |
$this->select($this->byId("commission_type"))->selectOptionByLabel("Test type de commission"); |
117 |
// |
118 |
$this->byId("motivation")->value("blablablabla"); |
119 |
// On clique sur le bouton "Ajouter" du formulaire avec toutes les informations saisies |
120 |
$this->byXpath("//input[@value='Ajouter']")->click(); |
121 |
sleep(2); |
122 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
123 |
$this->verifyNoErrors(); |
124 |
// O vérifie que le message de validation est présent |
125 |
$this->assertContains("Vos modifications ont bien été enregistrées.", $this->byCssSelector("#sousform-dossier_commission .message .text")->text()); |
126 |
// On clique sur le bouton retour |
127 |
$this->byCssSelector("#sousform-dossier_commission a.retour")->click(); |
128 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
129 |
$this->verifyNoErrors(); |
130 |
// On vérifie que nous avons bien 1 consultation affichée |
131 |
$this->assertContains("1 - 2 enregistrement(s) sur 2", $this->byCssSelector("#sousform-dossier_commission .pagination-text")->text()); |
132 |
// On se déconnecte |
133 |
$this->logout(); |
134 |
} |
135 |
|
136 |
/* |
137 |
* Création d'une nouvelle commission par la cellule suivi |
138 |
* */ |
139 |
public function test_03_creation_commission_cellule_suivi() { |
140 |
|
141 |
// On se connecte en tant que "suivi" |
142 |
$this->login("suivi", "suivi"); |
143 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
144 |
$this->verifyNoErrors(); |
145 |
// On clique sur l'entrée de menu "Commissions -> Gestion" |
146 |
$this->byLinkText("Gestion")->click(); |
147 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
148 |
$this->verifyNoErrors(); |
149 |
// On clique sur le bouton d'ajout de commission |
150 |
$this->byClassName("add-16")->click(); |
151 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
152 |
$this->verifyNoErrors(); |
153 |
// On saisie une nouvelle commission |
154 |
// On vérifie que la date du jour est pré-remplie dans le champs "date souhaitée" |
155 |
try { |
156 |
$this->assertEquals(date("d/m/Y"), $this->byId("date_commission")->attribute('value')); |
157 |
} catch (PHPUnit_Framework_AssertionFailedError $e) { |
158 |
array_push($this->verificationErrors, $e->toString()); |
159 |
} |
160 |
// On clique sur le bouton "Ajouter" du formulaire sans sélectionner de type de commission |
161 |
$this->byXpath("//input[@value='Ajouter']")->click(); |
162 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
163 |
$this->verifyNoErrors(); |
164 |
// On vérifie que le message d'erreur est présent |
165 |
$this->assertContains("SAISIE NON ENREGISTRÉE", $this->byCssSelector(".message .text")->text()); |
166 |
//On choisit un type de commission |
167 |
$this->select($this->byId("commission_type"))->selectOptionByLabel("Test type de commission"); |
168 |
/// On vérifie que les informations du type de commision sélectionnées sont bien |
169 |
// dans les champs |
170 |
$this->assertEquals($this->byId("libelle")->attribute('value'), "Test type de commission"); |
171 |
$this->assertEquals($this->byId("lieu_salle")->attribute('value'), "2a"); |
172 |
// Aucune adresse n'avait été saisie dans le champ concernant l'adresse |
173 |
$this->assertEquals($this->byId("lieu_adresse_ligne1")->attribute('value'), ""); |
174 |
// Saisie d'une adresse |
175 |
$this->byId("lieu_adresse_ligne1")->value("1 boulevard de la république"); |
176 |
$this->byId("heure_commission")->value("15:00"); |
177 |
$this->assertEquals($this->byId("listes_de_diffusion")->attribute('value'), "[email protected]"); |
178 |
$this->assertEquals($this->byId("participants")->attribute('value'), "Atreal"); |
179 |
// On ajoute la commission |
180 |
$this->byXpath("//input[@value='Ajouter']")->click(); |
181 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
182 |
$this->verifyNoErrors(); |
183 |
// On retourne sur le tableau listant les commissions |
184 |
$this->byCssSelector("a.retour")->click(); |
185 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
186 |
$this->verifyNoErrors(); |
187 |
// On vérifie que la commission nouvellement avec les informations ci-dessus |
188 |
// existe bien |
189 |
$this->assertEquals($this->byCssSelector(".odd td:nth-child(2)")->text(), "2"); |
190 |
// Champ calculé |
191 |
$this->assertEquals($this->byCssSelector(".odd td:nth-child(3)")->text(), "TTDC".date("Ymd")); |
192 |
$this->assertEquals($this->byCssSelector(".odd td:nth-child(4)")->text(), "Test type de commission"); |
193 |
$this->assertEquals($this->byCssSelector(".odd td:nth-child(5)")->text(), "Test type de commission"); |
194 |
$this->assertEquals($this->byCssSelector(".odd td:nth-child(6)")->text(), date("d/m/Y")); |
195 |
$this->assertEquals($this->byCssSelector(".odd td:nth-child(7)")->text(), "15:00"); |
196 |
$this->assertEquals($this->byCssSelector(".odd td:nth-child(8)")->text(), "1 boulevard de la république"); |
197 |
$this->assertEquals($this->byCssSelector(".odd td:nth-child(9)")->text(), ""); |
198 |
$this->assertEquals($this->byCssSelector(".odd td:nth-child(10)")->text(), "2a"); |
199 |
// On se déconnecte de l'application |
200 |
$this->logout(); |
201 |
} |
202 |
|
203 |
/* |
204 |
* Plannification des dossiers et impression de l'ordre du jour par la cellule suivi |
205 |
* |
206 |
* */ |
207 |
public function test_04_preparation_commission_cellule_suivi(){ |
208 |
|
209 |
// On se connecte en tant que "suivi" |
210 |
$this->login("suivi", "suivi"); |
211 |
// On clique sur le menu de paramétrage du type des commissions |
212 |
$this->byLinkText("Gestion")->click(); |
213 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
214 |
$this->verifyNoErrors(); |
215 |
// Clique sur la commission |
216 |
$this->byLinkText("TTDC".date("Ymd"))->click(); |
217 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
218 |
$this->verifyNoErrors(); |
219 |
// On clique sur l'onglet "Plannifier/retirer des dossiers" |
220 |
$this->byId("commission_dossiers_plannifier_retirer")->click(); |
221 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
222 |
$this->verifyNoErrors(); |
223 |
// On supprime un dossier par l'onglet planifier/retirer |
224 |
$this->byCssSelector("#tabs-2 .odd td input[type='checkbox']")->click(); |
225 |
//On teste que le checkbox est selectionné |
226 |
$this->assertTrue($this->byCssSelector("#tabs-2 .odd td input[type='checkbox']")->selected()); |
227 |
// On valide le formulaire |
228 |
$this->byXpath("//input[@name='validation']")->click(); |
229 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
230 |
$this->verifyNoErrors(); |
231 |
// On vérifie que le formulaire s'est bien validé |
232 |
$this->assertContains("Mise à jour réalisée avec succès pour le(s) dossier(s) : AZ 013055 12 00001P0.", |
233 |
$this->byCssSelector("#tabs-2 .message .text")->text()); |
234 |
// On clique sur l'onglet "Plannifier/retirer des dossiers" |
235 |
$this->byId("dossier_planifie")->click();sleep(2); |
236 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
237 |
$this->verifyNoErrors(); |
238 |
//On verifie que le dossier a bien été supprimé |
239 |
$this->assertContains("1 - 1 enregistrement(s) sur 1", |
240 |
$this->byCssSelector("#sousform-dossier_commission .pagination-text")->text()); |
241 |
// On clique sur l'onglet "Plannifier un dossier spécifique" |
242 |
$this->byId("commission_dossiers_plannifier_numero")->click(); sleep(2); |
243 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
244 |
$this->verifyNoErrors(); |
245 |
// On saisie le numéro du dossier d'instruction |
246 |
$this->byId("dossier")->value("CU0130551200001P0"); |
247 |
// On clique sur le bouton "Valider" du formulaire |
248 |
$this->byXpath("//input[@value='Valider']")->click(); |
249 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
250 |
$this->verifyNoErrors(); |
251 |
// On vérifie que le formulaire s'est bien validé |
252 |
$this->assertContains("Dossier ajouté avec succès.", |
253 |
$this->byCssSelector("#tabs-3 .message .text")->text()); |
254 |
// On clique sur l'onglet "Les dossiers planifiés" |
255 |
$this->byId("dossier_planifie")->click(); sleep(2); |
256 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
257 |
$this->verifyNoErrors(); |
258 |
//On verifie que le dossier a bien été ajouté |
259 |
$this->assertContains("1 - 2 enregistrement(s) sur 2", |
260 |
$this->byCssSelector("#sousform-dossier_commission .pagination-text")->text()); |
261 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
262 |
$this->verifyNoErrors(); |
263 |
// On clique sur l'onglet "Plannifier un dossier spécifique" |
264 |
$this->byId("commission_dossiers_plannifier_numero")->click();sleep(2); |
265 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
266 |
$this->verifyNoErrors(); |
267 |
// On saisie le même numéro du dossier d'instruction |
268 |
$this->byId("dossier")->value("CU0130551200001P0"); |
269 |
// On clique sur le bouton "Valider" du formulaire |
270 |
$this->byXpath("//input[@value='Valider']")->click(); |
271 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
272 |
$this->verifyNoErrors(); |
273 |
// On vérifie qu'il y a un message d'erreur |
274 |
$this->assertContains("Ce dossier est déjà à l'ordre du jour.", |
275 |
$this->byCssSelector("#tabs-3 .message .text")->text()); |
276 |
// On ajoute uniquement le dossier AZ0130551200001P0 à la commission |
277 |
$this->byId("commission_dossiers_plannifier_retirer")->click(); |
278 |
sleep(2); |
279 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
280 |
$this->verifyNoErrors(); |
281 |
// On valide le formulaire |
282 |
$this->byXpath("//input[@name='validation']")->click(); |
283 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
284 |
$this->verifyNoErrors(); |
285 |
// On vérifie que le formulaire s'est bien validé |
286 |
$this->assertContains("Mise à jour réalisée avec succès pour le(s) dossier(s) :", |
287 |
$this->byCssSelector("#tabs-2 .message .text")->text()); |
288 |
$this->assertContains("CU 013055 12 00001P0", |
289 |
$this->byCssSelector("#tabs-2 .message .text")->text()); |
290 |
$this->assertContains("AZ 013055 12 00001P0", |
291 |
$this->byCssSelector("#tabs-2 .message .text")->text()); |
292 |
// On affiche l'ordre du jour |
293 |
$this->byId("action-form-commission-commission_compte_rendu")->click(); |
294 |
sleep(5); |
295 |
// Liste les fenêtres |
296 |
$windows = $this->windowHandles(); |
297 |
// Change la fenêtre |
298 |
$this->window($windows[1]); |
299 |
// On vérifie qu'il n'y ait pas d'erreur |
300 |
$this->verifynoerrors(); |
301 |
// On vérifie que le text est présent |
302 |
$this->assertContains("COMPTE RENDU", $this->source()); |
303 |
$this->closeWindow(); |
304 |
// On change le focus de la fenêtre |
305 |
$this->window($windows[0]); |
306 |
// On se déconnecte de l'application |
307 |
$this->logout(); |
308 |
} |
309 |
|
310 |
/* |
311 |
* Rédaction des retours de commission suite au passage en commission |
312 |
* */ |
313 |
public function test_05_saisie_des_avis_par_la_cellule_suivi() { |
314 |
|
315 |
// On se connecte en tant que "suivi" |
316 |
$this->login("suivi", "suivi"); |
317 |
// On clique sur le menu de paramétrage du type des commissions |
318 |
$this->byLinkText("Gestion")->click(); |
319 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
320 |
$this->verifyNoErrors(); |
321 |
// Clique sur la commission |
322 |
$this->byLinkText("TTDC".date("Ymd"))->click(); |
323 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
324 |
$this->verifyNoErrors(); |
325 |
// Affichage en visualisation du dossier qui est passé en commission |
326 |
$this->byLinkText("AZ 013055 12 00001P0")->click(); |
327 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
328 |
$this->verifyNoErrors(); |
329 |
// On saisie le retour |
330 |
$this->byId("avis")->value("Favorable"); |
331 |
// Validation du formulaire |
332 |
$this->byXpath("//input[@value='Modifier']")->click(); |
333 |
// La modification a bien été prise en compte |
334 |
$this->assertContains("Vos modifications ont bien été enregistrées", |
335 |
$this->byCssSelector("#sousform-dossier_commission .message .text")->text()); |
336 |
// On affiche le compte-rendu |
337 |
$this->byId("action-form-commission-commission_compte_rendu")->click(); |
338 |
sleep(5); |
339 |
// Liste les fenêtres |
340 |
$windows = $this->windowHandles(); |
341 |
// Change la fenêtre |
342 |
$this->window($windows[1]); |
343 |
// On vérifie qu'il n'y ait pas d'erreur |
344 |
$this->verifynoerrors(); |
345 |
// On vérifie que le text est présent |
346 |
$this->assertContains("COMPTE RENDU", $this->source()); |
347 |
$this->closeWindow(); |
348 |
// On change le focus de la fenêtre |
349 |
$this->window($windows[0]); |
350 |
// On se déconnecte de l'application |
351 |
$this->logout(); |
352 |
} |
353 |
|
354 |
/** |
355 |
* Test le retour de commission par l'instructeur |
356 |
*/ |
357 |
public function test_06_gestion_du_retour_de_commission_par_l_instructeur() { |
358 |
|
359 |
// On se connecte en tant que "instr" |
360 |
$this->login("instr", "instr"); |
361 |
//On verifie le message du widget |
362 |
$this->assertContains("Vous avez 1 demande de passage en commission pour laquelle un avis a été rendu.", |
363 |
$this->byId("dashboard")->text()); |
364 |
// On clique sur le lien du widget |
365 |
$this->byLinkText("Voir mes retours de commission")->click(); |
366 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
367 |
$this->verifyNoErrors(); |
368 |
// On se rend sur la demande de passage en visualisaion |
369 |
$this->assertContains($this->byCssSelector(".odd td:nth-child(7)")->text(),"Favorable"); |
370 |
//On clique sur le retour du dossier "AZ0130551200001P0" |
371 |
$this->byLinkText("AZ 013055 12 00001P0")->click(); |
372 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
373 |
$this->verifyNoErrors(); |
374 |
// On temporise pour laisser un peu de temps à l'onglet de se charger |
375 |
// (accès direct) |
376 |
sleep(2); |
377 |
//On marque comme lu |
378 |
$this->byId("action-sousform-dossier_commission-lu")->click(); |
379 |
sleep(2); |
380 |
// On vérifie qu'il n'y a pas d'erreur sur l'élément affiché |
381 |
$this->verifyNoErrors(); |
382 |
// On vérifie que la demande de passage est bien passée à lu |
383 |
$this->assertEquals($this->byId("lu")->text(),"Oui"); |
384 |
//Retour sur le tableau de bord |
385 |
$this->byLinkText("Tableau de bord")->click(); |
386 |
//On vérifie le tableau de bord |
387 |
$this->assertContains("Vous n'avez aucune demande de passage en commission pour laquelle un avis a été rendu.", |
388 |
$this->byId("dashboard")->text()); |
389 |
// On se déconnecte de l'application |
390 |
$this->logout(); |
391 |
} |
392 |
|
393 |
|
394 |
} |
395 |
|
396 |
?> |