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

Annotation of /trunk/tests/testSuivi.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4210 - (hide annotations)
Thu May 19 10:28:50 2016 UTC (8 years, 8 months ago) by nmeucci
File size: 23636 byte(s)
Amélioration des tests du suivi

1 mbroquet 3730 <?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 nmeucci 4210 public function test_02_mise_a_jour_des_dates_simple_par_la_cellule_suivi() {
56     // On se connecte en tant que "admin"
57 mbroquet 3730 $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 nmeucci 4210 // 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 mbroquet 3730 // 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 nmeucci 4210 // 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 mbroquet 3730
116 nmeucci 4210 // On se connecte en tant qu'instructeur
117     $this->login("instr", "instr");
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 mbroquet 3730 //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 fmichon 4139 $this->assertContains("Demandes D'avis", $this->byCssSelector("#title h2")->text());
320 mbroquet 3730 //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 fmichon 4139 $this->assertContains("Suivi > Demandes D'avis > Retours De Consultation",
440 mbroquet 3730 $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 fmichon 4139 $this->assertContains("Suivi > Demandes D'avis > Mise À Jour Des Dates",
461 mbroquet 3730 $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