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

Annotation of /trunk/tests/testSuivi.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2603 - (hide annotations)
Wed Dec 11 11:46:47 2013 UTC (11 years, 1 month ago) by vpihour
File size: 21552 byte(s)
Ajout d'une nouvelle entrée de menu pour la cellule suivi
Ajout de la possibilité pour l'instructeur et l'administrateur de finaliser/définaliser une consultation

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

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26