/[openfoncier]/branches/evo-widget-dossier-evenement-incomplet-majoration/tests/testSuivi.php
ViewVC logotype

Contents of /branches/evo-widget-dossier-evenement-incomplet-majoration/tests/testSuivi.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4235 - (show annotations)
Fri May 20 09:26:34 2016 UTC (8 years, 8 months ago) by jymadier
File size: 23630 byte(s)
* Rebase

1 <?php
2 /**
3 *
4 *
5 * @package openfoncier
6 * @version SVN : $Id: testSuivi.php 5857 2016-02-03 11:48:28Z nmeucci $
7 */
8
9 //
10 require_once "base.php";
11
12 /**
13 *
14 */
15 class Suivi extends Base2TestCase {
16
17 // Liste des utilisateurs
18 var $listUtlisateurs = array(
19 array(
20 "login" => "suivi",
21 "mdp" => "suivi"
22 ),
23 array(
24 "login" => "adminfonct",
25 "mdp" => "adminfonct"
26 ),
27 );
28
29 /**
30 * Fonction lancée en debut de chaque test
31 */
32 public function setUp() {
33 parent::setUp();
34 echo ' = '.get_class().'.'.str_replace('test_', '', $this->getName())."\r\n";
35 }
36
37 public function onNotSuccessfulTest(Exception $e){
38 echo 'Line '.$e->getLine().' : '.$e->getMessage()."\r\n";
39 parent::onNotSuccessfulTest($e);
40 }
41
42 // Fonction public
43 public function test_01_ouverture_menu() {
44 // Récupération des utilisateurs
45 $utilisateurs = $this->listUtlisateurs;
46 // Pour chaque utilisateur on lance le test
47 foreach ($utilisateurs as $utilisateur) {
48 //
49 $this->ouvertureMenu($utilisateur);
50 }
51 // On vérifie la déconnexion
52 $this->verifyDeconnect();
53 }
54
55 public function test_02_mise_a_jour_des_dates_simple_par_la_cellule_suivi() {
56 // On se connecte en tant que "admin"
57 $this->login("admin", "admin");
58 // On clique sur le menu Instruction
59 $this->byLinkText("Instruction")->click();
60 // On clique sur le menu Recherche
61 $this->byLinkText("Recherche")->click();
62 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
63 $this->verifyNoErrors();
64 // On clique sur le dossier PC 013055 12 00002P
65 $this->byLinkText("PC 013055 12 00002P0")->click();
66 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
67 $this->verifyNoErrors();
68 // liste des instructions
69 $this->byId("instruction")->click();
70 // On clique sur le + pour ajouter une instruction
71 $this->byCssSelector("#sousform-instruction .actions-max-1 a")->click();
72 // On choisit un signataire Albert Dupont
73 $this->select($this->byId("signataire_arrete"))->selectOptionByValue("1");
74 // On choisi l'événement "adjoint [majoration]"
75 $this->select($this->byId("evenement"))->selectOptionByValue("81");
76 // On clique sur le bouton ajouter
77 $this->byXPath("//input[@value='Ajouter']")->click();
78 // On vérifie que l'instruction s'est bien ajouté
79 $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text());
80 // On clique sur le bouton retour
81 $this->byCssSelector("#sousform-instruction form a.retour")->click();
82 // On clique sur l'instruction nouvellement créée
83 $this->byLinkText("accepter un dossier sans réserve")->click();
84 $idInstr = $this->byCssSelector("div.form-content > #instruction")->text();
85 // On finalise le document
86 $this->byCssSelector("#sousform-instruction .portlet-list li:nth-child(4) a")->click();
87 // On vérifie le message de validation
88 $this->assertEquals('La finalisation du document s\'est effectuée avec succès.', $this->byCssSelector("#sousform-instruction .message .text")->text());
89 sleep(1);
90 //On clique sur le bouton retour
91 $this->byLinkText("Retour")->click();
92 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
93 $this->verifyNoErrors();
94 // On clique sur le + pour ajouter une instruction
95 $this->byCssSelector("#sousform-instruction .actions-max-1 a")->click();
96 // On choisit un signataire Albert Dupont
97 $this->select($this->byId("signataire_arrete"))->selectOptionByValue("1");
98 // On choisi l'événement "adjoint [majoration]"
99 $this->select($this->byId("evenement"))->selectOptionByValue("29");
100 // On clique sur le bouton ajouter
101 $this->byXPath("//input[@value='Ajouter']")->click();
102 // On vérifie que l'instruction s'est bien ajouté
103 $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text());
104 // On clique sur le bouton retour
105 $this->byCssSelector("#sousform-instruction form a.retour")->click();
106 // On clique sur l'instruction nouvellement créée
107 $this->byLinkText("retrait apres decision")->click();
108 $idInstr2 = $this->byCssSelector("div.form-content > #instruction")->text();
109 // On finalise le document
110 $this->byCssSelector("#sousform-instruction .portlet-list li:nth-child(4) a")->click();
111 // On vérifie le message de validation
112 $this->assertEquals('La finalisation du document s\'est effectuée avec succès.', $this->byCssSelector("#sousform-instruction .message .text")->text());
113 //On se déconnecte de l'application
114 $this->deconnect();
115
116 // On se connecte en tant qu'admin
117 $this->login("admin", "admin");
118 // On clique sur le menu Instruction
119 $this->byLinkText("Instruction")->click();
120 // On clique sur le menu Recherche
121 $this->byLinkText("Recherche")->click();
122 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
123 $this->verifyNoErrors();
124 // On clique sur le dossier PC 013055 12 00002P
125 $this->byLinkText("PC 013055 12 00002P0")->click();
126 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
127 $this->verifyNoErrors();
128 // liste des instructions
129 $this->byId("instruction")->click();
130 // On clique sur l'instruction nouvellement créée
131 $this->byLinkText("accepter un dossier sans réserve")->click();
132 $idInstr = $this->byCssSelector("div.form-content > #instruction")->text();
133
134 //On clique sur le bouton retour
135 $this->byLinkText("Retour")->click();
136 sleep(1);
137 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
138 $this->verifyNoErrors();
139 // On clique sur l'instruction nouvellement créée
140 $this->byLinkText("retrait apres decision")->click();
141 $idInstr2 = $this->byCssSelector("div.form-content > #instruction")->text();
142 $this->deconnect();
143
144 // On se connecte en tant que "suivi"
145 $this->login("suivi", "suivi");
146 // On clique sur le lien "Mise à jour des dates" dans le menu
147 $this->byLinkText("Mise À Jour Des Dates")->click();
148 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
149 $this->verifyNoErrors();
150 //
151 $dates = array(
152 0 => array(
153 "id" => "date_envoi_signature",
154 "label" => "date d'envoi pour signature Mairie/Préfet",
155 "date" => date("d/m/Y", strtotime("- 6 day")),
156 ),
157 1 => array(
158 "id" => "date_retour_signature",
159 "label" => "date de retour de signature Mairie/Préfet",
160 "date" => date("d/m/Y", strtotime("- 4 day")),
161 ),
162 2 => array(
163 "id" => "date_envoi_controle_legalite",
164 "label" => "date d'envoi au contrôle de légalite",
165 "date" => date("d/m/Y", strtotime("- 4 day")),
166 ),
167 3 => array(
168 "id" => "date_retour_controle_legalite",
169 "label" => "date de retour de controle de légalite",
170 "date" => date("d/m/Y"),
171 ),
172 );
173 foreach($dates as $date) {
174 // On vérifie que le titre de la page est correct
175 $this->assertContains("Suivi > Suivi Des Pièces > Mise À Jour Des Dates",
176 $this->byCssSelector("#content")->text());
177 // On saisi les informations de mise à jour de la date
178 $this->select($this->byId("type_mise_a_jour"))->selectOptionByValue(
179 $date["id"]);
180 $this->byId("date")->clear();
181 $this->byId("date")->value($date["date"]);
182 $this->byId("code_barres")->value("1100000000".$idInstr);
183 // On clique sur le bouton "Valider"
184 $this->byName("validation")->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 le les informations du dossier sont bien présentes
188 $this->assertEquals("PC 013055 12 00002P0",
189 $this->byId("dossier_libelle")->text());
190 $this->assertEquals($date["date"],
191 $this->byCssSelector("#".$date["id"])->text());
192 // On clique sur le bouton "Valider"
193 $this->byName("validation")->click();
194 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
195 $this->verifyNoErrors();
196 // On vérifie que le message de validation est présent
197 $this->assertEquals("Saisie enregistrée",
198 $this->byCssSelector("span.text")->text());
199
200 }
201 foreach($dates as $date) {
202 // On vérifie que le titre de la page est correct
203 $this->assertContains("Suivi > Suivi Des Pièces > Mise À Jour Des Dates",
204 $this->byCssSelector("#content")->text());
205 // On saisi les informations de mise à jour de la date
206 $this->select($this->byId("type_mise_a_jour"))->selectOptionByValue(
207 $date["id"]);
208 $this->byId("date")->clear();
209 $this->byId("date")->value($date["date"]);
210 $this->byId("code_barres")->value("1100000000".$idInstr2);
211 // On clique sur le bouton "Valider"
212 $this->byName("validation")->click();
213 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
214 $this->verifyNoErrors();
215 // On vérifie que le les informations du dossier sont bien présentes
216 $this->assertEquals("PC 013055 12 00002P0",
217 $this->byId("dossier_libelle")->text());
218 $this->assertEquals($date["date"],
219 $this->byCssSelector("#".$date["id"])->text());
220 // On clique sur le bouton "Valider"
221 $this->byName("validation")->click();
222 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
223 $this->verifyNoErrors();
224 // On vérifie que le message de validation est présent
225 $this->assertEquals("Saisie enregistrée",
226 $this->byCssSelector("span.text")->text());
227
228 }
229 // On se déconnecte
230 $this->deconnect();
231
232 // On se connecte en tant que "instr"
233 $this->login("instr", "instr");
234 // On saisit le numéro de dossier "PC0130551200002P0" dans le champ de
235 // recherche du widget "accès direct" du tableau de bord qui possède le focus
236 $this->byId("dossier")->value("PC0130551200002P0");
237 // On clique sur le bouton "Rechercher" du widget "accès direct" du
238 // tableau de bord
239 $this->byName("validation")->click();
240 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
241 $this->verifyNoErrors();
242 // On vérifie que le titre de la page est correct
243 // (que nous sommes sur le bon dossier)
244 $this->assertContains("Instruction > Dossiers D'instruction > PC 013055 12 00002P0",
245 $this->byCssSelector("#content")->text());
246 // On clique sur l'onglet "Instruction"
247 $this->byId("instruction")->click();
248 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
249 $this->verifyNoErrors();
250 // On clique sur le lien de l'événement d'instruction n°11
251 $this->byLinkText("arrete")->click();
252 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
253 $this->verifyNoErrors();
254 // On vérifie que le sous-titre est correct (que nous sommes sur le bon
255 // événement d'instruction)
256 $this->assertEquals($idInstr,
257 $this->byCssSelector("div.form-content > #instruction")->text());
258 // On boucle sur chaque date pour vérifier que ces dernières sont bien
259 // présentes sur l'écran de visualisation de l'événement d'instruction
260 foreach($dates as $date) {
261 //
262 $this->assertEquals($date["date"],
263 $this->byId($date["id"])->text());
264 }
265 // On clique sur le bouton retour
266 $this->byCssSelector("#sformulaire a.retour")->click();
267 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
268 $this->verifyNoErrors();
269 // On clique sur le lien de l'événement d'instruction n°11
270 $this->byLinkText("retrait apres decision")->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 que le sous-titre est correct (que nous sommes sur le bon
274 // événement d'instruction)
275 $this->assertEquals($idInstr2,
276 $this->byCssSelector("div.form-content > #instruction")->text());
277 // On boucle sur chaque date pour vérifier que ces dernières sont bien
278 // présentes sur l'écran de visualisation de l'événement d'instruction
279 foreach($dates as $date) {
280 //
281 $this->assertEquals($date["date"],
282 $this->byId($date["id"])->text());
283 }
284 //On clique sur le bouton retour
285 $this->byLinkText("Retour")->click();
286 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
287 $this->verifyNoErrors();
288
289 //{{{On rajoute une consultation avec demande d'avis
290 //On clique sur le menu "Recherche"
291 $this->byLinkText("Recherche")->click();
292 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
293 $this->verifyNoErrors();
294 //On choisit le dossier AT 013055 13 00001P0
295 $this->byLinkText("AT 013055 12 00001P0")->click();
296 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
297 $this->verifyNoErrors();
298 //On clique sur l'onglet Consultation
299 $this->byId("consultation")->click();
300 //L'assertion précédente est un chargement javascript, on attend 2 secondes
301 sleep(2);
302 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
303 $this->verifyNoErrors();
304 //On ajoute deux consultation de test
305 $consultationPourConformite = $this->addConsultation(2, "59.02 - Atelier du Patrimoine");
306 $consultationAvecAvisAttendu = $this->addConsultation(13, "59.13 - Régie des Tranports de Marseille - DTP/CIP");
307
308 //On se déconnecte
309 $this->deconnect();
310 //}}}
311
312 // On se connecte à l'application
313 $this->login("suivi", "suivi");
314 //On clique sur le menu "Mise à jour des dates" de la catégorie "Demandes d'avis"
315 $this->byClassName("demandes_avis_mise_a_jour_des_dates-16")->click();
316 //On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
317 $this->verifyNoErrors();
318 //On vérifie qu'on est dans le bon menu
319 $this->assertContains("Demandes D'avis", $this->byCssSelector("#title h2")->text());
320 //On saisit un code barres et on ne saisit pas la date
321 $this->byId("code_barres")->value("123456789123");
322 //On valide
323 $this->byXPath("//input[@type='submit']")->click();sleep(1);
324 //On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
325 $this->verifyNoErrors();
326 //On vérifie le message
327 $this->assertContains("Tous les champs doivent être remplis.",
328 $this->byCssSelector(".message .text")->text());
329 //On saisit la date
330 $this->byId("date")->value(date("d/m/Y",strtotime("+1 day")));
331 //On saisit une consultation qui n'existe pas
332 $this->byId("code_barres")->clear();
333 $this->byId("code_barres")->value("123456789123");
334 //On valide
335 $this->byXPath("//input[@type='submit']")->click();sleep(1);
336 //On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
337 $this->verifyNoErrors();
338 //On vérifie le message
339 $this->assertContains("Le numéro saisi ne correspond à aucun code barres de consultation.",
340 $this->byCssSelector(".message .text")->text());
341 //On saisit une consultation qui n'est pas une demande d'avis
342 $this->byId("code_barres")->clear();
343 $this->byId("code_barres")->value("12".str_pad($consultationPourConformite, 10, "0", STR_PAD_LEFT));
344 //On valide
345 $this->byXPath("//input[@type='submit']")->click();sleep(1);
346 //On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
347 $this->verifyNoErrors();
348 //On vérifie le message
349 $this->assertContains("Cette consultation n'a pas d'avis attendu.",
350 $this->byCssSelector(".message .text")->text());
351 //On saisit une consultation qui a une demande d'avis
352 $this->byId("code_barres")->clear();
353 $this->byId("code_barres")->value("12".str_pad($consultationAvecAvisAttendu, 10, "0", STR_PAD_LEFT));
354 //On valide
355 $this->byXPath("//input[@type='submit']")->click();sleep(1);
356 //On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
357 $this->verifyNoErrors();
358 //On vérifie qu'on est sur la consultation
359 $this->assertEquals(trim($this->byId("dossier_libelle")->text()), "AT 013055 12 00001P0");
360 $this->assertEquals($this->byId("code_barres")->attribute('value'), "12".str_pad($consultationAvecAvisAttendu, 10, "0", STR_PAD_LEFT));
361 //On valide la mise à jour de la date
362 $this->byXPath("//input[@type='submit']")->click();sleep(1);
363 //On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
364 $this->verifyNoErrors();
365 //On vérifie que la saisie s'est correctement enregistrée
366 $this->assertContains("Saisie enregistrée", $this->byCssSelector(".message .text")->text());
367 //On se déconnecte
368 $this->deconnect();
369 // On se connecte en tant que "instr"
370 $this->login("instr", "instr");
371 //On clique sur le menu "Recherche"
372 $this->byLinkText("Recherche")->click();
373 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
374 $this->verifyNoErrors();
375 //On choisit le dossier AT 013055 13 00001P0
376 $this->byLinkText("AT 013055 12 00001P0")->click();
377 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
378 $this->verifyNoErrors();
379 //On clique sur l'onglet Consultation
380 $this->byId("consultation")->click();
381 //L'assertion précédente est un chargement javascript, on attend 2 secondes
382 sleep(2);
383 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
384 $this->verifyNoErrors();
385 //On clique sur la consultation
386 $this->byLinkText($consultationAvecAvisAttendu)->click();
387 //On vérifie que la date s'est bien mise à jour
388 $this->assertEquals(date("d/m/Y",strtotime("+1 day")), $this->byId("date_reception")->text());
389 // On se déconnecte
390 $this->logout();
391 }
392
393 /**
394 * Ajoute une consultation
395 * @param $serviceId L'identifiant du service à consulter
396 * @param $serviceLibelle Le libellé du service à consulter
397 * @return L'identifiant de la consultation ajoutée
398 */
399 private function addConsultation($service, $serviceLibelle){
400
401 // On clique sur le lien "+" dans le tableau
402 $this->byClassName("add-16")->click();
403 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
404 $this->verifyNoErrors();
405 //On choisit un service dont le type d'avis est "avec avis attendu" (13)
406 $this->select($this->byId("service"))->selectOptionByValue($service);
407 // On clique sur le bouton "Ajouter" du formulaire sans sélectionner de service
408 $this->byXPath("//input[@value='Ajouter']")->click();sleep(1);
409 //On vérifie que la consultation s'est bien ajoutée
410 $this->assertContains('Vos modifications ont bien été enregistrées.', $this->byCssSelector("#sousform-consultation .message .text")->text());
411 //On clique sur retour
412 $this->byCssSelector("#sousform-consultation .retour")->click();
413 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
414 $this->verifyNoErrors();
415 //On clique sur la nouvelle consultation
416 $this->byLinkText($serviceLibelle)->click();
417 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
418 $this->verifyNoErrors();
419 //On récupère le numéro de la consultation
420 $consultation = trim($this->byCssSelector("#sousform-consultation #consultation")->text());
421 //On clique sur retour
422 $this->byCssSelector("#sousform-consultation .retour")->click();
423 //On retourne le numéro de la consultation
424 return $consultation;
425 }
426
427 /**
428 * Ce test vise uniquement à vérifier que les écrans correspondant à chaque
429 * entrée de menu ne génère pas une erreur de base de données
430 */
431 // Fonction privé
432 private function ouvertureMenu($utilisateur) {
433 // On se connecte
434 $this->login($utilisateur["login"], $utilisateur["mdp"]);
435 // Ouvre le menu
436 $this->openMenu("Suivi", $utilisateur);
437 // On vérifie le menu "Retours De Consultation"
438 $this->byLinkText("Retours De Consultation")->click();
439 $this->assertContains("Suivi > Demandes D'avis > Retours De Consultation",
440 $this->byId("title")->text());
441 $this->verifyNoErrors();
442 // On vérifie le menu "Mise À Jour Des Dates"
443 $this->byLinkText("Mise À Jour Des Dates")->click();
444 $this->assertContains("Suivi > Suivi Des Pièces > Mise À Jour Des Dates",
445 $this->byId("title")->text());
446 $this->verifyNoErrors();
447 // On vérifie le menu "Envoi Lettre RAR"
448 $this->byLinkText("Envoi Lettre RAR")->click();
449 $this->assertContains("Suivi > Suivi Des Pièces > Envoi Lettre RAR",
450 $this->byId("title")->text());
451 $this->verifyNoErrors();
452 // On vérifie le menu "Bordereaux"
453 $this->byLinkText("Bordereaux")->click();
454 $this->assertContains("Suivi > Suivi Des Pièces > Bordereaux",
455 $this->byId("title")->text());
456 $this->verifyNoErrors();
457 // On vérifie le menu "Mise À Jour Des Dates" de la catégorie
458 // "Demandes D'avis"
459 $this->byClassName("demandes_avis_mise_a_jour_des_dates-16")->click();
460 $this->assertContains("Suivi > Demandes D'avis > Mise À Jour Des Dates",
461 $this->byId("title")->text());
462 $this->verifyNoErrors();
463 // On vérifie le menu "Gestion"
464 $this->byLinkText("Gestion")->click();
465 $this->assertContains("Suivi > Commissions > Gestion",
466 $this->byId("title")->text());
467 $this->verifyNoErrors();
468 // On vérifie le menu "Demandes"
469 $this->byLinkText("Demandes")->click();
470 $this->assertContains("Suivi > Commissions > Demandes",
471 $this->byId("title")->text());
472 $this->verifyNoErrors();
473 // On se déconnecte
474 $this->deconnect();
475 }
476 }
477
478 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26