/[openfoncier]/trunk/tests/testGestionIncompletude.php
ViewVC logotype

Contents of /trunk/tests/testGestionIncompletude.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5024 - (show annotations)
Wed Nov 2 14:39:23 2016 UTC (8 years, 3 months ago) by softime
File size: 23714 byte(s)
* Merge de la branche de développement 3.33.x

1 <?php
2 /**
3 * Fichier contenant la classe test pour l'incomplétude
4 *
5 * @package openfoncier
6 * @version SVN : $Id: testGestionIncompletude.php 6134 2016-03-09 09:30:00Z stimezouaght $
7 */
8
9 //
10 require_once "base.php";
11
12 /**
13 * Classe permettant de tester l'incomplétude
14 *
15 * Pour lancer le test seul, changer les données :
16 * - dossier : PC0130551200002P0
17 * - code barres de retour de l’AR incomplétude : 110000000011
18 * - code barres de retour de l’AR de majoration de délai consultation ABF : 110000000010
19 *
20 * Pour lancer le test à la fin du run_testsuite, changer les données :
21 * - dossier : PC0130551300001P0
22 * - code barres de retour de l’AR incomplétude : 110000000021
23 * - code barres de retour de l’AR de majoration de délai consultation ABF : 110000000020
24 */
25 class GestionIncompletude extends Base2TestCase {
26 /**
27 * Fonction lancée en debut de chaque test
28 */
29 public function setUp() {
30 parent::setUp();
31 echo ' = '.get_class().'.'.str_replace('test_', '', $this->getName())."\r\n";
32 }
33
34 public function onNotSuccessfulTest(Exception $e){
35 echo 'Line '.$e->getLine().' : '.$e->getMessage()."\r\n";
36 parent::onNotSuccessfulTest($e);
37 }
38
39 /**
40 * Test l'incomplétude sur un dossier d'instruction
41 */
42 public function test_01_Incompletude() {
43
44 /**
45 * Création d'un dossier d'instruction
46 */
47 // On se connecte à l'application
48 $this->login("guichet", "guichet");
49 // On clique sur le menu "Nouveau Dossier"
50 $this->byLinkText("Nouveau Dossier")->click();
51 // On vérifie qu'il n'y ait pas d'erreur
52 $this->verifynoerrors();
53 // On vérifie le nom de l'onglet
54 $this->assertEquals("Demande", $this->byCssSelector("ul.ui-tabs-nav li.ui-state-default a")->text());
55 // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes"
56 $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByLabel("Permis de construire pour une maison individuelle et / ou ses annexes");
57 // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes"
58 $this->select($this->byId("demande_type"))->selectOptionByLabel("Dépôt Initial");
59 // On clique pour ajouter un pétitionnaire principale
60 $this->byId("add_petitionnaire_principal")->click();
61 // On remplit le champ
62 $this->byId("particulier_nom")->value("DURAND");
63 // On remplit le champ
64 $this->byId("particulier_prenom")->value("MICKAEL");
65 // On remplit le champ
66 $this->byId("particulier_date_naissance")->value("03/01/1956");
67 // On remplit le champ
68 $this->byId("particulier_commune_naissance")->value("LILLE");
69 // On remplit le champ
70 $this->byId("particulier_departement_naissance")->value("NORD");
71 // On remplit le champ
72 $this->byId("numero")->value("12");
73 // On remplit le champ
74 $this->byId("voie")->value("RUE DE LA LOI");
75 // On remplit le champ
76 $this->byId("complement")->value("APPT 12");
77 // On remplit le champ
78 $this->byId("localite")->value("MARSEILLE");
79 // On remplit le champ
80 $this->byId("code_postal")->value("13012");
81 // On remplit le champ
82 $this->byId("telephone_fixe")->value("0404040404");
83 // On clique sur ajouter
84 $this->byCssSelector("div#sformulaire form div.formControls input.om-button")->click();sleep(1);
85 // On vérifie qu'il n'y ait pas d'erreur
86 $this->verifynoerrors();
87 // On vérifie le message
88 $this->assertRegExp("/^[\s\S]*Vos modifications ont bien été enregistrées.[\s\S]*$/",$this->byCssSelector("#sousform-petitionnaire .message")->text());
89 // On clique sur le bouton retour
90 $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();sleep(1);
91 // On vérifie que le text est présent
92 $this->assertRegExp("/^[\s\S]*DURAND MICKAEL[\s\S]*$/",$this->byCssSelector("#petitionnaire_principal_delegataire .synthese_demandeur")->text());
93 // On clique sur ajouter
94 $this->byXPath("//input[@value='Ajouter']")->click();
95 // On vérifie qu'il n'y ait pas d'erreur
96 $this->verifynoerrors();
97 // On vérifie le message
98 $this->assertRegExp("/^[\s\S]*Création du dossier d'autorisation n°[\s\S]*$/",$this->byCssSelector(".message")->text());
99 // Récupération du numéro de dossier
100 preg_match('/(PC)[0-9 ]*(P0)/', $this->byCssSelector(".message .text")->text(), $matches);
101 $dossier_libelle = $matches[0];
102 $dossier = str_replace(' ', '', $dossier_libelle);
103 // On clique
104 $this->byCssSelector("a#link_demande_recepisse")->click();sleep(5);
105 // Liste les fenêtres
106 $windows = $this->windowHandles();
107 // Change la fenêtre
108 $this->window($windows[1]);
109 // On vérifie qu'il n'y ait pas d'erreur
110 $this->verifynoerrors();
111 // On vérifie que le text est présent
112 $this->assertRegExp("/^[\s\S]*RECEPISSE DE DEPOT[\s\S]*$/",$this->source());
113 // On ferme la fenêtre
114 $this->closeWindow();
115 // On change le focus de la fenêtre
116 $this->window($windows[0]);
117 // On clique sur le bouton retour
118 $this->byLinkText("Retour")->click();
119 // On vérifie qu'il n'y ait pas d'erreur
120 $this->verifynoerrors();
121 // On se déconnecte
122 $this->deconnect();
123
124 /**
125 * Envoi d’un courrier de majoration de délai pour consultation ABF
126 */
127 // on se connecte à l'application
128 $this->login("instr", "instr");
129 // On clique sur le menu
130 $this->byLinkText("Recherche")->click();
131 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
132 $this->verifyNoErrors();
133 // On recherche le dossier crée
134 $this->byId("dossier")->value($dossier);
135 // On clique sur le bouton recherche
136 $this->byId("adv-search-submit")->click();
137 // On clique sur le résultat
138 $this->byLinkText($dossier_libelle)->click();
139 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
140 $this->verifyNoErrors();
141 // On clique sur l'onglet instruction
142 $this->byId("instruction")->click();
143 // On clique sur le + pour ajouter une instruction
144 $this->byCssSelector("#sousform-instruction .actions-max-1 a")->click();
145 // On choisi l'événement ABF recours contre avis [majoration]
146 $this->select($this->byId("evenement"))->selectOptionByValue("21");
147 // On clique sur le bouton ajouter
148 $this->byXPath("//input[@value='Ajouter']")->click();
149 // On vérifie que l'instruction s'est bien ajouté
150 $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text());
151 // On clique sur le bouton retour
152 $this->byCssSelector("#sousform-instruction form a.retour")->click();
153 //On récupère le numéro de l'instruction créée
154 $this->byLinkText("ABF recours contre avis")->click();
155 $idInstrAbf = $this->byCssSelector(".form-content #instruction")->text();
156 // Finalisation du document
157 $this->byCssSelector("#action-sousform-instruction-finaliser")->click();
158 // On vérifie le message de validation
159 $this->assertEquals('La finalisation du document s\'est effectuée avec succès.', $this->byCssSelector("#sousform-instruction .message .text")->text());
160 // On clique sur l'onglet DI
161 $this->byId("main")->click();
162 // on rafraichis la page
163 $this->refresh();
164 // On vérifie le délai du dossier
165 $this->assertEquals("5", $this->byId('delai')->text());
166
167 /**
168 * Envoi notification de pièces manquantes
169 */
170 // On clique sur l'onglet instruction
171 $this->byId("instruction")->click();
172 // On clique sur le + pour ajouter une instruction
173 $this->byCssSelector("#sousform-instruction .actions-max-1 a")->click();
174 // On choisi l'événement "Notification de pieces manquante [rejet]"
175 $this->select($this->byId("evenement"))->selectOptionByValue("2");
176 // On clique sur le bouton ajouter
177 $this->byXPath("//input[@value='Ajouter']")->click();
178 // On vérifie que l'instruction s'est bien ajouté
179 $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text());
180 // On clique sur le bouton retour
181 $this->byCssSelector("#sousform-instruction form a.retour")->click();
182 //On récupère le numéro de l'instruction créée
183 $this->byLinkText("Notification de pieces manquante")->click();
184 $idInstrIncompletude = $this->byCssSelector(".form-content #instruction")->text();
185 // Finalisation du document
186 $this->byCssSelector("#action-sousform-instruction-finaliser")->click();
187 // On vérifie le message de validation
188 $this->assertEquals('La finalisation du document s\'est effectuée avec succès.', $this->byCssSelector("#sousform-instruction .message .text")->text());
189 // On clique sur l'onglet DI
190 $this->byId("main")->click();
191 // on rafraichis la page
192 $this->refresh();
193 // On vérifie que l'état du dossier
194 $this->assertEquals("dossier incomplet", $this->byId('etat')->text());
195 // On se deconnecte
196 $this->deconnect();
197
198 /**
199 * Retour de l’AR incomplétude
200 */
201 // on se connecte en tant que suivi
202 $this->login("suivi", "suivi");
203 // On clique sur le menu
204 $this->byLinkText("Mise À Jour Des Dates")->click();
205 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
206 $this->verifyNoErrors();
207 // on choisit le type de mise à jour
208 $this->select($this->byId("type_mise_a_jour"))->selectOptionByValue("date_retour_rar");
209 // on choisit la date
210 $this->byId("date")->value(date("d/m/Y"));
211 // on rentre le code barre
212 $this->byId("code_barres")->value("1100000000".$idInstrIncompletude);
213 // on clique sur le bouton valider
214 $this->byName("validation")->click();
215 // on vérifie que la mise à jour est pour le bon évenement
216 $this->assertEquals("Notification de pieces manquante", $this->byId('evenement')->text());
217 // on clique encore sur le bouton valider
218 $this->byName("validation")->click();
219 // on vérifie que la mise à jour est faite
220 $this->assertRegExp('/.*Saisie enregistrée.*/', $this->byCssSelector("#formulaire .message .text")->text());
221
222 /**
223 * Retour de l’AR de majoration de délai consultation ABF
224 */
225 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
226 $this->verifyNoErrors();
227 // on choisit le type de mise à jour
228 $this->select($this->byId("type_mise_a_jour"))->selectOptionByValue("date_retour_rar");
229 // on choisit la date
230 $this->byId("date")->value(date("d/m/Y"));
231 // on rentre le code barre
232 $this->byId("code_barres")->value("1100000000".$idInstrAbf);
233 // on clique sur le bouton valider
234 $this->byName("validation")->click();
235 // on vérifie que la mise à jour est pour le bon évenement
236 $this->assertEquals("ABF recours contre avis", $this->byId('evenement')->text());
237 // on clique encore sur le bouton valider
238 $this->byName("validation")->click();
239 // on vérifie que la mise à jour est faite
240 $this->assertRegExp('/.*Saisie enregistrée.*/', $this->byCssSelector("#formulaire .message .text")->text());
241 // On se deconnecte
242 $this->deconnect();
243
244 /**
245 * Dépôt de pièces complémentaires
246 */
247 // on se connecte à l'application
248 $this->login("instr", "instr");
249 // On clique sur le menu
250 $this->byLinkText("Recherche")->click();
251 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
252 $this->verifyNoErrors();
253 // On recherche le dossier crée
254 $this->byId("dossier")->value($dossier);
255 // On clique sur le bouton recherche
256 $this->byId("adv-search-submit")->click();
257 // On clique sur le résultat
258 $this->byLinkText($dossier_libelle)->click();
259 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
260 $this->verifyNoErrors();
261 // On clique sur l'onglet instruction
262 $this->byId("instruction")->click();
263 // on vérifie que les instruction après AR se sont ajouté
264 $this->assertRegExp("/^[\s\S]*incomplétude après accusé de réception[\s\S]*$/", $this->byCssSelector("#sousform-instruction .tab-tab")->text());
265 $this->assertRegExp("/^[\s\S]*majoration délai abf[\s\S]*$/", $this->byCssSelector("#sousform-instruction .tab-tab")->text());
266 // On clique sur le + pour ajouter une instruction
267 $this->byCssSelector("#sousform-instruction .actions-max-1 a")->click();
268 // On choisi l'événement "dépôt de pièces complémentaires [retour]"
269 $this->select($this->byId("evenement"))->selectOptionByValue("91");
270 // On clique sur le bouton ajouter
271 $this->byXPath("//input[@value='Ajouter']")->click();
272 // On vérifie que l'instruction s'est bien ajouté
273 $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text());
274 // On clique sur le bouton retour
275 $this->byCssSelector("#sousform-instruction form a.retour")->click();
276 // On clique sur l'onglet DI
277 $this->byId("main")->click();
278 // on rafraichis la page
279 $this->refresh();
280 // on vérifie que l'état ne soit plus à incomplet
281 $this->assertTrue($this->byId('etat')->text() != "dossier incomplet");
282 // on vérifie que le délai est à 8
283 $this->assertEquals("8", $this->byId('delai')->text());
284 // on vérifie la date de complétude
285 $this->assertEquals(date("d/m/Y"), $this->byId('date_complet')->text());
286 // on vérifie la date de limite de l'instruction
287 $date_limite = $this->mois_date(date("Y-m-d"), 8, "+");
288 $date_limite = date("d/m/Y", strtotime($date_limite));
289 $this->assertEquals($date_limite, $this->byId('date_limite')->text());
290 // On se deconnecte
291 $this->logout();
292 }
293
294 /**
295 * Test l'incomplétude sur un dossier d'instruction en ajoutant une date de
296 * retour AR dépassée
297 */
298 public function test_02_IncompletudeDelaiDepasse() {
299
300 /**
301 * Création d'un dossier d'instruction
302 */
303 // On se connecte à l'application
304 $this->login("guichet", "guichet");
305 // On clique sur le menu "Nouveau Dossier"
306 $this->byLinkText("Nouveau Dossier")->click();
307 // On vérifie qu'il n'y ait pas d'erreur
308 $this->verifynoerrors();
309 // On vérifie le nom de l'onglet
310 $this->assertEquals("Demande", $this->byCssSelector("ul.ui-tabs-nav li.ui-state-default a")->text());
311 // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes"
312 $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByLabel("Permis de construire pour une maison individuelle et / ou ses annexes");
313 // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes"
314 $this->select($this->byId("demande_type"))->selectOptionByLabel("Dépôt Initial");
315 // On clique pour ajouter un pétitionnaire principale
316 $this->byId("add_petitionnaire_principal")->click();
317 // On remplit le champ
318 $this->byId("particulier_nom")->value("DURAND");
319 // On remplit le champ
320 $this->byId("particulier_prenom")->value("MICKAEL");
321 // On remplit le champ
322 $this->byId("particulier_date_naissance")->value("03/01/1956");
323 // On remplit le champ
324 $this->byId("particulier_commune_naissance")->value("LILLE");
325 // On remplit le champ
326 $this->byId("particulier_departement_naissance")->value("NORD");
327 // On remplit le champ
328 $this->byId("numero")->value("12");
329 // On remplit le champ
330 $this->byId("voie")->value("RUE DE LA LOI");
331 // On remplit le champ
332 $this->byId("complement")->value("APPT 12");
333 // On remplit le champ
334 $this->byId("localite")->value("MARSEILLE");
335 // On remplit le champ
336 $this->byId("code_postal")->value("13012");
337 // On remplit le champ
338 $this->byId("telephone_fixe")->value("0404040404");
339 // On clique sur ajouter
340 $this->byCssSelector("div#sformulaire form div.formControls input.om-button")->click();sleep(1);
341 // On vérifie qu'il n'y ait pas d'erreur
342 $this->verifynoerrors();
343 // On vérifie le message
344 $this->assertRegExp("/^[\s\S]*Vos modifications ont bien été enregistrées.[\s\S]*$/",$this->byCssSelector("#sousform-petitionnaire .message")->text());
345 // On clique sur le bouton retour
346 $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();sleep(1);
347 // On vérifie que le text est présent
348 $this->assertRegExp("/^[\s\S]*DURAND MICKAEL[\s\S]*$/",$this->byCssSelector("#petitionnaire_principal_delegataire .synthese_demandeur")->text());
349 // On clique sur ajouter
350 $this->byXPath("//input[@value='Ajouter']")->click();
351 // On vérifie qu'il n'y ait pas d'erreur
352 $this->verifynoerrors();
353 // On vérifie le message
354 $this->assertRegExp("/^[\s\S]*Création du dossier d'autorisation n°[\s\S]*$/",$this->byCssSelector(".message")->text());
355 // Récupération du numéro de dossier
356 preg_match('/(PC)[0-9 ]*(P0)/', $this->byCssSelector(".message .text")->text(), $matches);
357 $dossier_libelle = $matches[0];
358 $dossier = str_replace(' ', '', $dossier_libelle);
359 // On se déconnecte
360 $this->deconnect();
361
362 /**
363 * Envoi d’un courrier de majoration de délai pour consultation ABF
364 */
365 // on se connecte à l'application
366 $this->login("instr", "instr");
367 // On clique sur le menu
368 $this->byLinkText("Recherche")->click();
369 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
370 $this->verifyNoErrors();
371 // On recherche le dossier crée
372 $this->byId("dossier")->value($dossier);
373 // On clique sur le bouton recherche
374 $this->byId("adv-search-submit")->click();
375 // On clique sur le résultat
376 $this->byLinkText($dossier_libelle)->click();
377 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
378 $this->verifyNoErrors();
379
380 /**
381 * Envoi notification de pièces manquantes
382 */
383 // On clique sur l'onglet instruction
384 $this->byId("instruction")->click();
385 // On clique sur le + pour ajouter une instruction
386 $this->byCssSelector("#sousform-instruction .actions-max-1 a")->click();
387 // On choisi l'événement "Notification de pieces manquante [rejet]"
388 $this->select($this->byId("evenement"))->selectOptionByValue("2");
389 // On clique sur le bouton ajouter
390 $this->byXPath("//input[@value='Ajouter']")->click();
391 // On vérifie que l'instruction s'est bien ajouté
392 $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text());
393 // On clique sur le bouton retour
394 $this->byCssSelector("#sousform-instruction form a.retour")->click();
395 //On récupère le numéro de l'instruction créée
396 $this->byLinkText("Notification de pieces manquante")->click();
397 $idInstrIncompletude = $this->byCssSelector(".form-content #instruction")->text();
398 // Finalisation du document
399 $this->byCssSelector("#action-sousform-instruction-finaliser")->click();
400 // On vérifie le message de validation
401 $this->assertEquals('La finalisation du document s\'est effectuée avec succès.', $this->byCssSelector("#sousform-instruction .message .text")->text());
402 // On clique sur l'onglet DI
403 $this->byId("main")->click();
404 // on rafraichis la page
405 $this->refresh();
406 // On vérifie que l'état du dossier
407 $this->assertEquals("dossier incomplet", $this->byId('etat')->text());
408 // On se deconnecte
409 $this->deconnect();
410
411 /**
412 * Retour de l’AR incomplétude
413 */
414 // on se connecte en tant que suivi
415 $this->login("suivi", "suivi");
416 // On clique sur le menu
417 $this->byLinkText("Mise À Jour Des Dates")->click();
418 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
419 $this->verifyNoErrors();
420 // on choisit le type de mise à jour
421 $this->select($this->byId("type_mise_a_jour"))->selectOptionByValue("date_retour_rar");
422 // on choisit la date
423 $this->byId("date")->value(date("d/m/Y", strtotime('+1 month 2 days')));
424 // on rentre le code barre
425 $this->byId("code_barres")->value("1100000000".$idInstrIncompletude);
426 // on clique sur le bouton valider
427 $this->byName("validation")->click();
428 // on vérifie que la mise à jour est pour le bon évenement
429 $this->assertEquals("Notification de pieces manquante", $this->byId('evenement')->text());
430 // on clique encore sur le bouton valider
431 $this->byName("validation")->click();
432 // on vérifie que le retour d'incomplétude est en erreur
433 $this->assertRegExp(
434 '/.*Problème de dates : contactez l\'instructeur du dossier*/',
435 $this->byCssSelector("#formulaire .message .text")->text()
436 );
437 $this->assertRegExp(
438 '/.*(date d\'événement <= date limite de notification au pétitionnaire)*/',
439 $this->byCssSelector("#formulaire .message .text")->text()
440 );
441 // On se deconnecte
442 $this->deconnect();
443
444 /**
445 * Dépôt de pièces complémentaires
446 */
447 // on se connecte à l'application
448 $this->login("instr", "instr");
449 // On clique sur le menu
450 $this->byLinkText("Recherche")->click();
451 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
452 $this->verifyNoErrors();
453 // On recherche le dossier crée
454 $this->byId("dossier")->value($dossier);
455 // On clique sur le bouton recherche
456 $this->byId("adv-search-submit")->click();
457 // On clique sur le résultat
458 $this->byLinkText($dossier_libelle)->click();
459 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
460 $this->verifyNoErrors();
461 //On vérifie que le dossier n'est pas dans un état incomplet notifié
462 $this->assertFalse($this->byId('date_limite_incompletude')->displayed());
463 $this->assertFalse($this->byId('delai_incompletude')->displayed());
464 $this->assertEquals("dossier incomplet", $this->byId('etat')->text());
465 // On se deconnecte
466 $this->logout();
467 }
468 }
469 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26