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

Annotation of /trunk/tests/testGuichetUnique.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4764 - (hide annotations)
Mon Jul 25 06:50:00 2016 UTC (8 years, 6 months ago) by fmichon
File size: 20163 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 les pétitionnaires fréquents
173     */
174     public function test_07_PetitionnaireFrequent() {
175    
176     // On se connecte à l'application
177     $this->login("guichet", "guichet");
178     // On clique sur le menu "Nouveau Dossier"
179     $this->byLinkText("Nouveau Dossier")->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 selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes"
185     $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByLabel("Permis de construire pour une maison individuelle et / ou ses annexes");
186     // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes"
187     $this->select($this->byId("demande_type"))->selectOptionByLabel("Dépôt Initial");
188     // On clique pour ajouter un pétitionnaire principale
189     $this->byId("add_petitionnaire_principal")->click();
190     // On remplit le champ
191     $this->byId("particulier_nom")->value("DURAND");
192     // On remplit le champ
193     $this->byId("particulier_prenom")->value("MICKAEL");
194     // On remplit le champ
195     $this->byId("particulier_date_naissance")->value("03/01/1956");
196     // On remplit le champ
197     $this->byId("particulier_commune_naissance")->value("LILLE");
198     // On remplit le champ
199     $this->byId("particulier_departement_naissance")->value("NORD");
200     // On remplit le champ
201     $this->byId("numero")->value("12");
202     // On remplit le champ
203     $this->byId("voie")->value("RUE DE LA LOI");
204     // On remplit le champ
205     $this->byId("complement")->value("APPT 12");
206     // On remplit le champ
207     $this->byId("localite")->value("MARSEILLE");
208     // On remplit le champ
209     $this->byId("code_postal")->value("13012");
210     // On remplit le champ
211     $this->byId("telephone_fixe")->value("0404040404");
212     // On sélectionne pétitionnaire fréquent
213     $this->byId("frequent")->click();
214     // On clique sur ajouter
215     $this->byCssSelector("div#sformulaire form div.formControls input.om-button")->click();sleep(1);
216     // On vérifie qu'il n'y ait pas d'erreur
217     $this->verifynoerrors();
218     // On vérifie le message
219     $this->assertRegExp("/^[\s\S]*Vos modifications ont bien été enregistrées.[\s\S]*$/",$this->byCssSelector("#sousform-petitionnaire .message")->text());
220     // On clique sur le bouton retour
221     $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();sleep(1);
222     // On vérifie que le text est présent
223     $this->assertRegExp("/^[\s\S]*DURAND MICKAEL[\s\S]*$/",$this->byCssSelector("#petitionnaire_principal_delegataire .synthese_demandeur")->text());
224     // On clique sur ajouter
225     $this->byXPath("//input[@value='Ajouter']")->click();
226     // On vérifie qu'il n'y ait pas d'erreur
227     $this->verifynoerrors();
228     // On vérifie le message
229     $this->assertRegExp("/^[\s\S]*Création du dossier d'autorisation n°[\s\S]*$/",$this->byCssSelector(".message")->text());
230     // On clique
231     $this->byCssSelector("a#link_demande_recepisse")->click();sleep(5);
232     // Liste les fenêtres
233     $windows = $this->windowHandles();
234     // Change la fenêtre
235     $this->window($windows[1]);
236     // On vérifie qu'il n'y ait pas d'erreur
237     $this->verifynoerrors();
238     // On vérifie que le text est présent
239     $this->assertRegExp("/^[\s\S]*RECEPISSE DE DEPOT[\s\S]*$/",$this->source());
240     // On ferme la fenêtre
241     $this->closeWindow();
242     // On change le focus de la fenêtre
243     $this->window($windows[0]);
244     // On clique sur le bouton retour
245     $this->byLinkText("Retour")->click();
246     // On vérifie qu'il n'y ait pas d'erreur
247     $this->verifynoerrors();
248     //On se déconnecte
249     $this->deconnect();
250    
251     //On se connecte en administrateur
252     $this->login("admin", "admin");
253     //On clique sur le menu guichet unique
254     $this->byLinkText("Guichet Unique")->click();
255     // On clique sur pétitionnaire fréquent
256     $this->byLinkText("Pétitionnaire Fréquent")->click();
257     // On vérifie qu'il n'y ait pas d'erreur
258     $this->verifynoerrors();
259     // On vérifie que le text est présent
260     $this->assertRegExp("/^[\s\S]*pétitionnaire fréquent[\s\S]*$/",$this->source());
261     // On lance une recherche simple
262     $this->byName("recherche")->value("*DUR");
263     $this->select($this->byName("selectioncol"))->selectOptionByLabel("nom");
264     // On clique sur recherche
265     $this->byName("s1")->click();
266     // On vérifie qu'il n'y ait pas d'erreur
267     $this->verifynoerrors();
268     // On vérifie que le text est présent
269     $this->assertRegExp("/^[\s\S]*DURAND MICKAEL[\s\S]*$/",$this->source());
270     // On clique sur le résultat
271     $this->byLinkText("DURAND MICKAEL")->click();
272     // On vérifie qu'il n'y ait pas d'erreur
273     $this->verifynoerrors();
274     // On vérifie que le text est présent
275     $this->assertRegExp("/^[\s\S]*RUE DE LA LOI[\s\S]*$/",$this->source());
276     // On marque le pétitionnaire comme non fréquent
277     $this->byId("action-form-petitionnaire_frequent-non_frequent")->click();
278     //On vérifie le message
279     $this->assertRegExp("/^[\s\S]*Mise à jour effectuée avec succès[\s\S]*$/",$this->byCssSelector("#tabs-1 .message")->text());
280     // On clique sur le bouton "Retour"
281     $this->byLinkText("Retour")->click();
282     // On vérifie qu'il n'y ait pas d'erreur
283     $this->verifynoerrors();
284     // On vérifie que le text est présent
285     $this->assertRegExp("/^[\s\S]*pétitionnaire fréquent[\s\S]*$/",$this->source());
286     $this->assertNotContains('DURAND MICKAEL', $this->source());
287     // On se déconnecte
288     $this->logout();
289     }
290    
291     /*
292     * Cette fonction va tester l'affectation automatique des instructeurs aux
293     * dossiers d'instruction.
294     * Quatre cas sont possibles :
295     * - Aucun instructeur ne correspond, ;
296     * - Un instructeur joker correspond, ;
297     * - Un instructeur correspond, .
298     */
299     function test_10_AffectationAutomatique(){
300    
301     // On se connecte à l'application
302     $this->login("guichet", "guichet");
303     //Ajout d'un dossier d'instructeur avec affectation d'aucun instructeur
304     $this->ajoutDossierAffectationAutomatique("801", "A", "0001", "Permis de construire comprenant ou non des démolitions", "Poly Com Marseille");
305    
306     //Ajout d'un dossier d'instructeur avec affectation d'un instructeur
307     //joker avec seulement le type de dossier d'autorisation détaillé de
308     //renseigné
309     $this->ajoutDossierAffectationAutomatique("806", "A", "0001", "Permis de construire pour une maison individuelle et / ou ses annexes", "Louis Laurent");
310    
311     //Ajout d'un dossier d'instructeur avec affectation du seul instructeur
312     //correspondant parfaitement aux critères
313     $this->ajoutDossierAffectationAutomatique("801", "A", "0001", "Permis de construire pour une maison individuelle et / ou ses annexes", "Pierre Martin");
314     // On se déconnecte
315     $this->logout();
316     }
317    
318     /**
319     * Ajoute un dossier d'instruction
320     * @param string $reference_cadastrale_quartier Le quartier de la référence
321     * cadastrale du dossier
322     * @param string $reference_cadastrale_section La section de la référence
323     * cadastrale du dossier
324     * @param string $reference_cadastrale_parcelle La parcelle de la référence
325     * cadastrale du dossier
326     * @param string $datd dossier d'autorisation type détaillé
327     * @param string $instructeur le nom de l'instructeur
328     *
329     * @return boolean
330     */
331     function ajoutDossierAffectationAutomatique($reference_cadastrale_quartier,
332     $reference_cadastrale_section, $reference_cadastrale_parcelle,$datd,
333     $instructeur){
334    
335     //On affiche le tableau de bord
336     $this->byLinkText("Tableau de bord")->click();
337     // On clique sur le menu "Nouveau Dossier"
338     $this->byLinkText("Nouveau Dossier")->click();
339     // On vérifie qu'il n'y ait pas d'erreur
340     $this->verifynoerrors();
341     // On vérifie le nom de l'onglet
342     $this->assertEquals("Demande", $this->byCssSelector("ul.ui-tabs-nav li.ui-state-default a")->text());
343     // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes"
344     $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByLabel($datd);
345     // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes"
346     $this->select($this->byId("demande_type"))->selectOptionByLabel("Dépôt Initial");
347     //On saisie les références cadastrales
348     $this->byCssSelector(".reference_cadastrale_custom_field:nth-child(1)")->value($reference_cadastrale_quartier);
349     $this->byCssSelector(".reference_cadastrale_custom_field:nth-child(2)")->value($reference_cadastrale_section);
350     $this->byCssSelector(".reference_cadastrale_custom_field:nth-child(3)")->value($reference_cadastrale_parcelle);
351 nhaye 3803 //On saisi l'adresse
352     $this->byId("terrain_adresse_voie_numero")->value("0075");
353     $this->byId("terrain_adresse_voie")->value("TRA DE LA DOMINIQUE");
354     $this->byId("terrain_adresse_code_postal")->value("13011");
355     $this->byId("terrain_adresse_localite")->value("MARSEILLE");
356    
357 mbroquet 3730 // On clique pour ajouter un pétitionnaire principale
358     $this->byId("add_petitionnaire_principal")->click();
359     // On remplit le champ
360     $this->byId("particulier_nom")->value("DURAND");
361     // On remplit le champ
362     $this->byId("particulier_prenom")->value("MICKAEL");
363     // On remplit le champ
364     $this->byId("particulier_date_naissance")->value("03/01/1956");
365     // On remplit le champ
366     $this->byId("particulier_commune_naissance")->value("LILLE");
367     // On remplit le champ
368     $this->byId("particulier_departement_naissance")->value("NORD");
369     // On remplit le champ
370     $this->byId("numero")->value("12");
371     // On remplit le champ
372     $this->byId("voie")->value("RUE DE LA LOI");
373     // On remplit le champ
374     $this->byId("complement")->value("APPT 12");
375     // On remplit le champ
376     $this->byId("localite")->value("MARSEILLE");
377     // On remplit le champ
378     $this->byId("code_postal")->value("13012");
379     // On remplit le champ
380     $this->byId("telephone_fixe")->value("0404040404");
381     // On clique sur ajouter
382     $this->byCssSelector("div#sformulaire form div.formControls input.om-button")->click();sleep(1);
383     // On vérifie qu'il n'y ait pas d'erreur
384     $this->verifynoerrors();
385     // On vérifie le message
386     $this->assertRegExp("/^[\s\S]*Vos modifications ont bien été enregistrées.[\s\S]*$/",$this->byCssSelector("#sousform-petitionnaire .message")->text());
387     // On clique sur le bouton retour
388     $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();sleep(1);
389     // On vérifie que le text est présent
390     $this->assertRegExp("/^[\s\S]*DURAND MICKAEL[\s\S]*$/",$this->byCssSelector("#petitionnaire_principal_delegataire .synthese_demandeur")->text());
391     // On clique sur ajouter
392     $this->byXPath("//input[@value='Ajouter']")->click();
393     // On vérifie qu'il n'y ait pas d'erreur
394     $this->verifynoerrors();
395     // On vérifie le message
396     $this->assertRegExp("/^[\s\S]*Création du dossier d'autorisation n°[\s\S]*$/",$this->byCssSelector(".message")->text());
397     // On clique
398     $this->byCssSelector("a#link_demande_recepisse")->click();sleep(5);
399     // Liste les fenêtres
400     $windows = $this->windowHandles();
401     // Change la fenêtre
402     $this->window($windows[1]);
403     // On vérifie qu'il n'y ait pas d'erreur
404     $this->verifynoerrors();
405     // On vérifie que le text est présent
406     $this->assertRegExp("/^[\s\S]*Dossier suivi par ".$instructeur."[\s\S]*$/",$this->source());
407     // On ferme la fenêtre
408     $this->closeWindow();
409     // On change le focus de la fenêtre
410     $this->window($windows[0]);
411     }
412    
413     }
414    
415 nhaye 3803 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26