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

Annotation of /trunk/tests/testGuichetUnique.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4755 - (hide annotations)
Fri Jul 22 14:09:18 2016 UTC (8 years, 6 months ago) by fmichon
File size: 22389 byte(s)
* Tests : Réécriture d'un testcase PHPUnit Selenium en RobotFramework.

1 mbroquet 3730 <?php
2     /**
3     *
4     *
5     * @package openfoncier
6     * @version SVN : $Id: testGuichetUnique.php 6145 2016-03-10 09:07:45Z nhaye $
7     */
8    
9     //
10     require_once "base.php";
11    
12     /**
13     *
14     */
15     class GuichetUnique extends Base2TestCase {
16     /**
17     * Fonction lancée en debut de chaque test
18     */
19     public function setUp() {
20     parent::setUp();
21     echo ' = '.get_class().'.'.str_replace('test_', '', $this->getName())."\r\n";
22     }
23    
24     public function onNotSuccessfulTest(Exception $e){
25     echo 'Line '.$e->getLine().' : '.$e->getMessage()."\r\n";
26     parent::onNotSuccessfulTest($e);
27     }
28    
29     // Liste des utilisateurs
30     var $listUtlisateurs = array(
31     array(
32     "login" => "guichet",
33     "mdp" => "guichet"
34     ),
35     array(
36     "login" => "adminfonct",
37     "mdp" => "adminfonct"
38     ),
39     );
40    
41     /**
42     * Ce test vise uniquement à vérifier que les écrans correspondant à chaque
43     * entrée de menu ne génère pas une erreur de base de données
44     */
45     // Fonction privé
46     private function ouvertureMenu($utilisateur) {
47     // On se connecte
48     $this->login($utilisateur["login"], $utilisateur["mdp"]);
49     // Ouvre le menu
50     $this->openMenu("Guichet Unique", $utilisateur);
51     // On vérifie le menu "Nouveau Dossier"
52     $this->byLinkText("Nouveau Dossier")->click();
53     $this->assertContains("Guichet Unique > Nouvelle Demande > Nouveau Dossier",
54     $this->byId("title")->text());
55     $this->verifyNoErrors();
56     // On vérifie le menu "Dossier En Cours"
57     $this->byLinkText("Dossier En Cours")->click();
58     $this->assertContains("Guichet Unique > Nouvelle Demande > Dossier En Cours",
59     $this->byId("title")->text());
60     $this->verifyNoErrors();
61     // On vérifie le menu "Autre Dossier"
62     $this->byLinkText("Autre Dossier")->click();
63     $this->assertContains("Guichet Unique > Nouvelle Demande > Autre Dossier",
64     $this->byId("title")->text());
65     $this->verifyNoErrors();
66     // On vérifie le menu "Récépissé"
67     $this->byLinkText("Récépissé")->click();
68     $this->assertContains("Guichet Unique > Nouvelle Demande > Récépissé",
69     $this->byId("title")->text());
70     $this->verifyNoErrors();
71     // On vérifie le menu "Pétitionnaire Fréquent"
72     $this->byLinkText("Pétitionnaire Fréquent")->click();
73     $this->assertContains("Guichet Unique > Nouvelle Demande > Pétitionnaire Fréquent",
74     $this->byId("title")->text());
75     $this->verifyNoErrors();
76     // On vérifie le menu "Registre"
77     $this->byLinkText("Registre")->click();
78     $this->assertContains("Guichet Unique > Affichage Réglementaire > Registre",
79     $this->byId("title")->text());
80     $this->verifyNoErrors();
81     // On vérifie le menu "Attestation"
82     $this->byLinkText("Attestation")->click();
83     $this->assertContains("Guichet Unique > Affichage Réglementaire > Attestation",
84     $this->byId("title")->text());
85     $this->verifyNoErrors();
86     // On se déconnecte
87     $this->deconnect();
88     }
89     // Fonction public
90     public function test_01_OuvertureMenu() {
91     // Récupération des utilisateurs
92     $utilisateurs = $this->listUtlisateurs;
93     // Pour chaque utilisateur on lance le test
94     foreach ($utilisateurs as $utilisateur) {
95     //
96     $this->ouvertureMenu($utilisateur);
97     }
98     // On vérifie la déconnexion
99     $this->verifyDeconnect();
100     }
101    
102     /**
103     * Test l'ajout d'une demande et de création d'une nouvelle sequence
104     */
105     public function test_03_AjoutDemandeNouvelleSequence() {
106    
107     // On se connecte à l'application
108     $this->login("guichet", "guichet");
109     // On clique sur le menu "Nouveau Dossier"
110     $this->byLinkText("Nouveau Dossier")->click();
111     // On vérifie qu'il n'y ait pas d'erreur
112     $this->verifynoerrors();
113     // On vérifie le nom de l'onglet
114     $this->assertEquals("Demande", $this->byCssSelector("ul.ui-tabs-nav li.ui-state-default a")->text());
115     // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes"
116     $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByLabel("Permis de construire pour une maison individuelle et / ou ses annexes");
117     // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes"
118     $this->select($this->byId("demande_type"))->selectOptionByLabel("Dépôt Initial");
119     // Modification de la date
120     $this->byId("date_demande")->clear();
121     $this->byId("date_demande")->value("10/10/2014");
122     // On clique pour ajouter un pétitionnaire principale
123     $this->byId("add_petitionnaire_principal")->click();
124     // On remplit le champ
125     $this->select($this->byId("particulier_civilite"))->selectOptionByLabel("Monsieur");
126     // On remplit le champ
127     $this->byId("particulier_nom")->value("DURAND");
128     // On remplit le champ
129     $this->byId("particulier_prenom")->value("MICKAEL");
130     // On remplit le champ
131     $this->byId("particulier_date_naissance")->value("03/01/1956");
132     // On remplit le champ
133     $this->byId("particulier_commune_naissance")->value("LILLE");
134     // On remplit le champ
135     $this->byId("particulier_departement_naissance")->value("NORD");
136     // On remplit le champ
137     $this->byId("numero")->value("12");
138     // On remplit le champ
139     $this->byId("voie")->value("RUE DE LA LOI");
140     // On remplit le champ
141     $this->byId("complement")->value("APPT 12");
142     // On remplit le champ
143     $this->byId("localite")->value("MARSEILLE");
144     // On remplit le champ
145     $this->byId("code_postal")->value("13012");
146     // On remplit le champ
147     $this->byId("telephone_fixe")->value("0404040404");
148     // On clique sur ajouter
149     $this->byCssSelector("div#sformulaire form div.formControls input.om-button")->click();sleep(1);
150     // On vérifie qu'il n'y ait pas d'erreur
151     $this->verifynoerrors();
152     // On vérifie le message
153     $this->assertRegExp("/^[\s\S]*Vos modifications ont bien été enregistrées.[\s\S]*$/",$this->byCssSelector("#sousform-petitionnaire .message")->text());
154     // On clique sur le bouton retour
155     $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();sleep(1);
156     // On vérifie que le text est présent
157     $this->assertRegExp("/^[\s\S]*DURAND MICKAEL[\s\S]*$/",$this->byCssSelector("#petitionnaire_principal_delegataire .synthese_demandeur")->text());
158     // On clique sur ajouter
159     $this->byXPath("//input[@value='Ajouter']")->click();
160     // On vérifie qu'il n'y ait pas d'erreur
161     $this->verifynoerrors();
162     // On vérifie le message
163     $this->assertContains("Création du dossier d'autorisation n°",$this->byCssSelector(".message .text")->text());
164     // Récupération du numéro de dossier
165     preg_match('/(PC)[0-9 ]*(P0)/', $this->byCssSelector(".message .text")->text(), $dossier);
166     $dossier = $dossier[0];
167     // On se déconnecte
168     $this->logout();
169     }
170    
171     /**
172     * Test le Récépissé
173     */
174     public function test_06_Recepisse() {
175    
176     // On se connecte à l'application
177     $this->login("guichet", "guichet");
178     // On clique sur le menu "Récépissé"
179     $this->byLinkText("Récépissé")->click();
180     // On vérifie qu'il n'y ait pas d'erreur
181     $this->verifynoerrors();
182     // On vérifie le nom de l'onglet
183     $this->assertEquals("Demande", $this->byCssSelector("ul.ui-tabs-nav li.ui-state-default a")->text());
184     // On clique sur "AT0130551200001P0"
185     $this->byLinkText("AT 013055 12 00001P0")->click();
186     // On vérifie qu'il n'y ait pas d'erreur
187     $this->verifynoerrors();
188     // Vérifie le fil d'Ariane
189     $this->assertEquals("Guichet Unique > Nouvelle Demande > Récépissé > AT 013055 12 00001P0", $this->byXPath("//div[3]/div/h2")->text());
190     // On vérifie que le text est présent
191     $this->assertRegExp("/^[\s\S]*Demande d'autorisation de construire, d'aménager ou de modifier un ERP[\s\S]*$/",$this->byCssSelector("BODY")->text());
192     // Le nom du pétitionnaire doit apparaître
193     $this->assertRegExp("/^[\s\S]*BERNARD LILIANE[\s\S]*$/",$this->byCssSelector("BODY")->text());
194     // On clique sur le lien
195     $this->byLinkText("Éditer le récépissé PDF")->click();sleep(5);
196     // Liste les fenêtres
197     $windows = $this->windowHandles();
198     // Change la fenêtre
199     $this->window($windows[1]);
200     // On vérifie qu'il n'y ait pas d'erreur
201     $this->verifynoerrors();
202     // On vérifie que le text est présent
203     $this->assertRegExp("/^[\s\S]*RECEPISSE DE DEPOT[\s\S]*$/",$this->source());
204     // On ferme la fenêtre
205     $this->closeWindow();
206     // On change le focus de la fenêtre
207     $this->window($windows[0]);
208     // On clique sur "Retour"
209     $this->byLinkText("Retour")->click();
210     // On vérifie qu'il n'y ait pas d'erreur
211     $this->verifynoerrors();
212     // On vérifie le nom de l'onglet
213     $this->assertEquals("Demande", $this->byCssSelector("ul.ui-tabs-nav li.ui-state-default a")->text());
214     // On se deconnecte
215     $this->logout();
216     }
217    
218     /**
219     * Test les pétitionnaires fréquents
220     */
221     public function test_07_PetitionnaireFrequent() {
222    
223     // On se connecte à l'application
224     $this->login("guichet", "guichet");
225     // On clique sur le menu "Nouveau Dossier"
226     $this->byLinkText("Nouveau Dossier")->click();
227     // On vérifie qu'il n'y ait pas d'erreur
228     $this->verifynoerrors();
229     // On vérifie le nom de l'onglet
230     $this->assertEquals("Demande", $this->byCssSelector("ul.ui-tabs-nav li.ui-state-default a")->text());
231     // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes"
232     $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByLabel("Permis de construire pour une maison individuelle et / ou ses annexes");
233     // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes"
234     $this->select($this->byId("demande_type"))->selectOptionByLabel("Dépôt Initial");
235     // On clique pour ajouter un pétitionnaire principale
236     $this->byId("add_petitionnaire_principal")->click();
237     // On remplit le champ
238     $this->byId("particulier_nom")->value("DURAND");
239     // On remplit le champ
240     $this->byId("particulier_prenom")->value("MICKAEL");
241     // On remplit le champ
242     $this->byId("particulier_date_naissance")->value("03/01/1956");
243     // On remplit le champ
244     $this->byId("particulier_commune_naissance")->value("LILLE");
245     // On remplit le champ
246     $this->byId("particulier_departement_naissance")->value("NORD");
247     // On remplit le champ
248     $this->byId("numero")->value("12");
249     // On remplit le champ
250     $this->byId("voie")->value("RUE DE LA LOI");
251     // On remplit le champ
252     $this->byId("complement")->value("APPT 12");
253     // On remplit le champ
254     $this->byId("localite")->value("MARSEILLE");
255     // On remplit le champ
256     $this->byId("code_postal")->value("13012");
257     // On remplit le champ
258     $this->byId("telephone_fixe")->value("0404040404");
259     // On sélectionne pétitionnaire fréquent
260     $this->byId("frequent")->click();
261     // On clique sur ajouter
262     $this->byCssSelector("div#sformulaire form div.formControls input.om-button")->click();sleep(1);
263     // On vérifie qu'il n'y ait pas d'erreur
264     $this->verifynoerrors();
265     // On vérifie le message
266     $this->assertRegExp("/^[\s\S]*Vos modifications ont bien été enregistrées.[\s\S]*$/",$this->byCssSelector("#sousform-petitionnaire .message")->text());
267     // On clique sur le bouton retour
268     $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();sleep(1);
269     // On vérifie que le text est présent
270     $this->assertRegExp("/^[\s\S]*DURAND MICKAEL[\s\S]*$/",$this->byCssSelector("#petitionnaire_principal_delegataire .synthese_demandeur")->text());
271     // On clique sur ajouter
272     $this->byXPath("//input[@value='Ajouter']")->click();
273     // On vérifie qu'il n'y ait pas d'erreur
274     $this->verifynoerrors();
275     // On vérifie le message
276     $this->assertRegExp("/^[\s\S]*Création du dossier d'autorisation n°[\s\S]*$/",$this->byCssSelector(".message")->text());
277     // On clique
278     $this->byCssSelector("a#link_demande_recepisse")->click();sleep(5);
279     // Liste les fenêtres
280     $windows = $this->windowHandles();
281     // Change la fenêtre
282     $this->window($windows[1]);
283     // On vérifie qu'il n'y ait pas d'erreur
284     $this->verifynoerrors();
285     // On vérifie que le text est présent
286     $this->assertRegExp("/^[\s\S]*RECEPISSE DE DEPOT[\s\S]*$/",$this->source());
287     // On ferme la fenêtre
288     $this->closeWindow();
289     // On change le focus de la fenêtre
290     $this->window($windows[0]);
291     // On clique sur le bouton retour
292     $this->byLinkText("Retour")->click();
293     // On vérifie qu'il n'y ait pas d'erreur
294     $this->verifynoerrors();
295     //On se déconnecte
296     $this->deconnect();
297    
298     //On se connecte en administrateur
299     $this->login("admin", "admin");
300     //On clique sur le menu guichet unique
301     $this->byLinkText("Guichet Unique")->click();
302     // On clique sur pétitionnaire fréquent
303     $this->byLinkText("Pétitionnaire Fréquent")->click();
304     // On vérifie qu'il n'y ait pas d'erreur
305     $this->verifynoerrors();
306     // On vérifie que le text est présent
307     $this->assertRegExp("/^[\s\S]*pétitionnaire fréquent[\s\S]*$/",$this->source());
308     // On lance une recherche simple
309     $this->byName("recherche")->value("*DUR");
310     $this->select($this->byName("selectioncol"))->selectOptionByLabel("nom");
311     // On clique sur recherche
312     $this->byName("s1")->click();
313     // On vérifie qu'il n'y ait pas d'erreur
314     $this->verifynoerrors();
315     // On vérifie que le text est présent
316     $this->assertRegExp("/^[\s\S]*DURAND MICKAEL[\s\S]*$/",$this->source());
317     // On clique sur le résultat
318     $this->byLinkText("DURAND MICKAEL")->click();
319     // On vérifie qu'il n'y ait pas d'erreur
320     $this->verifynoerrors();
321     // On vérifie que le text est présent
322     $this->assertRegExp("/^[\s\S]*RUE DE LA LOI[\s\S]*$/",$this->source());
323     // On marque le pétitionnaire comme non fréquent
324     $this->byId("action-form-petitionnaire_frequent-non_frequent")->click();
325     //On vérifie le message
326     $this->assertRegExp("/^[\s\S]*Mise à jour effectuée avec succès[\s\S]*$/",$this->byCssSelector("#tabs-1 .message")->text());
327     // On clique sur le bouton "Retour"
328     $this->byLinkText("Retour")->click();
329     // On vérifie qu'il n'y ait pas d'erreur
330     $this->verifynoerrors();
331     // On vérifie que le text est présent
332     $this->assertRegExp("/^[\s\S]*pétitionnaire fréquent[\s\S]*$/",$this->source());
333     $this->assertNotContains('DURAND MICKAEL', $this->source());
334     // On se déconnecte
335     $this->logout();
336     }
337    
338     /*
339     * Cette fonction va tester l'affectation automatique des instructeurs aux
340     * dossiers d'instruction.
341     * Quatre cas sont possibles :
342     * - Aucun instructeur ne correspond, ;
343     * - Un instructeur joker correspond, ;
344     * - Un instructeur correspond, .
345     */
346     function test_10_AffectationAutomatique(){
347    
348     // On se connecte à l'application
349     $this->login("guichet", "guichet");
350     //Ajout d'un dossier d'instructeur avec affectation d'aucun instructeur
351     $this->ajoutDossierAffectationAutomatique("801", "A", "0001", "Permis de construire comprenant ou non des démolitions", "Poly Com Marseille");
352    
353     //Ajout d'un dossier d'instructeur avec affectation d'un instructeur
354     //joker avec seulement le type de dossier d'autorisation détaillé de
355     //renseigné
356     $this->ajoutDossierAffectationAutomatique("806", "A", "0001", "Permis de construire pour une maison individuelle et / ou ses annexes", "Louis Laurent");
357    
358     //Ajout d'un dossier d'instructeur avec affectation du seul instructeur
359     //correspondant parfaitement aux critères
360     $this->ajoutDossierAffectationAutomatique("801", "A", "0001", "Permis de construire pour une maison individuelle et / ou ses annexes", "Pierre Martin");
361     // On se déconnecte
362     $this->logout();
363     }
364    
365     /**
366     * Ajoute un dossier d'instruction
367     * @param string $reference_cadastrale_quartier Le quartier de la référence
368     * cadastrale du dossier
369     * @param string $reference_cadastrale_section La section de la référence
370     * cadastrale du dossier
371     * @param string $reference_cadastrale_parcelle La parcelle de la référence
372     * cadastrale du dossier
373     * @param string $datd dossier d'autorisation type détaillé
374     * @param string $instructeur le nom de l'instructeur
375     *
376     * @return boolean
377     */
378     function ajoutDossierAffectationAutomatique($reference_cadastrale_quartier,
379     $reference_cadastrale_section, $reference_cadastrale_parcelle,$datd,
380     $instructeur){
381    
382     //On affiche le tableau de bord
383     $this->byLinkText("Tableau de bord")->click();
384     // On clique sur le menu "Nouveau Dossier"
385     $this->byLinkText("Nouveau Dossier")->click();
386     // On vérifie qu'il n'y ait pas d'erreur
387     $this->verifynoerrors();
388     // On vérifie le nom de l'onglet
389     $this->assertEquals("Demande", $this->byCssSelector("ul.ui-tabs-nav li.ui-state-default a")->text());
390     // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes"
391     $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByLabel($datd);
392     // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes"
393     $this->select($this->byId("demande_type"))->selectOptionByLabel("Dépôt Initial");
394     //On saisie les références cadastrales
395     $this->byCssSelector(".reference_cadastrale_custom_field:nth-child(1)")->value($reference_cadastrale_quartier);
396     $this->byCssSelector(".reference_cadastrale_custom_field:nth-child(2)")->value($reference_cadastrale_section);
397     $this->byCssSelector(".reference_cadastrale_custom_field:nth-child(3)")->value($reference_cadastrale_parcelle);
398 nhaye 3803 //On saisi l'adresse
399     $this->byId("terrain_adresse_voie_numero")->value("0075");
400     $this->byId("terrain_adresse_voie")->value("TRA DE LA DOMINIQUE");
401     $this->byId("terrain_adresse_code_postal")->value("13011");
402     $this->byId("terrain_adresse_localite")->value("MARSEILLE");
403    
404 mbroquet 3730 // On clique pour ajouter un pétitionnaire principale
405     $this->byId("add_petitionnaire_principal")->click();
406     // On remplit le champ
407     $this->byId("particulier_nom")->value("DURAND");
408     // On remplit le champ
409     $this->byId("particulier_prenom")->value("MICKAEL");
410     // On remplit le champ
411     $this->byId("particulier_date_naissance")->value("03/01/1956");
412     // On remplit le champ
413     $this->byId("particulier_commune_naissance")->value("LILLE");
414     // On remplit le champ
415     $this->byId("particulier_departement_naissance")->value("NORD");
416     // On remplit le champ
417     $this->byId("numero")->value("12");
418     // On remplit le champ
419     $this->byId("voie")->value("RUE DE LA LOI");
420     // On remplit le champ
421     $this->byId("complement")->value("APPT 12");
422     // On remplit le champ
423     $this->byId("localite")->value("MARSEILLE");
424     // On remplit le champ
425     $this->byId("code_postal")->value("13012");
426     // On remplit le champ
427     $this->byId("telephone_fixe")->value("0404040404");
428     // On clique sur ajouter
429     $this->byCssSelector("div#sformulaire form div.formControls input.om-button")->click();sleep(1);
430     // On vérifie qu'il n'y ait pas d'erreur
431     $this->verifynoerrors();
432     // On vérifie le message
433     $this->assertRegExp("/^[\s\S]*Vos modifications ont bien été enregistrées.[\s\S]*$/",$this->byCssSelector("#sousform-petitionnaire .message")->text());
434     // On clique sur le bouton retour
435     $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();sleep(1);
436     // On vérifie que le text est présent
437     $this->assertRegExp("/^[\s\S]*DURAND MICKAEL[\s\S]*$/",$this->byCssSelector("#petitionnaire_principal_delegataire .synthese_demandeur")->text());
438     // On clique sur ajouter
439     $this->byXPath("//input[@value='Ajouter']")->click();
440     // On vérifie qu'il n'y ait pas d'erreur
441     $this->verifynoerrors();
442     // On vérifie le message
443     $this->assertRegExp("/^[\s\S]*Création du dossier d'autorisation n°[\s\S]*$/",$this->byCssSelector(".message")->text());
444     // On clique
445     $this->byCssSelector("a#link_demande_recepisse")->click();sleep(5);
446     // Liste les fenêtres
447     $windows = $this->windowHandles();
448     // Change la fenêtre
449     $this->window($windows[1]);
450     // On vérifie qu'il n'y ait pas d'erreur
451     $this->verifynoerrors();
452     // On vérifie que le text est présent
453     $this->assertRegExp("/^[\s\S]*Dossier suivi par ".$instructeur."[\s\S]*$/",$this->source());
454     // On ferme la fenêtre
455     $this->closeWindow();
456     // On change le focus de la fenêtre
457     $this->window($windows[0]);
458     }
459    
460     }
461    
462 nhaye 3803 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26