/[openfoncier]/branches/3.14.x/tests/testInstruction.php
ViewVC logotype

Diff of /branches/3.14.x/tests/testInstruction.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1677 by fmichon, Mon Apr 15 12:30:11 2013 UTC revision 2877 by vpihour, Wed Mar 26 11:18:23 2014 UTC
# Line 12  require_once "base.php"; Line 12  require_once "base.php";
12  /**  /**
13   *   *
14   */   */
15  class Instruction extends BaseTestCase {  class Instruction extends Base2TestCase {
16    
17      private function login() {      // Liste des utilisateurs
18          // on commence par se connecter      var $listUtlisateurs = array(
19          $this->connect("instr", "instr");              array(
20          // On doit être connecté                  "login" => "instr",
21          $this->assertTrue($this->isTextPresent("Votre session est maintenant ouverte."));                  "mdp" => "instr"
22      }              ),
23                array(
24      private function logout() {                  "login" => "adminfonct",
25          // puis on se déconnecte                  "mdp" => "adminfonct"
26          $this->deconnect();              ),
27          // on doit avoir un message nous indiquant que la session est finie          );
         $this->assertTrue($this->isTextPresent("Votre session est maintenant terminée."));  
         // on ne doit plus avoir de lien de déconnexion  
         $this->assertFalse($this->isElementPresent("link=Déconnexion"));  
     }  
28    
29      /**      /**
30       * Ce test vise uniquement à vérifier que les écrans correspondant à chaque       * Ce test vise uniquement à vérifier que les écrans correspondant à chaque
31       * entrée de menu ne génère pas une erreur de base de données       * entrée de menu ne génère pas une erreur de base de données
32       */       */
33      public function testGeneral() {      // Fonction privé
34          //      private function ouvertureMenu($utilisateur) {
35          $this->login();          // On se connecte
36            $this->login($utilisateur["login"], $utilisateur["mdp"]);
37          //          // Ouvre le menu
38          $this->clickAndWait("link=mes encours");          $this->openMenu("Instruction", $utilisateur);
39          $this->verifyTextPresent("DI");          // On vérifie le menu ""
40          $this->verifyNoDatabaseError();          $this->byLinkText("Mes Encours")->click();
41          //          $this->assertContains("Instruction > Dossiers D'instruction",
42          $this->clickAndWait("link=tous les encours");              $this->byId("title")->text());
43          $this->verifyTextPresent("DI");          $this->verifyNoErrors();
44          $this->verifyNoDatabaseError();          // On vérifie le menu ""
45          //          $this->byLinkText("Tous Les Encours")->click();
46          $this->clickAndWait("link=mes clôturés");          $this->assertContains("Instruction > Dossiers D'instruction",
47          $this->verifyTextPresent("DI");              $this->byId("title")->text());
48          $this->verifyNoDatabaseError();          $this->verifyNoErrors();
49          //          // On vérifie le menu ""
50          $this->clickAndWait("link=tous les clôturés");          $this->byLinkText("Mes Clôturés")->click();
51          $this->verifyTextPresent("DI");          $this->assertContains("Instruction > Dossiers D'instruction",
52          $this->verifyNoDatabaseError();              $this->byId("title")->text());
53          //          $this->verifyNoErrors();
54          $this->clickAndWait("link=recherche");          // On vérifie le menu ""
55          $this->verifyTextPresent("DI");          $this->byLinkText("Tous Les Clôturés")->click();
56          $this->verifyNoDatabaseError();          $this->assertContains("Instruction > Dossiers D'instruction",
57          //              $this->byId("title")->text());
58          $this->clickAndWait("link=dossiers a qualifier");          $this->verifyNoErrors();
59          $this->verifyTextPresent("dossier");          // On vérifie le menu ""
60          $this->verifyNoDatabaseError();          $this->byLinkText("Recherche")->click();
61          //          $this->assertContains("Instruction > Dossiers D'instruction",
62          $this->clickAndWait("link=Mes retours");              $this->byId("title")->text());
63          $this->verifyTextPresent("dossier");          $this->verifyNoErrors();
64          $this->verifyNoDatabaseError();          // On vérifie le menu ""
65          //          $this->byLinkText("Dossiers À Qualifier")->click();
66          $this->clickAndWait("link=Tous les retours");          $this->assertContains("Instruction > Qualification > Dossiers À Qualifier",
67          $this->verifyTextPresent("dossier");              $this->byId("title")->text());
68          $this->verifyNoDatabaseError();          $this->verifyNoErrors();
69          //          // On vérifie le menu ""
70          $this->clickAndWait("link=Mes messages");          $this->byLinkText("Architecte Fréquent")->click();
71          $this->verifyTextPresent("dossier");          $this->assertContains("Instruction > Qualification > Architecte Fréquent",
72          $this->verifyNoDatabaseError();              $this->byId("title")->text());
73          //          $this->verifyNoErrors();
74          $this->clickAndWait("link=Tous les messages");          // On vérifie le menu ""
75          $this->verifyTextPresent("dossier");          $this->byLinkText("Mes Retours")->click();
76          $this->verifyNoDatabaseError();          $this->assertContains("Instruction > Consultations > Mes Retours",
77          //              $this->byId("title")->text());
78          $this->clickAndWait("css=a.commission_mes_retours-16");          $this->verifyNoErrors();
79          $this->verifyTextPresent("dossier");          // On vérifie le menu ""
80          $this->verifyNoDatabaseError();          $this->byLinkText("Tous Les Retours")->click();
81          //          $this->assertContains("Instruction > Consultations > Tous Les Retours",
82          $this->clickAndWait("css=a.commission_tous_retours-16");              $this->byId("title")->text());
83          $this->verifyTextPresent("dossier");          $this->verifyNoErrors();
84          $this->verifyNoDatabaseError();          // On vérifie le menu ""
85            $this->byLinkText("Mes Messages")->click();
86          //          $this->assertContains("Instruction > Messages > Mes Messages",
87                $this->byId("title")->text());
88            $this->verifyNoErrors();
89            // On vérifie le menu ""
90            $this->byLinkText("Tous Les Messages")->click();
91            $this->assertContains("Instruction > Messages > Tous Les Messages",
92                $this->byId("title")->text());
93            $this->verifyNoErrors();
94            // On vérifie le menu ""
95            $this->byCssSelector("a.commission_mes_retours-16")->click();
96            $this->assertContains("Instruction > Commissions > Mes Retours",
97                $this->byId("title")->text());
98            $this->verifyNoErrors();
99            // On vérifie le menu ""
100            $this->byCssSelector("a.commission_tous_retours-16")->click();
101            $this->assertContains("Instruction > Commissions > Tous Les Retours",
102                $this->byId("title")->text());
103            $this->verifyNoErrors();
104            // On se déconnecte
105            $this->deconnect();
106        }
107        // Fonction public
108        public function test01OuvertureMenu() {
109            // Récupération des utilisateurs
110            $utilisateurs = $this->listUtlisateurs;
111            // Pour chaque utilisateur on lance le test
112            foreach ($utilisateurs as $utilisateur) {
113                //
114                $this->ouvertureMenu($utilisateur);
115            }
116            // On vérifie la déconnexion
117            $this->verifyDeconnect();
118        }
119        
120        /**
121         *
122         */
123        public function test_02_visualisation_di_et_da_par_l_instructeur_en_charge() {
124            
125            // On se connecte en tant que "instr"
126            $this->login("instr", "instr");
127            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
128            $this->verifyNoErrors();
129            // On clique sur le lien "Mes encours" dans le menu
130            $this->byLinkText("Mes Encours")->click();
131            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
132            $this->verifyNoErrors();
133            // On clique sur le lien "AZ0130551200001P0" dans le tableau
134            $this->byLinkText("AZ 013055 12 00001P0")->click();
135            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
136            $this->verifyNoErrors();
137            // On vérifie que le breadcrumb est correct
138            $this->assertEquals("AZ 013055 12 00001P0", $this->byId("dossier_libelle")->text());
139            // On clique sur l'onglet "Instruction"
140            $this->byId("instruction")->click();
141            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
142            $this->verifyNoErrors();
143            // On clique sur l'onglet "Consultation(s)"
144            $this->byId("consultation")->click();
145            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
146            $this->verifyNoErrors();
147            // On clique sur l'onglet "Lot(s)"
148            $this->byId("lot")->click();
149            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
150            $this->verifyNoErrors();
151            // On clique sur l'onglet "Message(s)"
152            $this->byId("dossier_message")->click();
153            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
154            $this->verifyNoErrors();
155            // On clique sur l'onglet "Commission(s)"
156            $this->byId("dossier_commission")->click();
157            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
158            $this->verifyNoErrors();
159            // On clique sur l'onglet "Bloc-note"
160            $this->byId("blocnote")->click();
161            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
162            $this->verifyNoErrors();
163            // On clique sur l'onglet "DA"
164            $this->byId("dossier_autorisation")->click();
165            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
166            $this->verifyNoErrors();
167            // On clique sur le lien "AZ0130551200001" dans le tableau
168            $this->byLinkText("AZ 013055 12 00001")->click();
169            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
170            $this->verifyNoErrors();
171            // On vérifie que le breadcrumb est correct
172            $this->assertEquals("AZ 013055 12 00001", $this->byCssSelector(".form-content #dossier_autorisation_libelle")->text());
173            // On clique sur l'onglet "Dossier(s) d'instruction"
174            $this->byId("dossier_instruction")->click();
175            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
176            $this->verifyNoErrors();
177            // On clique sur le lien "AZ0130551200001P0" dans le tableau
178            $this->byLinkText("AZ 013055 12 00001P0")->click();
179            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
180            $this->verifyNoErrors();
181            // On vérifie que le breadcrumb est correct
182            $this->assertEquals("AZ 013055 12 00001P0", $this->byId("dossier_libelle")->text());
183            // On se déconnecte
184          $this->logout();          $this->logout();
185      }      }
186    
187      /**      /**
188       *       *
189       */       */
190      public function testConsultationDeServices() {      public function test_03_informations_du_widget_profil_instructeur() {
191          //          // On se connecte en tant que "instr"
192          $this->login();          $this->login("instr", "instr");
193            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
194            $this->verifyNoErrors();
195            // On vérifie que le titre du widget est correct
196            $this->assertEquals("Infos profil", $this->byCssSelector("#widget_2 .widget-header h3")->text());
197            // On vérifie que le profil est bon
198            $this->assertEquals("INSTRUCTEUR", $this->byCssSelector(".profil-infos-profil span.value")->text());
199            // On vérifie que le nom de l'instructeur affiché est le bon
200            $this->assertEquals("Louis Laurent", $this->byCssSelector(".profil-infos-nom span.value")->text());
201            // On vérifie que la division de l'instructeur affichée est la bonne
202            $this->assertEquals("H", $this->byCssSelector(".profil-infos-division span.value")->text());
203            // On se déconnecte
204            $this->byLinkText("Déconnexion")->click();
205            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
206            $this->verifyNoErrors();
207            // On se connecte en tant que "instr"
208            $this->login("instr1", "instr");
209            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
210            $this->verifyNoErrors();
211            // On vérifie que le titre du widget est correct
212            $this->assertEquals("Infos profil", $this->byCssSelector("#widget_2 .widget-header h3")->text());
213            // On vérifie que le profil est bon
214            $this->assertEquals("INSTRUCTEUR", $this->byCssSelector(".profil-infos-profil span.value")->text());
215            // On vérifie que le nom de l'instructeur affiché est le bon
216            $this->assertEquals("Martine Nadeau", $this->byCssSelector(".profil-infos-nom span.value")->text());
217            // On vérifie que la division de l'instructeur affichée est la bonne
218            $this->assertEquals("H", $this->byCssSelector(".profil-infos-division span.value")->text());
219            // On se déconnecte
220            $this->byLinkText("Déconnexion")->click();
221            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
222            $this->verifyNoErrors();
223            // On se connecte en tant que "instr"
224            $this->login("instr2", "instr");
225            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
226            $this->verifyNoErrors();
227            // On vérifie que le titre du widget est correct
228            $this->assertEquals("Infos profil", $this->byCssSelector("#widget_2 .widget-header h3")->text());
229            // On vérifie que le profil est bon
230            $this->assertEquals("INSTRUCTEUR", $this->byCssSelector(".profil-infos-profil span.value")->text());
231            // On vérifie que le nom de l'instructeur affiché est le bon
232            $this->assertEquals("Roland Richard", $this->byCssSelector(".profil-infos-nom span.value")->text());
233            // On vérifie que la division de l'instructeur affichée est la bonne
234            $this->assertEquals("J", $this->byCssSelector(".profil-infos-division span.value")->text());
235            // On se déconnecte
236            $this->logout();
237        }
238    
239          $this->clickAndWait("link=mes encours");      /**
240          // Accès au dossier en visualisation       * Ajout d'instructions par l'instructeur sur le dossier DP0130551200001P0
241          $this->clickAndWait("link=AZ0130551200001P0");       * Modification d'un événement
242          $this->verifyNoDatabaseError();       */
243          // Accès à l'onglet des consultations      public function test_04_ajout_instructions_par_instructeur() {
244          $this->click("id=consultation");          
245          $this->setSpeed('120');          // On se connecte en tant que "admin"
246          $this->verifyNoDatabaseError();          $this->login("admin", "admin");
247          //// Ajout d'une simple consultation          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
248          // On clique sur le bouton ajout          $this->verifyNoErrors();
249          $this->click("//div[@id='sousform-consultation']/table/thead/tr/th/a/span");          // On clique sur le lien "Paramétrage Dossiers" dans le menu
250          $this->verifyNoDatabaseError();          $this->byLinkText("Paramétrage Dossiers")->click();
251          // On sélectionne le service          // On clique sur le sousmenu "Événement"
252          $this->select("id=service", "label=1ER Maire 1er Secteur");          $this->byLinkText("Événement")->click();
253            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
254            $this->verifyNoErrors();
255            // On remplis le champs de recherche simple
256            $this->byCssSelector("input[name='recherche']")->value('CDEC');
257            // On clique sur le bouton recherche
258            $this->byCssSelector(".ui-button")->click();
259            // On clique sur le résultat
260            $this->byLinkText("CDEC majoration appel decision")->click();
261            // On clique sur le bouton "Modifier"
262            $this->byId('action-form-evenement-modifier')->click();
263            // On modifie le champ restriction avec des données erronées
264            $this->byId('restriction')->clear();
265            $this->byId('restriction')->value("date_evenement >= champ_errone + 1");
266            // On valide la modification
267            $this->byCssSelector("input[value='Modifier']")->click();
268            // On vérifie le message de validation
269            $this->assertRegExp("/^[\s\S]*Le champ champ_errone n'est pas utilisable pour le champ restriction[\s\S]*$/",$this->byCssSelector("#tabs-1 .message")->text());
270            // On modifie le champ restriction pour qu'il retourne une erreur au
271            // moment de l'ajout de l'instruction
272            $this->byId('restriction')->clear();
273            $this->byId('restriction')->value("date_evenement >= date_evenement + 1");
274            // On valide la modification
275            $this->byCssSelector("input[value='Modifier']")->click();
276            // On vérifie le message de validation
277            $this->assertRegExp("/^[\s\S]*Vos modifications ont bien été enregistrées.[\s\S]*$/",$this->byCssSelector("#tabs-1 .message")->text());
278            // On se déconnecte
279            $this->deconnect();
280            //{{{ Ajout de d'un nouveau dossier
281            // On se connecte à l'application
282            $this->login("guichet", "guichet");
283            //On clique sur le menu des instructions
284            $this->byLinkText("Nouveau Dossier")->click();
285            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
286            $this->verifyNoErrors();
287            //On ajoute un nouveau dossier
288            $dossier = $this->addDossierInstruction(1, 1);
289            // On se déconnecte
290            $this->deconnect();
291            //}}}
292            // On se connecte en tant que "instr"
293            $this->login("instr", "instr");
294            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
295            $this->verifyNoErrors();
296            // On clique sur le lien "Mes encours" dans le menu
297            $this->byLinkText("Mes Encours")->click();
298            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
299            $this->verifyNoErrors();
300            sleep(1);
301            // On clique sur le dossier dernièrement créé
302            $this->byLinkText($dossier)->click();
303            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
304            $this->verifyNoErrors();
305            // On clique sur l'onglet "Instruction"
306            $this->byId("instruction")->click();
307            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
308            $this->verifyNoErrors();
309            //Ajout d'une instruction simple
310            // On clique sur le lien d'ajout dans le tableau
311            $this->byCssSelector(".actions-max-1 a")->click();
312            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
313            $this->verifyNoErrors();
314            //On choisi l'événement CDEC majoration appel decision [majoration]
315            $this->select($this->byId("evenement"))->selectOptionByValue("22");
316            //On valide le formulaire
317            $this->byXPath("//input[@value='Ajouter']")->click();
318            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
319            $this->verifyNoErrors();
320            // On vérifie le mesage d'erreur
321            $this->assertRegExp('/.*Restriction non valide*/', $this->byCssSelector("#sousform-instruction .message .text")->text());
322            // On se déconnecte
323            $this->deconnect();
324            // On se connecte en tant que "admin"
325            $this->login("admin", "admin");
326            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
327            $this->verifyNoErrors();
328            // On clique sur le lien "Paramétrage Dossiers" dans le menu
329            $this->byLinkText("Paramétrage Dossiers")->click();
330            // On clique sur le sousmenu "Événement"
331            $this->byLinkText("Événement")->click();
332            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
333            $this->verifyNoErrors();
334            // On remplis le champs de recherche simple
335            $this->byCssSelector("input[name='recherche']")->value('CDEC');
336            // On clique sur le bouton recherche
337            $this->byCssSelector(".ui-button")->click();
338            // On clique sur le résultat
339            $this->byLinkText("CDEC majoration appel decision")->click();
340            // On clique sur le bouton "Modifier"
341            $this->byId('action-form-evenement-modifier')->click();
342            // On modifie le champ restriction pour qu'il ne retourne pas d'erreur
343            // au moment de l'ajout de l'instruction
344            $this->byId('restriction')->clear();
345            $this->byId('restriction')->value("date_evenement <= date_evenement + 1");
346            // On valide la modification
347            $this->byCssSelector("input[value='Modifier']")->click();
348            // On vérifie le message de validation
349            $this->assertRegExp("/^[\s\S]*Vos modifications ont bien été enregistrées.[\s\S]*$/",$this->byCssSelector("#tabs-1 .message")->text());
350            // On se déconnecte
351            $this->deconnect();
352    //
353            // On se connecte en tant que "instr"
354            $this->login("instr", "instr");
355            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
356            $this->verifyNoErrors();
357            // On clique sur le lien "Mes encours" dans le menu
358            $this->byLinkText("Mes Encours")->click();
359            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
360            $this->verifyNoErrors();
361            sleep(1);
362            // On clique sur le dossier dernièrement créé
363            $this->byLinkText($dossier)->click();
364            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
365            $this->verifyNoErrors();
366            // On clique sur l'onglet "Instruction"
367            $this->byId("instruction")->click();
368            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
369            $this->verifyNoErrors();
370            //Ajout d'une instruction simple
371            // On clique sur le lien d'ajout dans le tableau
372            $this->byCssSelector(".actions-max-1 a")->click();
373            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
374            $this->verifyNoErrors();
375            //On choisi l'événement CDEC majoration appel decision [majoration]
376            $this->select($this->byId("evenement"))->selectOptionByValue("22");
377            //On valide le formulaire
378            $this->byXPath("//input[@value='Ajouter']")->click();
379            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
380            $this->verifyNoErrors();
381            sleep(1);
382            $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text());
383            //On retourne sur le tableau d'instructions
384            $this->byCssSelector("#sousform-instruction .retour")->click();
385            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
386            $this->verifyNoErrors();
387            //On affiche l'instruction
388            $this->byLinkText("CDEC majoration appel decision")->click();
389            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
390            $this->verifyNoErrors();
391            //On vérifie que certains champs n'apparaissent pas
392            $this->assertFalse($this->byId("date_envoi_controle_legalite")->displayed());
393            $this->assertFalse($this->byId("date_retour_controle_legalite")->displayed());
394            //On retourne sur le tableau d'instructions
395            $this->byCssSelector("#sousform-instruction .retour")->click();
396            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
397            $this->verifyNoErrors();
398            //Ajout d'une instruction de type arrêté        
399            // On clique sur le lien d'ajout dans le tableau
400            $this->byCssSelector(".actions-max-1 a")->click();
401            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
402            $this->verifyNoErrors();
403            //On choisi l'événement "accepter un dossier sans réserve [acceptation]"
404            $this->select($this->byId("evenement"))->selectOptionByValue("81");
405            // On clique sur la bible
406            $this->byLinkText('bible')->click();
407            // On vérifie qu'il y est les enregistrments "V56" et "V64"
408            $this->assertRegExp('/^[\s\S]*V56[\s\S]*$/',
409                $this->byCssSelector("#tab-bible")->text());
410            $this->assertRegExp('/^[\s\S]*V64[\s\S]*$/',
411                $this->byCssSelector("#tab-bible")->text());
412            // On choisit plusieurs éléments
413            $this->byId('checkbox4')->click();
414            $this->byId('checkbox5')->click();
415          // On valide le formulaire          // On valide le formulaire
416          $this->click("//input[@value='Ajouter']");          $this->byXPath("//input[@value='Valider']")->click();
417          $this->verifyNoDatabaseError();          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
418          //          $this->verifyNoErrors();
419          $this->verifyTextPresent("Vos modifications ont bien été enregistrées.");          // On valide le formulaire
420            $this->byXPath("//input[@value='Ajouter']")->click();
421            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
422            $this->verifyNoErrors();
423            // On vérifie le message de validation
424            $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text());
425            //On retourne sur le tableau d'instructions
426            $this->byCssSelector("#sousform-instruction .retour")->click();
427            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
428            $this->verifyNoErrors();
429            // On clique sur l'instruction
430            $this->byLinkText("accepter un dossier sans réserve")->click();
431            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
432            $this->verifyNoErrors();
433            // On vérifie le contenu du champ "complément"
434            $this->assertContains("Vu l'avis favorable de l'Architecte des Bâtiments de France en date du", $this->byId("complement_om_html")->text());
435            $this->assertContains("Vu l'avis favorable avec prescriptions de la Direction Régionale des Affaires Culturelles en date du", $this->byId("complement_om_html")->text());
436            //On vérifie que certains champs apparaissent
437            $this->assertTrue($this->byClassName("libelle-date_envoi_controle_legalite")->displayed());
438            $this->assertTrue($this->byClassName("libelle-date_envoi_controle_legalite")->displayed());
439            // On se déconnecte
440            $this->deconnect();
441    
442            //{{{
443            // Ajout de d'un nouveau dossier pour test d'ajout d'événement d'instruction
444            // sans lettretype
445            // On se connecte à l'application
446            $this->login("guichet", "guichet");
447            //On clique sur le menu des instructions
448            $this->byLinkText("Nouveau Dossier")->click();
449            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
450            $this->verifyNoErrors();
451            //On ajoute un nouveau dossier
452            $dossier = $this->addDossierInstruction(1, 1, "Test instruction sans édition");
453            // On se déconnecte
454            $this->deconnect();
455            // On se connecte en tant que "instr"
456            $this->login("instr", "instr");
457            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
458            $this->verifyNoErrors();
459            // On clique sur le lien "Mes encours" dans le menu
460            $this->byLinkText("Mes Encours")->click();
461            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
462            $this->verifyNoErrors();
463            sleep(1);
464            // On clique sur le dossier dernièrement créé
465            $this->byLinkText($dossier)->click();
466            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
467            $this->verifyNoErrors();
468            // On clique sur l'onglet "Instruction"
469            $this->byId("instruction")->click();
470            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
471            $this->verifyNoErrors();
472            //Ajout d'une instruction de refus
473            // On clique sur le lien d'ajout dans le tableau
474            $this->byCssSelector(".actions-max-1 a")->click();
475            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
476            $this->verifyNoErrors();
477            //On choisi l'événement Refus HS
478            $this->select($this->byId("evenement"))->selectOptionByValue("94");
479            //On valide le formulaire
480            $this->byXPath("//input[@value='Ajouter']")->click();
481            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
482            $this->verifyNoErrors();
483            // On vérifie le mesage de validation
484            $this->assertRegExp(
485                '/.*Vos modifications ont bien été enregistrées.*/',
486                $this->byCssSelector("#sousform-instruction .message .text")->text()
487            );
488            //On retourne sur le tableau d'instructions
489            $this->byCssSelector("#sousform-instruction .retour")->click();
490            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
491            $this->verifyNoErrors();
492            // On clique sur l'instruction
493            $this->byLinkText("Changer l'autorité compétente 'commune état'")->click();
494            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
495            $this->verifyNoErrors();
496            // On vérifie qu'il n'y a pas d'action "Édition" dans le portlet d'actions
497            $test = preg_match(
498                '/Édition/i',
499                $this->byCssSelector("#sousform-instruction #portlet-actions")->text()
500            );
501            $this->assertTrue(!$test);
502            // On vérifie qu'il n'y a pas d'action "Finaliser le document" dans
503            // le portlet d'actions
504            $test = preg_match(
505                '/Finaliser le document/i',
506                $this->byCssSelector("#sousform-instruction #portlet-actions")->text()
507            );
508            $this->assertTrue(!$test);
509            // On se déconnecte
510            $this->logout();
511            // }}}
512        }
513    
514        /**
515         * Test le formulaire de la demande de type qui possède des select filtrés
516         */
517        public function test_05_ajout_lot() {
518            // On se connecte en tant que "instr"
519            $this->login("instr", "instr");
520            // On clique sur le lien "Mes encours" dans le menu
521            $this->byLinkText("Mes Encours")->click();
522            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
523            $this->verifyNoErrors();
524            // On clique sur le lien "AZ0130551200001P0" dans le tableau
525            $this->byLinkText("AZ 013055 12 00001P0")->click();
526            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
527            $this->verifyNoErrors();
528            // On clique sur l'onglet "Lot(s)"
529            $this->byId("lot")->click();
530            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
531            $this->verifyNoErrors();
532            // On clique sur le bouton d'ajout de lots
533            $this->byXPath("//div[@id='sousform-lot']/table/thead/tr/th/a/span")->click();
534            // Vérification des champs obligatoires
535            $this->byXPath("//input[@value='Ajouter']")->click();
536            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
537            $this->verifyNoErrors();
538            // On vérifie que le message de champ vide soit affiché
539            $this->assertRegExp('/.*SAISIE NON ENREGISTRÉE.*/', $this->byCssSelector("#sousform-lot .message .text")->text());
540            // Insertion d'un lot
541            $this->byId("libelle")->value("Lot n°1");
542            $this->byXPath("//input[@value='Ajouter']")->click();
543            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
544            $this->verifyNoErrors();
545            sleep(1);
546            // On retourne sur le tableau listant les lots
547            $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();
548            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
549            $this->verifyNoErrors();
550            // On clique sur le bouton d'ajout de lots
551            $this->byXPath("//div[@id='sousform-lot']/table/thead/tr/th/a/span")->click();
552            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
553            $this->verifyNoErrors();
554            // Insertion d'un second lot
555            $this->byId("libelle")->value("Lot n°2");
556            $this->byXPath("//input[@value='Ajouter']")->click();
557            sleep(1);
558            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
559            $this->verifyNoErrors();
560            // On retourne sur le tableau listant les lots
561            $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();
562            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
563            $this->verifyNoErrors();
564            // On se déconnecte
565            $this->logout();
566        }
567    //
568        /**
569         * Test du lien automatique entre choix autorité compétente dans DI et
570         * évènement d'instruction à créer
571         */
572        // Fonction privé
573        private function modification_autorite_competente($utilisateur) {
574            // On se connecte à l'application
575            $this->login($utilisateur["login"], $utilisateur["mdp"]);
576            // Ouvre le menu
577            $this->openMenu("Instruction", $utilisateur);
578            // On clique sur le lien "Mes encours" dans le menu
579            $this->byLinkText("Recherche")->click();
580            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
581            $this->verifyNoErrors();
582            // On clique sur le lien "AZ0130551200001P0" dans le tableau
583            $this->byLinkText("AZ 013055 12 00001P0")->click();
584            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
585            $this->verifyNoErrors();
586            // On clique sur l'onglet "Instruction"
587            $this->byId("instruction")->click();
588            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
589            $this->verifyNoErrors();
590            // On clique sur le bouton d'ajout de lots
591            $this->byXPath("//div[@id='sousform-instruction']/table/thead/tr/th/a/span")->click();
592            // Vérification des champs obligatoires
593            $this->byXPath("//input[@value='Ajouter']")->click();
594            sleep(1);
595            //On choisi un événement
596            $this->select($this->byId("evenement"))->selectOptionByValue("94");
597            // Validation du formulaire
598            $this->byXPath("//input[@value='Ajouter']")->click();
599            sleep(1);
600            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
601            $this->verifyNoErrors();
602            $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text());
603            $this->byCssSelector("form[name=\"f2\"] > a.retour")->click();
604            // Retour à l'onglet principal
605            $this->byId("main")->click();
606            $this->refresh();
607            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
608            $this->verifyNoErrors();
609            // On verifie que l'autorité compétente à changée.
610            $this->assertRegExp('/.*Commune pour état*/', $this->byCssSelector("#tabs-1 #autorite_competente")->text());
611            // On se déconnecte
612            $this->deconnect();
613    //
614            // On se connecte en tant que "admin"
615            $this->login("admin", "admin");
616            sleep(1);
617            $this->byLinkText("Instruction")->click();
618            // On clique sur le lien "Recherche" dans le menu
619            $this->byLinkText("Recherche")->click();
620            // On clique sur le lien "AZ0130551200001P0" dans le tableau
621            $this->byLinkText("AZ 013055 12 00001P0")->click();
622            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
623            $this->verifyNoErrors();
624            // On verifie que l'autorité compétente à changée
625            $this->assertEquals('Commune pour état', $this->byCssSelector("#tabs-1 #autorite_competente")->text());
626            // On clique sur l'onglet "Instruction"
627            $this->byId("instruction")->click();
628            $this->byLinkText("Changer l'autorité compétente 'commune état'")->click();
629            sleep(1);
630            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
631            $this->verifyNoErrors();
632            // On supprime l'element et on verifie le retour de l'autorité "commune"
633            $this->byId("action-sousform-instruction-supprimer")->click();
634            // On valide le formulaire
635            $this->byXPath("//input[@value='Supprimer']")->click();sleep(1);
636            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
637            $this->verifyNoErrors();
638          // On clique sur le bouton retour          // On clique sur le bouton retour
639          $this->click("css=form[name=\"f2\"] > div.formControls > a.retour");          $this->byLinkText("Retour")->click();
640                    // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
641          //// Ajout de plusieurs consultations          $this->verifyNoErrors();
642          // On clique sur le bouton ajout multiple          // On vérifie que l'événement d'instruction n'est plus dans le tableau
643          $this->click("//div[@id='sousform-consultation']/table/thead/tr/th/a[2]/span");          $this->assertNotContains("Changer l'autorité compétente 'commune état'", $this->byId("sousform-instruction")->text());
644          $this->verifyNoDatabaseError();          // Retour à l'onglet principal
645          // On sélectionne trois servcies          $this->byId("main")->click();
646          $this->click("id=t10_572_0_");          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
647          $this->click("id=t10_575_0_");          $this->verifyNoErrors();
648          $this->click("id=t10_584_0_");          // On rafraîchit la page
649          // On les ajoute à la sélection          $this->refresh();
650          $this->click("id=add-ser-them");          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
651            $this->verifyNoErrors();
652            // On verifie que l'autorité compétente à changée.
653            $this->assertEquals('Commune', $this->byCssSelector("#tabs-1 #autorite_competente")->text());
654            // On se déconnecte
655            $this->deconnect();
656        }
657        // Fonction public
658        public function test_06_modification_autorite_competente() {
659            // Récupération des utilisateurs
660            $utilisateurs = $this->listUtlisateurs;
661            // Pour chaque utilisateur on lance le test
662            foreach ($utilisateurs as $utilisateur) {
663                //
664                $this->modification_autorite_competente($utilisateur);
665            }
666            // On vérifie la déconnexion
667            $this->verifyDeconnect();
668        }
669    //
670        /**
671         * Test de l'ajout de données techniques au dossier
672         */
673        public function test_07_edition_donnees_techniques() {
674            // On se connecte en tant que "instr"
675            $this->login("admin", "admin");
676            sleep(1);
677            // Ouverture du menu de paramétrage des dossiers
678            $this->byLinkText("Paramétrage Dossiers")->click();
679            // Ouverture du menu des cerfa
680            $this->byLinkText("Cerfa")->click();
681            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
682            $this->verifyNoErrors();
683            // Ouverture d'un cerfa
684            $this->byLinkText("cerfa de test n°1")->click();
685            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
686            $this->verifyNoErrors();
687            // Modification du cerfa affiché
688            $this->byXPath("//div[@id='portlet-actions']/ul/li/a/span")->click();
689            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
690            $this->verifyNoErrors();
691            // Ajout de champs au formulaire des données techniques
692            $this->byXPath("//div[@id='form-content']/div[2]/fieldset/legend")->click();
693            $this->byId("terr_juri_titul")->click();
694            $this->byId("terr_juri_lot")->click();
695            $this->byId("terr_juri_zac")->click();
696            $this->byId("terr_juri_afu")->click();
697            $this->byId("terr_juri_pup")->click();
698            $this->byId("terr_juri_oin")->click();
699            $this->byId("terr_juri_desc")->click();
700            // Validation du formulaire
701            $this->byXPath("//input[@value='Modifier']")->click();
702            // Vérification des erreurs
703            $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector(".message .text")->text());
704            $this->byLinkText("Retour")->click();
705            // On se déconnecte
706            $this->deconnect();
707            // On se connecte en tant que "instr"
708            $this->login("instr", "instr");
709            // On clique sur le lien "Mes encours" dans le menu
710            $this->byLinkText("Mes Encours")->click();
711            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
712            $this->verifyNoErrors();
713            // On clique sur le lien "AZ0130551200001P0" dans le tableau
714            $this->byLinkText("AZ 013055 12 00001P0")->click();
715            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
716            $this->verifyNoErrors();
717            // On click sur le lien "Données techniques"
718            $this->byXPath("//div[@id='portlet-actions']/ul/li[2]/a/span")->click();
719            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
720            $this->verifyNoErrors();
721            sleep(1);
722            // Modification des données techniques
723            $this->byCssSelector("#sousform-donnees_techniques .edit-16")->click();
724            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
725            $this->verifyNoErrors();
726            sleep(1);
727            $this->assertRegExp('/^[\s\S]*Terrain[\s\S]*$/', $this->byCssSelector("#sformulaire #form-content legend")->text());
728            // Validation du formulaire
729            $this->byXPath("//input[@value='Modifier']")->click();
730            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
731            $this->verifyNoErrors();
732            $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-donnees_techniques .message .text")->text());
733            $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();
734            sleep(1);
735            // On se déconnecte
736            $this->logout();
737    //
738        }
739    //
740        /**
741         * Test un événement d'instruction qui a un événement "retour"
742         */
743        public function test_08_evenement_instruction_retour() {
744    //
745            // On se connecte à l'application en tant qu'administrateur
746            $this->login("admin", "admin");
747            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
748            $this->verifyNoErrors();
749    //
750            /** On ajoute une action "retour signature" **/
751            // On clique sur le menu "Paramétrage Dossiers"
752            $this->byLinkText("Paramétrage Dossiers")->click();
753            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
754            $this->verifyNoErrors();
755            // On clique sur le sous-menu "Action"
756            $this->byLinkText("Action")->click();
757            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
758            $this->verifyNoErrors();
759            // On clique sur le bouton "ajouter"
760            $this->byId("action-tab-action-corner-ajouter")->click();
761            // On remplis les champs
762            $this->byId("action")->value("retour signature");
763            $this->byId("libelle")->value("retour signature");
764            $this->byId("regle_etat")->value("etat");
765            $this->byId("regle_date_validite")->value("date_retour_signature + duree_validite");
766          // On valide le formulaire          // On valide le formulaire
767          $this->click("id=button_val");          $this->byXPath("//input[@value='Ajouter']")->click();
768          $this->verifyNoDatabaseError();          // On vérifie le message de validation
769          //          $this->assertContains("Vos modifications ont bien été enregistrées.", $this->byCssSelector(".message .text")->text());
770          $this->verifyTextPresent("3 service(s) sélectionné(s) dont 0 consultation(s) papier.");          /** Fin **/
771    //
772            /** On ajoute un événement "retour signature" **/
773            // On clique sur le sous-menu "Événement"
774            $this->byLinkText("Événement")->click();
775            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
776            $this->verifyNoErrors();
777            // On clique sur le bouton "ajouter"
778            $this->byId("action-tab-evenement-corner-ajouter")->click();
779            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
780            $this->verifyNoErrors();
781            // On remplis les champs
782            $this->byId("libelle")->value("retour signature");
783            $this->byId("retour")->click();
784            $this->select($this->byName("etats_depuis_lequel_l_evenement_est_disponible[]"))->clearSelectedOptions();;
785            $this->select($this->byName("etats_depuis_lequel_l_evenement_est_disponible[]"))->selectOptionByLabel("dossier accepter");
786            $this->select($this->byName("dossier_instruction_type[]"))->clearSelectedOptions();
787            $this->select($this->byName("dossier_instruction_type[]"))->selectOptionByLabel("PCI - P - Initial");
788            $this->select($this->byId("action"))->selectOptionByLabel("retour signature");
789            // On valide le formulaire
790            $this->byXPath("//input[@value='Ajouter']")->click();
791            // On vérifie le message de validation
792            $this->assertContains("Vos modifications ont bien été enregistrées.", $this->byCssSelector(".message .text")->text());
793            // On clique sur "Retour"
794            $this->byLinkText("Retour")->click();
795            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
796            $this->verifyNoErrors();
797            // On recherche l'événement "accepter un dossier sans réserve"
798            $this->byCssSelector("input[name='recherche']")->value('accepter un dossier sans réserve');
799            // On clique sur le bouton recherche
800            $this->byCssSelector(".ui-button")->click();
801            // On clique sur le résultat
802            $this->byLinkText("accepter un dossier sans réserve")->click();
803            // On clique sur le bouton "Modifier"
804            $this->byId('action-form-evenement-modifier')->click();
805            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
806            $this->verifyNoErrors();
807            // On sélectionne l'événement "retour" dans "evenement_retour_signature"
808            $this->select($this->byId("evenement_retour_signature"))->selectOptionByLabel("retour signature");
809            // On valide le formulaire
810            $this->byXPath("//input[@value='Modifier']")->click();
811            // On vérifie le message de validation
812            $this->assertContains("Vos modifications ont bien été enregistrées.", $this->byCssSelector(".message .text")->text());
813            /** Fin **/
814    //
815            /** On ajoute une durée de validité au type de DA PCI **/
816            // On clique sur le sous-menu "Type DA Détaillé"
817            $this->byLinkText("Type DA Détaillé")->click();
818            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
819            $this->verifyNoErrors();
820            // On clique sur le PCI
821            $this->byLinkText("PCI")->click();
822            // On clique sur le bouton "modifier"
823            $this->byId("action-form-dossier_autorisation_type_detaille-modifier")->click();
824            // On modifie la durée de validité
825            $this->byId("duree_validite_parametrage")->clear();
826            $this->byId("duree_validite_parametrage")->value("5");
827            // On valide le formulaire
828            $this->byXPath("//input[@value='Modifier']")->click();
829            // On vérifie le message de validation
830            $this->assertContains("Vos modifications ont bien été enregistrées.", $this->byCssSelector(".message .text")->text());
831            /** Fin **/
832    //
833            /** On instancie une nouvelle demande initial PCI **/
834            // On clique sur le menu "Guichet Unique"
835            $this->byLinkText("Guichet Unique")->click();
836            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
837            $this->verifyNoErrors();
838            // On clique sur le sous-menu "Nouveau Dossier"
839            $this->byLinkText("Nouveau Dossier")->click();
840            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
841            $this->verifyNoErrors();
842            // On selectionne le type de dossier d'autorisation détaillé "Permis de construire pour une maison individuelle et / ou ses annexes"
843            $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByLabel("Permis de construire pour une maison individuelle et / ou ses annexes");
844            // On selectionne le type de demande "Dépôt Initial"
845            $this->select($this->byId("demande_type"))->selectOptionByLabel("Dépôt Initial");
846            // On clique pour ajouter un pétitionnaire principale
847            $this->byId("add_petitionnaire_principal")->click();
848            // On remplit le champ
849            $this->byId("particulier_nom")->value("DURAND");
850            // On remplit le champ
851            $this->byId("particulier_prenom")->value("MICKAEL");
852            // On remplit le champ
853            $this->byId("particulier_date_naissance")->value("03/01/1956");
854            // On remplit le champ
855            $this->byId("particulier_commune_naissance")->value("LILLE");
856            // On remplit le champ
857            $this->byId("particulier_departement_naissance")->value("NORD");
858            // On remplit le champ
859            $this->byId("numero")->value("12");
860            // On remplit le champ
861            $this->byId("voie")->value("RUE DE LA LOI");
862            // On remplit le champ
863            $this->byId("complement")->value("APPT 12");
864            // On remplit le champ
865            $this->byId("localite")->value("MARSEILLE");
866            // On remplit le champ
867            $this->byId("code_postal")->value("13012");
868            // On remplit le champ
869            $this->byId("telephone_fixe")->value("0404040404");
870            // On clique sur ajouter
871            $this->byCssSelector("div#sformulaire form div.formControls input.om-button")->click();sleep(1);
872            // On vérifie le message
873            $this->assertContains("Vos modifications ont bien été enregistrées", $this->byCssSelector("#sousform-petitionnaire .message")->text());
874            // On clique sur le bouton retour
875            $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();sleep(1);
876            // On vérifie que le text est présent
877            $this->assertContains("DURAND MICKAEL",$this->byCssSelector("#petitionnaire_principal_delegataire .synthese_demandeur")->text());
878            // On clique sur ajouter
879            $this->byXPath("//input[@value='Ajouter']")->click();
880            // On vérifie le message
881            $this->assertContains("Création du dossier d'autorisation n°",$this->byCssSelector(".message .text")->text());
882            // Récupération du numéro de dossier
883            preg_match('/(PC)[0-9 ]*(P0)/', $this->byCssSelector(".message .text")->text(), $dossier);
884            $dossier = $dossier[0];
885            /** Fin **/
886    //
887            /** On ajoute une instruction de dossier accepter et on la finalise **/
888            // On clique sur le menu "Instruction"
889            $this->byLinkText("Instruction")->click();
890            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
891            $this->verifyNoErrors();
892            // On clique sur le sous-menu "Recherche"
893            $this->byLinkText("Recherche")->click();
894            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
895            $this->verifyNoErrors();
896            // On recherche le dossier crée
897            $this->byId("dossier")->value(str_replace(' ', '', $dossier));
898            // On clique sur le bouton recherche
899            $this->byId("adv-search-submit")->click();
900            // On clique sur le résultat
901            $this->byLinkText($dossier)->click();
902            // On clique sur l'onglet "Instruction"
903            $this->byId("instruction")->click();
904            // On ajoute un événement d'instruction
905            $this->byId("action-soustab-instruction-corner-ajouter")->click();
906            //On choisit l'instruction 'accepter un dossier sans réserve
907            //[acceptation]'
908            $this->select($this->byId("evenement"))->selectOptionByValue(81);
909            // On valide le formulaire
910            $this->byXPath("//input[@value='Ajouter']")->click();
911            // On vérifie le message
912            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message .text")->text());
913            // On clique sur le bouton "retour"
914            $this->byLinkText("Retour")->click();
915            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
916            $this->verifyNoErrors();
917            // On clique sur l'événement d'instruction "accepter un dossier sans réserve"
918            $this->byLinkText("accepter un dossier sans réserve")->click();
919            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
920            $this->verifyNoErrors();
921            // On valide l'instruction
922            $this->byId("action-sousform-instruction-finalisation")->click();
923            // On vérifie le message de validation
924            $this->assertContains("La finalisation du document s'est effectuée avec succès.",$this->byCssSelector(".message .text")->text());
925            // On clique sur le bouton "Retour"
926            $this->byLinkText("Retour")->click();
927            // On clique sur l'événement "accepter un dossier sans réserve"
928            $this->byLinkText("accepter un dossier sans réserve")->click();sleep(1);
929            // Récupération du numéro d'événement
930            $evenement = $this->byCssSelector("#instruction.field_value")->text();
931            /** Fin **/
932    //
933            /** On met à jour la date de retour signature **/
934            // Date de retour signature
935            $date_retour_signature = date("d/m/Y", mktime(0, 0, 0, date("m"), date("d")+5,  date("Y")));
936            // On clique sur le menu "Suivi"
937            $this->byLinkText("Suivi")->click();
938            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
939            $this->verifyNoErrors();
940            // On clique sur le sous-menu "Mise À Jour Des Dates"
941            $this->byLinkText("Mise À Jour Des Dates")->click();
942            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
943            $this->verifyNoErrors();
944            // On sélectionne "date de retour de signature + Envoi contrôle légalite"
945            $this->select($this->byId("type_mise_a_jour"))->selectOptionByLabel("date de retour de signature + Envoi contrôle légalite");
946            // On remplit à la date du jour + 5 jours
947            $this->byId("date")->value($date_retour_signature);
948            // On remplit le code barres de l'instruction
949            $this->byId("code_barres")->value("11".str_pad($evenement, 10, "0", STR_PAD_LEFT));
950            // On clique sur Valider
951            $this->byCssSelector("#suivi_mise_a_jour_des_dates_form div.formControls input.om-button")->click();sleep(1);
952            // On vérifie la synthèse avec le numéro du dossier et l'événement
953            $this->assertContains($dossier, $this->byId("dossier_libelle")->text());
954            $this->assertContains("accepter un dossier sans réserve", $this->byId("evenement")->text());
955            // On clique sur Valider
956            $this->byCssSelector("#suivi_mise_a_jour_des_dates_form div.formControls input.om-button")->click();
957            // On vérifie le message de validation
958            $this->assertContains("Saisie enregistrée",$this->byCssSelector(".message .text")->text());
959            /** Fin **/
960    //
961            /** Vérifie l'instruction "retour" et le DI **/
962            // Date de validité
963            $date_validite = $this->mois_date(date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")+5,  date("Y"))), 5, "+");
964            $date_validite = date("d/m/Y", strtotime($date_validite));
965            // On clique sur le menu "Instruction"
966            $this->byLinkText("Instruction")->click();
967            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
968            $this->verifyNoErrors();
969            // On clique sur le sous-menu "Recherche"
970            $this->byLinkText("Recherche")->click();
971            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
972            $this->verifyNoErrors();
973            // On recherche le dossier crée
974            $this->byId("dossier")->value(str_replace(' ', '', $dossier));
975            // On clique sur le bouton recherche
976            $this->byId("adv-search-submit")->click();
977            // On clique sur le résultat
978            $this->byLinkText($dossier)->click();
979            // On vérifie la date de validité mise à jour par l'action
980            $this->assertContains($date_validite, $this->byId("date_validite")->text());
981            // On clique sur l'onglet "Instruction"
982            $this->byId("instruction")->click();
983            // On clique sur l'instruction "retour signature"
984            $this->byLinkText("retour signature")->click();
985            // On contrôle la date de retour signature
986            $this->assertContains($date_retour_signature, $this->byId("date_retour_signature")->text());
987            /** Fin **/
988    //
989            // On se déconnecte
990            $this->logout();
991    //
992        }
993        //
994        /**
995         * Test la suppression d'un événement d'instruction lié à une demande qui ne
996         * créée pas de nouveau dossier d'instruction
997         */
998        public function test_09_suppression_evenement_demande(){
999            //
1000            //Ajout du paramétrage d'une nouvelle demande
1001            // On se connecte à l'application en tant qu'administrateur
1002            $this->login("admin", "admin");
1003            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1004            $this->verifyNoErrors();
1005            //On clique sur "Paramétrage dossier"
1006            $this->byLinkText("Paramétrage Dossiers")->click();
1007            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1008            $this->verifyNoErrors();
1009            //On clique sur Type
1010            $this->byLinkText("Type")->click();
1011            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1012            $this->verifyNoErrors();
1013            //On clique sur le "+" du tableau
1014            $this->byClassName("add-16")->click();
1015            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1016            $this->verifyNoErrors();
1017            //On saisit le type de la demande
1018            $this->byId("code")->value("test_09_suppression");
1019            $this->byId("libelle")->value("test_09_suppression");
1020            // On sélectionne le groupe 'Autorisation ADS'
1021            $this->select($this->byId("groupe"))->selectOptionByValue("1");sleep(1);
1022            // On sélectionne 'AZ (Demande d'autorisation spéciale de travaux dans
1023            // le périmètre d'une AVAP)'
1024            $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByValue("7");sleep(1);
1025            // On sélectionne la nature 'Dossier existant'
1026            $this->select($this->byId("demande_nature"))->selectOptionByValue("2");
1027            // On sélectionne l'état 'En cours'
1028            $this->select($this->byName("etats_dossier_autorisation_autorises[]"))->selectOptionByValue("1");
1029            // On sélectionne l'événement 'Defrichement soumis a enquete publique'
1030            $this->select($this->byId("evenement"))->selectOptionByValue("15");
1031            // On sélectionne la contrainte 'Avec récupération demandeur'
1032            $this->select($this->byId("contraintes"))->selectOptionByValue("avec_recup");
1033            // On clique sur le bouton ajouter
1034            $this->byXPath("//input[@value='Ajouter']")->click();
1035            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1036            $this->verifyNoErrors();
1037            // On vérifie que le type de demande a bien été ajouté
1038            $this->assertContains('Vos modifications ont bien été enregistrées', $this->byCssSelector(".message .text")->text());
1039            //On se déconnecte
1040            $this->deconnect();
1041            //
1042            //Création d'un nouveau dossier d'instruction
1043            // On se connecte à l'application
1044            $this->login("guichet", "guichet");
1045            //On clique sur "Dossier En Cours"
1046            $this->byLinkText("Dossier En Cours")->click();
1047            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1048            $this->verifyNoErrors();
1049            //On clique sur le dossier "AZ0130551200001P0"
1050            $this->byId("action-tab-demande_dossier_encours-left-consulter-AZ0130551200001P0")->click();
1051            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1052            $this->verifyNoErrors();
1053            //On sélectionne le type de la demande
1054            $this->select($this->byId("demande_type"))->selectOptionByLabel("test_09_suppression");sleep(1);
1055            // On clique sur le bouton ajouter
1056            $this->byXPath("//input[@value='Ajouter']")->click();
1057            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1058            $this->verifyNoErrors();
1059            // On vérifie que le type de demande a bien été ajouté
1060            $this->assertContains('Vos modifications ont bien été enregistrées', $this->byCssSelector(".message .text")->text());
1061            //On se déconnecte
1062            $this->deconnect();
1063            //
1064            //Suppression de l'événement d'instruction
1065            // On se connecte à l'application
1066            $this->login("admin", "admin");
1067            //On clique sur le menu "Instruction"
1068            $this->byLinkText("Instruction")->click();
1069            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1070            $this->verifyNoErrors();
1071            //On clique sur le menu "Recherche"
1072            $this->byLinkText("Recherche")->click();
1073            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1074            $this->verifyNoErrors();
1075            //On clique sur le dossier "AZ 013055 12 00001P0"
1076            $this->byLinkText("AZ 013055 12 00001P0")->click();
1077            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1078            $this->verifyNoErrors();
1079            //On clique sur l'onglet "Instruction"
1080            $this->byId("instruction")->click();
1081            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1082            $this->verifyNoErrors();
1083            //On clique sur l'instruction "Defrichement soumis a enquete publique"
1084            $this->byLinkText("Defrichement soumis a enquete publique")->click();
1085            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1086            $this->verifyNoErrors();
1087            //On définalise l'instruction
1088            $this->byClassName("definalise")->click();
1089            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1090            $this->verifyNoErrors();
1091            //On clique "Supprimer"
1092            $this->byCssSelector("#sousform-instruction .delete-16")->click();
1093            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1094            $this->verifyNoErrors();
1095            //On clique sur supprimer
1096            $this->byXPath("//input[@value='Supprimer']")->click();
1097            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1098            $this->verifyNoErrors();
1099            //On vérifie que lasuppression a été éffectuée
1100            $this->assertContains("La suppression a été correctement effectuée.",
1101                $this->byCssSelector("#sousform-instruction .message .text")->text());
1102            // On se déconnecte
1103            $this->logout();
1104        }
1105    //
1106        /**
1107         * Test sur les types d'éditions des consultations
1108         */
1109        function test_10_nouveau_type_edition_consultation(){
1110            //
1111            //On saisit un service de test        
1112            // On se connecte à l'application
1113            $this->login("admin", "admin");
1114            //On clique sur "Paramétrage"
1115            $this->byLinkText("Paramétrage")->click();
1116            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1117            $this->verifyNoErrors();
1118            //On clique sur "Service"
1119            $this->byLinkText("Service")->click();
1120            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1121            $this->verifyNoErrors();        
1122            //On clique sur le "+" du tableau
1123            $this->byClassName("add-16")->click();
1124            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1125            $this->verifyNoErrors();
1126            //On saisit les données du service
1127            $this->byId("abrege")->value("test_10");
1128            $this->byId("libelle")->value("test_10");
1129            $this->byId("consultation_papier")->click();
1130            $this->select($this->byId("edition"))->selectOptionByLabel("test_10");
1131            // On clique sur le bouton ajouter
1132            $this->byXPath("//input[@value='Ajouter']")->click();
1133            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1134            $this->verifyNoErrors();
1135            // On vérifie que le service a bien été ajouté
1136            $this->assertContains('Vos modifications ont bien été enregistrées', $this->byCssSelector(".message .text")->text());
1137            //On se déconnecte
1138            $this->deconnect();
1139            //
1140            //On ajoute une consultation sur un dossier et on vérifie l'édition
1141            // On se connecte à l'application
1142            $this->login("instr", "instr");
1143            //On clique sur "Recherche"
1144            $this->byLinkText("Recherche")->click();
1145            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1146            $this->verifyNoErrors();
1147            //On choisit le dossier "AZ 013055 12 00001P0"
1148            $this->byLinkText("AZ 013055 12 00001P0")->click();
1149            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1150            $this->verifyNoErrors();
1151            //On clique sur l'onglet "Consultation"
1152            $this->byId("consultation")->click();
1153            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1154            $this->verifyNoErrors();
1155            //On clique sur le "+" du tableau
1156            $this->byClassName("add-16")->click();
1157            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1158            $this->verifyNoErrors();
1159            //On saist une nouvelle consultation
1160            $this->select($this->byId("service"))->selectOptionByLabel("test_10");
1161            // On clique sur le bouton ajouter
1162            $this->byXPath("//input[@value='Ajouter']")->click();
1163            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1164            $this->verifyNoErrors();
1165            // On vérifie que la consultation a bien été ajoutée
1166            $this->assertContains('Vos modifications ont bien été enregistrées', $this->byCssSelector(".message .text")->text());
1167            //On clique sur retour
1168            $this->byCssSelector("#sousform-consultation .retour")->click();
1169            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1170            $this->verifyNoErrors();
1171            //On clique sur la consultation au service "test_10"
1172            $this->byLinkText("test_10")->click();
1173            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1174            $this->verifyNoErrors();
1175            //On affiche le PDF
1176            $this->byId("action-sousform-consultation-pdfetat")->click();sleep(5);
1177            // Liste les fenêtres
1178            $windows = $this->windowHandles();
1179            // Change la fenêtre
1180            $this->window($windows[1]);
1181            // On vérifie qu'il n'y ait pas d'erreur
1182            $this->verifynoerrors();
1183            // On vérifie que le text est présent
1184            $this->assertContains("test_10",$this->source());
1185            $this->assertNotContains("test_10_2",$this->source());
1186            // On ferme la fenêtre
1187            $this->closeWindow();
1188            // On change le focus de la fenêtre
1189            $this->window($windows[0]);
1190            //On se déconnecte
1191            $this->deconnect();
1192            //
1193            //On change l'édition
1194            // On se connecte à l'application
1195            $this->login("admin", "admin");
1196            //On clique sur "Paramétrage"
1197            $this->byLinkText("Paramétrage")->click();
1198            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1199            $this->verifyNoErrors();
1200            //On clique sur "Service"
1201            $this->byLinkText("Service")->click();
1202            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1203            $this->verifyNoErrors();
1204            //On cherche le service
1205            $this->byName("recherche")->value("test_10");
1206            //On valide
1207            $this->byName("s1")->click();
1208            //On clique sur le service test_10
1209            $this->byLinkText("test_10")->click();
1210            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1211            $this->verifyNoErrors();
1212            //On clique sur "Modifier" dans le portail d'action
1213            $this->byClassName("edit-16")->click();
1214            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1215            $this->verifyNoErrors();
1216            //On choisit une seconde édition
1217            $this->select($this->byId("edition"))->selectOptionByLabel("test_10_2");
1218            // On clique sur le bouton ajouter
1219            $this->byXPath("//input[@value='Modifier']")->click();
1220            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1221            $this->verifyNoErrors();
1222            // On vérifie que le service a bien été ajouté
1223            $this->assertContains('Vos modifications ont bien été enregistrées', $this->byCssSelector(".message .text")->text());
1224            //On se déconnecte
1225            $this->deconnect();
1226            //
1227            //On vérifie que c'est la bonne édition qui est affiché
1228            // On se connecte à l'application
1229            $this->login("instr", "instr");
1230            //On clique sur "Recherche"
1231            $this->byLinkText("Recherche")->click();
1232            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1233            $this->verifyNoErrors();
1234            //On choisit le dossier "AZ 013055 12 00001P0"
1235            $this->byLinkText("AZ 013055 12 00001P0")->click();
1236            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1237            $this->verifyNoErrors();
1238            //On clique sur l'onglet "Consultation"
1239            $this->byId("consultation")->click();
1240            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1241            $this->verifyNoErrors();
1242            //On clique sur la consultation au service "test_10"
1243            $this->byLinkText("test_10")->click();
1244            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1245            $this->verifyNoErrors();
1246            //on definalise la consultaion
1247            $this->byClassName("definalise")->click();
1248            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1249            $this->verifyNoErrors();
1250            //On vérifie que la consultation s'est bien définalisée
1251            $this->assertEquals('La definalisation du document s\'est effectuée avec succès.', $this->byCssSelector("#sousform-consultation .message .text")->text());sleep(10);
1252            //On affiche le PDF
1253            $this->byId("action-sousform-consultation-pdfetat")->click();sleep(5);
1254            // Liste les fenêtres
1255            $windows = $this->windowHandles();
1256            // Change la fenêtre
1257            $this->window($windows[1]);
1258            // On vérifie qu'il n'y ait pas d'erreur
1259            $this->verifynoerrors();
1260            // On vérifie que le text est présent
1261            $this->assertContains("test_10_2",$this->source());
1262            // On ferme la fenêtre
1263            $this->closeWindow();
1264            // On change le focus de la fenêtre
1265            $this->window($windows[0]);
1266            //
1267            // On se déconnecte
1268            $this->logout();
1269        }
1270    //
1271        /**
1272         * Test sur un événement non verrouillable
1273         */
1274        public function test_11_evenement_non_verrouillable(){
1275    //
1276            /* On crée une nouvelle demande initial */
1277            // On se connecte à l'application
1278            $this->login("guichet", "guichet");
1279            // On clique sur le menu "Nouveau Dossier"
1280            $this->byLinkText("Nouveau Dossier")->click();
1281            // On vérifie qu'il n'y ait pas d'erreur
1282            $this->verifynoerrors();
1283            // On vérifie le nom de l'onglet
1284            $this->assertEquals("Demande", $this->byCssSelector("ul.ui-tabs-nav li.ui-state-default a")->text());
1285            // On sélectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes"
1286            $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByLabel("Permis de construire pour une maison individuelle et / ou ses annexes");
1287            // On selectionne le label "Dépôt Initial"
1288            $this->select($this->byId("demande_type"))->selectOptionByLabel("Dépôt Initial");
1289            // On clique pour ajouter un pétitionnaire principale
1290            $this->byId("add_petitionnaire_principal")->click();
1291            // On remplit le champ
1292            $this->byId("particulier_nom")->value("DURAND");
1293            // On remplit le champ
1294            $this->byId("particulier_prenom")->value("MICKAEL");
1295            // On remplit le champ
1296            $this->byId("particulier_date_naissance")->value("03/01/1956");
1297            // On remplit le champ
1298            $this->byId("particulier_commune_naissance")->value("LILLE");
1299            // On remplit le champ
1300            $this->byId("particulier_departement_naissance")->value("NORD");
1301            // On remplit le champ
1302            $this->byId("numero")->value("12");
1303            // On remplit le champ
1304            $this->byId("voie")->value("RUE DE LA LOI");
1305            // On remplit le champ
1306            $this->byId("complement")->value("APPT 12");
1307            // On remplit le champ
1308            $this->byId("localite")->value("MARSEILLE");
1309            // On remplit le champ
1310            $this->byId("code_postal")->value("13012");
1311            // On remplit le champ
1312            $this->byId("telephone_fixe")->value("0404040404");
1313            // On clique sur ajouter
1314            $this->byCssSelector("div#sformulaire form div.formControls input.om-button")->click();sleep(1);
1315            // On vérifie qu'il n'y ait pas d'erreur
1316            $this->verifynoerrors();
1317            // On vérifie le message
1318            $this->assertRegExp("/^[\s\S]*Vos modifications ont bien été enregistrées.[\s\S]*$/",$this->byCssSelector("#sousform-petitionnaire .message")->text());
1319            // On clique sur le bouton retour
1320            $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();sleep(1);
1321            // On vérifie que le text est présent
1322            $this->assertRegExp("/^[\s\S]*DURAND MICKAEL[\s\S]*$/",$this->byCssSelector("#petitionnaire_principal_delegataire .synthese_demandeur")->text());
1323            // On clique sur ajouter
1324            $this->byXPath("//input[@value='Ajouter']")->click();
1325            // On vérifie qu'il n'y ait pas d'erreur
1326            $this->verifynoerrors();
1327            // On vérifie le message
1328            $this->assertRegExp("/^[\s\S]*Création du dossier d'autorisation n°[\s\S]*$/",$this->byCssSelector(".message")->text());
1329            // Récupération du numéro de dossier
1330            preg_match('/(PC)[0-9 ]*(P0)/', $this->byCssSelector(".message .text")->text(), $matches);
1331            $dossier_libelle = $matches[0];
1332            $dossier = str_replace(' ', '', $dossier_libelle);
1333            $dossier_dir = substr_replace($dossier, '.', -2, -3);
1334            // On clique
1335            $this->byCssSelector("a.lien")->click();sleep(5);
1336            // Liste les fenêtres
1337            $windows = $this->windowHandles();
1338            // Change la fenêtre
1339            $this->window($windows[1]);
1340            // On vérifie qu'il n'y ait pas d'erreur
1341            $this->verifynoerrors();
1342            // On vérifie que le text est présent
1343            $this->assertRegExp("/^[\s\S]*RECEPISSE DE DEPOT[\s\S]*$/",$this->source());
1344            // On ferme la fenêtre
1345            $this->closeWindow();
1346            // On change le focus de la fenêtre
1347            $this->window($windows[0]);
1348            // On clique sur le bouton retour
1349            $this->byLinkText("Retour")->click();
1350            // On vérifie qu'il n'y ait pas d'erreur
1351            $this->verifynoerrors();
1352            // On vérifie que le répertoire s'est crée
1353            $this->assertTrue(file_exists("../trs/numerisation/Todo/".$dossier_dir));
1354            // On se déconnecte
1355            $this->deconnect();
1356            /* Fin */
1357    //
1358            /* On accepte le dossier d'instruction et le finalise */
1359            // On se connecte à l'application
1360            $this->login("instr", "instr");
1361            // On clique sur le menu 'Recherche'
1362            $this->byLinkText("Recherche")->click();
1363            // On recherche le dossier crée
1364            $this->byId("dossier")->value($dossier);
1365            // On clique sur le bouton recherche
1366            $this->byId("adv-search-submit")->click();
1367            // On clique sur le résultat
1368            $this->byLinkText($dossier_libelle)->click();
1369            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1370            $this->verifyNoErrors();
1371            // On clique sur l'onglet "Instruction"
1372            $this->byId("instruction")->click();
1373            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1374            $this->verifyNoErrors();
1375            // On clique sur le lien d'ajout dans le tableau
1376            $this->byCssSelector(".actions-max-1 a")->click();
1377            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1378            $this->verifyNoErrors();
1379            //On choisit l'instruction 'accepter un dossier sans réserve
1380            //[acceptation]'
1381            $this->select($this->byId("evenement"))->selectOptionByValue(81);
1382            // On valide le formulaire
1383            $this->byXPath("//input[@value='Ajouter']")->click();
1384            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1385            $this->verifyNoErrors();
1386            sleep(1);
1387            $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text());
1388            // On retourne sur le tableau d'instructions
1389            $this->byCssSelector("#sousform-instruction .retour")->click();
1390            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1391            $this->verifyNoErrors();
1392            // On clique sur l'événement d'instruction "accepter un dossier sans réserve"
1393            $this->byLinkText("accepter un dossier sans réserve")->click();
1394            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1395            $this->verifyNoErrors();
1396            // On valide l'instruction (un événement verrouillable ne pourrait pas
1397            // être finalisé)
1398            $this->byId("action-sousform-instruction-finalisation")->click();
1399            // On vérifie le message de validation
1400            $this->assertContains("La finalisation du document s'est effectuée avec succès.",$this->byCssSelector(".message .text")->text());
1401            /* Fin */
1402        }
1403    //
1404        /**
1405         * Test que les données du dossier d'autorisation sont recopiés dans les
1406         * champs 'archive_' de l'événement d'instruction de la création du nouveau
1407         * dossier d'instruction
1408         */
1409        public function test_12_recopie_donnees_da_vers_nouveau_di(){
1410            //
1411            //{{{ Ajout de d'un nouveau dossier
1412            // On se connecte à l'application
1413            $this->login("guichet", "guichet");
1414            //On clique sur le menu des instructions
1415            $this->byLinkText("Nouveau Dossier")->click();
1416            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1417            $this->verifyNoErrors();
1418            //On ajoute un nouveau dossier
1419            $dossier = $this->addDossierInstruction( 1, 1);                
1420            // On se déconnecte
1421            $this->deconnect();
1422            //}}}
1423            //
1424            //{{{ Clôture du nouveau dossier
1425            // On se connecte à l'application
1426            $this->login("instr", "instr");
1427            //On clique sur le menu "Recherche"
1428            $this->byLinkText("Recherche")->click();
1429            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1430            $this->verifyNoErrors();
1431            // On recherche le dossier crée
1432            $this->byId("dossier")->value(str_replace(' ', '', $dossier));
1433            // On clique sur le bouton recherche
1434            $this->byId("adv-search-submit")->click();
1435            // On clique sur le résultat
1436            $this->byLinkText($dossier)->click();
1437            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1438            $this->verifyNoErrors();
1439            //On clique sur l'onglet "instruction"
1440            $this->byId("instruction")->click();
1441            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1442            $this->verifyNoErrors();
1443            // On ajoute une instruction
1444            $this->byCssSelector("#sousform-instruction .add-16")->click();
1445            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1446            $this->verifyNoErrors();
1447            //On choisit l'instruction 'accepter un dossier sans réserve
1448            //[acceptation]'
1449            $this->select($this->byId("evenement"))->selectOptionByValue(81);
1450            // On clique sur ajouter
1451            $this->byXPath("//input[@value='Ajouter']")->click();
1452            // On vérifie qu'il n'y ait pas d'erreur
1453            $this->verifynoerrors();
1454            // On vérifie le message
1455            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1456            //On rafraichit la page pour vérifier que le dossier est clôturé
1457            $this->refresh();
1458            $this->assertEquals("Favorable", $this->byId("avis_decision")->text());
1459            // On se déconnecte
1460            $this->deconnect();
1461            //}}}
1462            //
1463            //{{{ Ajout de l'action
1464            // On se connecte à l'application
1465            $this->login("admin", "admin");
1466            //On clique sur le menu "Paramétrage dossiers"
1467            $this->byLinkText("Paramétrage Dossiers")->click();
1468            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1469            $this->verifyNoErrors();
1470            //On clique sur le menu "Action"
1471            $this->byLinkText("Action")->click();
1472            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1473            $this->verifyNoErrors();
1474            //On clique sur le "+" du tableau
1475            $this->byClassName("add-16")->click();
1476            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1477            $this->verifyNoErrors();
1478            //On remplit la règle de calcul de la date de validité
1479            $this->byId("action")->value("test_12_recopie_donnees");
1480            $this->byId("libelle")->value("test_12_recopie_donnees");
1481            $this->byId("regle_date_validite")->value("archive_date_validite+12");
1482            // On clique sur ajouter
1483            $this->byXPath("//input[@value='Ajouter']")->click();
1484            // On vérifie qu'il n'y ait pas d'erreur
1485            $this->verifynoerrors();
1486            // On vérifie le message
1487            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1488            //}}}
1489            //
1490            //{{{ Ajout de l'événement
1491            //On clique sur le menu "Événement"
1492            $this->byLinkText("Événement")->click();
1493            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1494            $this->verifyNoErrors();
1495            //On clique sur le "+" du tableau
1496            $this->byClassName("add-16")->click();
1497            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1498            $this->verifyNoErrors();
1499            //On remplit l'événement qui va être ajouté avec la nouvelle demande
1500            $this->byId("libelle")->value("test_12_recopie_donnees");
1501            $this->select($this->byName("etats_depuis_lequel_l_evenement_est_disponible[]"))->selectOptionByValue("accepter");
1502            // On sélectionne PCI - P - Initial
1503            $this->select($this->byName("dossier_instruction_type[]"))->selectOptionByValue(1);
1504            $this->select($this->byName("action"))->selectOptionByLabel("test_12_recopie_donnees");
1505            // On clique sur ajouter
1506            $this->byXPath("//input[@value='Ajouter']")->click();
1507            // On vérifie qu'il n'y ait pas d'erreur
1508            $this->verifynoerrors();
1509            // On vérifie le message
1510            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1511            //}}}
1512            //
1513            //{{{ Ajout du type de dossier d'instruction
1514            //On clique sur le menu "Type DI"
1515            $this->byLinkText("Type DI")->click();
1516            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1517            $this->verifyNoErrors();
1518            //On clique sur le "+" du tableau
1519            $this->byClassName("add-16")->click();
1520            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1521            $this->verifyNoErrors();
1522            //On remplit le type de la demande
1523            $this->byId("code")->value("DT");
1524            $this->byId("libelle")->value("test_12_recopie_donnees");
1525            // On sélectionne PCI (Permis de construire pour une maison individuelle
1526            // et / ou ses annexes)
1527            $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByValue(1);sleep(1);
1528            $this->byId("suffixe")->click();
1529            // On clique sur ajouter
1530            $this->byXPath("//input[@value='Ajouter']")->click();
1531            // On vérifie qu'il n'y ait pas d'erreur
1532            $this->verifynoerrors();
1533            // On vérifie le message
1534            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1535            //}}}
1536            //
1537            //{{{ Ajout du type de la demande
1538            //On clique sur le menu "Type"
1539            $this->byLinkText("Type")->click();
1540            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1541            $this->verifyNoErrors();
1542            //On clique sur le "+" du tableau
1543            $this->byClassName("add-16")->click();
1544            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1545            $this->verifyNoErrors();
1546            //On remplit le type de la demande
1547            $this->byId("code")->value("test_12_recopie_donnees");
1548            $this->byId("libelle")->value("test_12_recopie_donnees");
1549            // On sélectionne Autorisation ADS
1550            $this->select($this->byId("groupe"))->selectOptionByValue(1);sleep(1);
1551            // On sélectionne PCI (Permis de construire pour une maison individuelle
1552            // et / ou ses annexes)
1553            $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByValue(1);
1554            // On sélectionne Dossier existant
1555            $this->select($this->byId("demande_nature"))->selectOptionByValue(2);
1556            // On sélectionne Accordé
1557            $this->select($this->byName("etats_dossier_autorisation_autorises[]"))->selectOptionByValue(2);
1558            $this->select($this->byId("dossier_instruction_type"))->selectOptionByLabel("PCI - test_12_recopie_donnees");
1559            $this->select($this->byId("evenement"))->selectOptionByLabel("test_12_recopie_donnees");
1560            // On clique sur ajouter
1561            $this->byXPath("//input[@value='Ajouter']")->click();
1562            // On vérifie qu'il n'y ait pas d'erreur
1563            $this->verifynoerrors();
1564            // On vérifie le message
1565            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1566            //On clique sur retour
1567            $this->byClassName("retour")->click();
1568            // On vérifie qu'il n'y ait pas d'erreur
1569            $this->verifynoerrors();
1570            //On saisit le libellé du type de la demande saisit
1571            $this->byName("recherche")->value("test_12_recopie_donnees");
1572            //On valide
1573            $this->byName("s1")->click();
1574            // On vérifie qu'il n'y ait pas d'erreur
1575            $this->verifynoerrors();
1576            //On clique sur le type de la demande
1577            $this->byLinkText("test_12_recopie_donnees")->click();
1578            // On vérifie qu'il n'y ait pas d'erreur
1579            $this->verifynoerrors();
1580            //On récupère l'identifiant du type de la demande
1581            $demande_type = $this->byId("demande_type")->text();
1582            // On se déconnecte
1583            $this->deconnect();
1584            //}}}
1585            //
1586            //{{{ Ajout de d'un nouveau dossier
1587            // On se connecte à l'application
1588            $this->login("guichet", "guichet");
1589            //On clique sur le menu des instructions
1590            $this->byLinkText("Dossier En Cours")->click();
1591            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1592            $this->verifyNoErrors();
1593            //On ajoute un nouveau dossier
1594            $dossier = $this->addDossierInstruction(1, $demande_type, "Test validité", 2, str_replace(" ", "", $dossier));                
1595            // On se déconnecte
1596            $this->deconnect();
1597            //}}}
1598            //
1599            //{{{ Vérification de la date de validité
1600            // On se connecte à l'application
1601            $this->login("instr", "instr");
1602            //On clique sur le menu "Recherche"
1603            $this->byLinkText("Recherche")->click();
1604            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1605            $this->verifyNoErrors();
1606            // On recherche le dossier crée
1607            $this->byId("dossier")->value(str_replace(' ', '', $dossier));
1608            // On clique sur le bouton recherche
1609            $this->byId("adv-search-submit")->click();
1610            // On clique sur le résultat
1611            $this->byLinkText($dossier)->click();
1612            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1613            $this->verifyNoErrors();
1614            //On vérifie la date de validité
1615            $date_validite = $this->mois_date(date("Y-m-d"), 12, "+");
1616            $date_validite = date("d/m/Y", strtotime($date_validite));
1617            $this->assertEquals($date_validite, $this->byId("date_validite")->text());
1618            // On se déconnecte
1619            $this->deconnect();
1620            //}}}
1621        }
1622        //
1623        /**
1624         * Test de la numérotation des DI successifs
1625         */
1626        function test_13_numerotation_dossier_instruction_successif(){
1627                //
1628            //{{{ Ajout de d'un nouveau dossier d'instruction P0
1629            // On se connecte à l'application
1630            $this->login("guichet", "guichet");
1631            // On clique sur le menu "Nouveau Dossier"
1632            $this->byLinkText("Nouveau Dossier")->click();
1633            // On vérifie qu'il n'y ait pas d'erreur
1634            $this->verifynoerrors();
1635            // On ajoute un nouveau dossier d'instruction
1636            $dossierP0 = str_replace(" ", "", trim($this->addDossierInstruction(1, 1)));
1637            // On se déconnecte
1638            $this->deconnect();
1639            //}}}
1640            //
1641            //{{{ Accord du P0 créé
1642            // On se connecte à l'application
1643            $this->login("instr", "instr");
1644            // On clique sur le menu "Recherche"
1645            $this->byLinkText("Recherche")->click();
1646            // On vérifie qu'il n'y ait pas d'erreur
1647            $this->verifynoerrors();
1648            // On saisit le numéro du dossier d'instruction
1649            $this->byId("dossier")->value($dossierP0);
1650            // On valide la recherche
1651            $this->byId("adv-search-submit")->click();
1652            // On vérifie qu'il n'y ait pas d'erreur
1653            $this->verifynoerrors();
1654            // On clique sur le dossier d'instruction
1655            $this->byId("action-tab-dossier_instruction-left-consulter-".$dossierP0)->click();
1656            // On vérifie qu'il n'y ait pas d'erreur
1657            $this->verifynoerrors();
1658            // On clique sur l'onglet instruction
1659            $this->byId("instruction")->click();
1660            // On vérifie qu'il n'y ait pas d'erreur
1661            $this->verifynoerrors();
1662            // On clique sur le + du tableau
1663            $this->byClassName("add-16")->click();
1664            // On vérifie qu'il n'y ait pas d'erreur
1665            $this->verifynoerrors();
1666            // On choisit l'événement n°81 accepter un dossier sans réserve
1667            $this->select($this->byName("evenement"))->selectOptionByValue(81);
1668            // On clique sur ajouter
1669            $this->byXPath("//input[@value='Ajouter']")->click();
1670            // On vérifie qu'il n'y ait pas d'erreur
1671            $this->verifynoerrors();
1672            // On vérifie que l'événement d'instruction s'est bien ajouté
1673            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector("#sousform-instruction .message")->text());
1674            // On se déconnecte
1675            $this->deconnect();
1676            //}}}
1677            //
1678            //{{{ Ajout d'un nouveau type de dossier d'instruction
1679            // On se connecte à l'application
1680            $this->login("admin", "admin");
1681            // On clique sur le menu "Paramétrage Dossiers"
1682            $this->byLinkText("Paramétrage Dossiers")->click();
1683            // On vérifie qu'il n'y ait pas d'erreur
1684            $this->verifynoerrors();
1685            // On clique sur le menu "Type DI"
1686            $this->byLinkText("Type DI")->click();
1687            // On vérifie qu'il n'y ait pas d'erreur
1688            $this->verifynoerrors();
1689            // On clique sur le + du tableau
1690            $this->byClassName("add-16")->click();
1691            // On vérifie qu'il n'y ait pas d'erreur
1692            $this->verifynoerrors();
1693            //On saisit les données
1694            $this->byId("code")->value("TN");
1695            $this->byId("libelle")->value("Test numérotation");
1696            $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByValue(1);
1697            $this->byId("suffixe")->click();
1698            // On clique sur ajouter
1699            $this->byXPath("//input[@value='Ajouter']")->click();
1700            // On vérifie qu'il n'y ait pas d'erreur
1701            $this->verifynoerrors();
1702            // On vérifie que le type de dossier d'instruction s'est bien ajouté
1703            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1704            //}}}
1705            //
1706            //{{{ Ajout d'un nouveau type de demande
1707            // On clique sur le menu "Type"
1708            $this->byLinkText("Type")->click();
1709            // On vérifie qu'il n'y ait pas d'erreur
1710            $this->verifynoerrors();
1711            // On clique sur le + du tableau
1712            $this->byClassName("add-16")->click();
1713            // On vérifie qu'il n'y ait pas d'erreur
1714            $this->verifynoerrors();
1715            //On saisit les données
1716            $this->byId("code")->value("TN");
1717            $this->byId("libelle")->value("Test numérotation");
1718            $this->select($this->byId("groupe"))->selectOptionByValue(1);
1719            sleep(1);
1720            $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByValue(1);
1721            $this->select($this->byId("demande_nature"))->selectOptionByValue(2);
1722            $this->select($this->byName("etats_dossier_autorisation_autorises[]"))->selectOptionByValue(2);
1723            $this->select($this->byId("dossier_instruction_type"))->selectOptionByLabel("PCI - Test numérotation");
1724            $this->select($this->byId("evenement"))->selectOptionByValue(1);
1725            // On clique sur ajouter
1726            $this->byXPath("//input[@value='Ajouter']")->click();
1727            // On vérifie qu'il n'y ait pas d'erreur
1728            $this->verifynoerrors();
1729            // On vérifie qu'il n'y ait pas d'erreur
1730            $this->verifynoerrors();
1731            // On vérifie que le type de dossier d'instruction s'est bien ajouté
1732            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1733            // On clique sur "Retour"
1734            $this->byClassName("retour")->click();
1735            // On vérifie qu'il n'y ait pas d'erreur
1736            $this->verifynoerrors();
1737            // On saisit le libelle du type de la demande nouvellement créée
1738            $this->byClassName("champFormulaire")->value("Test numérotation");
1739            // On valide la recherche
1740            $this->byName("f1")->submit();
1741            //On clique sur le type de la demande
1742            $this->byLinkText("Test numérotation")->click();
1743            // On vérifie qu'il n'y ait pas d'erreur
1744            $this->verifynoerrors();
1745            // On récupère l'identifiant
1746            $idDemandeType = trim($this->byId("demande_type")->text());
1747            // On se déconnecte
1748            $this->deconnect();
1749            //}}}
1750            //
1751            //{{{ Ajout de d'un nouveau dossier d'instruction avec le nouveau type
1752            //de dossier d'instruction
1753            // On se connecte à l'application
1754            $this->login("guichet", "guichet");
1755            // On clique sur le menu "Dossier En Cours"
1756            $this->byLinkText("Dossier En Cours")->click();
1757            // On vérifie qu'il n'y ait pas d'erreur
1758            $this->verifynoerrors();
1759            // On ajoute un nouveau dossier d'instruction
1760            $dossierTN01 = trim($this->addDossierInstruction(1, $idDemandeType, "Test nouveau DI", 3, $dossierP0));
1761            //On vérifie que le numéro du dossier d'instruction est celui attendu
1762            assert(preg_match('/(PC)[0-9 ]*(TN01)/', $dossierTN01) === 1);
1763            // On se déconnecte
1764            $this->deconnect();
1765            //}}}
1766            
1767                    
1768          // On vérifie que nous avons bien 4 consultations affichées      }
         $this->verifyTextPresent("1 - 4 enregistrement(s) sur 4");  
1769    
1770        /**
1771         * Test de la numérotation des DI successifs
1772         */
1773        function test_14_recalcul_donnees_DI_vers_DA(){
1774            //{{{ Ajout de d'un nouveau dossier
1775            // On se connecte à l'application
1776            $this->login("guichet", "guichet");
1777            //On clique sur le menu des instructions
1778            $this->byLinkText("Nouveau Dossier")->click();
1779            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1780            $this->verifyNoErrors();
1781            //On ajoute un nouveau dossier
1782            $dossier = $this->addDossierInstruction( 1, 1);                
1783            // On se déconnecte
1784            $this->deconnect();
1785            //}}}
1786            //
1787            //{{{
1788            // Mise à jour des données techniques
1789            // On se connecte à l'application
1790            $this->login("instr", "instr");
1791            //On clique sur le menu "Recherche"
1792            $this->byLinkText("Recherche")->click();
1793            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1794            $this->verifyNoErrors();
1795            // On recherche le dossier crée
1796            $this->byId("dossier")->value(str_replace(' ', '', $dossier));
1797            // On clique sur le bouton recherche
1798            $this->byId("adv-search-submit")->click();
1799            // On clique sur le résultat
1800            $this->byLinkText($dossier)->click();
1801            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1802            $this->verifyNoErrors();
1803            // Ouverture du formulaire des données techniques
1804            $this->byCssSelector("#formulaire .rediger-16")->click();
1805            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1806            $this->verifyNoErrors();
1807            // Modification des données techniques
1808            $this->byCssSelector("#sousform-donnees_techniques .edit-16")->click();
1809            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1810            $this->verifyNoErrors();
1811            sleep(1);
1812            // On déplie le fieldset Construire
1813            $this->byCssSelector("#fieldset-sousform-donnees_techniques-construire legend")->click();
1814            sleep(1);
1815            // On déplie le fieldset Destinations et surfaces des constructions
1816            $this->byCssSelector("#fieldset-sousform-donnees_techniques-destinations-et-surfaces-des-constructions legend")->click();
1817            sleep(1);
1818            //On remplit des données techniques
1819            $this->byId("su_cstr_shon1")->value("120");
1820            // On clique sur ajouter
1821            $this->byXPath("//input[@value='Modifier']")->click();
1822            // On vérifie qu'il n'y ait pas d'erreur
1823            $this->verifynoerrors();
1824            // On vérifie le message
1825            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1826            //On clique sur retour
1827            $this->byCssSelector("#sousform-donnees_techniques .retour")->click();
1828            //}}}
1829            //
1830            //{{{ Clôture du nouveau dossier
1831            //On clique sur le menu "Recherche"
1832            $this->byLinkText("Recherche")->click();
1833            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1834            $this->verifyNoErrors();
1835            // On recherche le dossier crée
1836            $this->byId("dossier")->value(str_replace(' ', '', $dossier));
1837            // On clique sur le bouton recherche
1838            $this->byId("adv-search-submit")->click();
1839            // On clique sur le résultat
1840            $this->byLinkText($dossier)->click();
1841            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1842            $this->verifyNoErrors();
1843            //On clique sur l'onglet "instruction"
1844            $this->byId("instruction")->click();
1845            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1846            $this->verifyNoErrors();
1847            // On ajoute une instruction
1848            $this->byCssSelector("#sousform-instruction .add-16")->click();
1849            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1850            $this->verifyNoErrors();
1851            //On choisit l'instruction 'accepter un dossier sans réserve
1852            //[acceptation]'
1853            $this->select($this->byId("evenement"))->selectOptionByValue(81);
1854            // On clique sur ajouter
1855            $this->byXPath("//input[@value='Ajouter']")->click();
1856            // On vérifie qu'il n'y ait pas d'erreur
1857            $this->verifynoerrors();
1858            // On vérifie le message
1859            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1860            //On rafraichit la page pour vérifier que le dossier est clôturé
1861            $this->refresh();
1862            $this->assertEquals("Favorable", $this->byId("avis_decision")->text());
1863            //}}}
1864          //          //
1865            //{{{ Vérification des données techniques dans la visu DA
1866            //On clique sur le menu "Recherche"
1867            $this->byLinkText("Recherche")->click();
1868            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1869            $this->verifyNoErrors();
1870            // On recherche le dossier crée
1871            $this->byId("dossier")->value(str_replace(' ', '', $dossier));
1872            // On clique sur le bouton recherche
1873            $this->byId("adv-search-submit")->click();
1874            // On clique sur le résultat
1875            $this->byLinkText($dossier)->click();
1876            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1877            $this->verifyNoErrors();
1878            //On clique sur l'onglet "DA"
1879            $this->byId("dossier_autorisation")->click();
1880            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1881            $this->verifyNoErrors();
1882            // On ajoute une instruction
1883            $this->byCssSelector("#sousform-dossier_autorisation .consult-16")->click();
1884            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1885            $this->verifyNoErrors();
1886            // Affichage des données techniques
1887            $this->byId("donnees_techniques_da")->click();
1888            sleep(1);
1889            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1890            $this->verifyNoErrors();
1891            // On déplie le fieldset Construire
1892            $this->byCssSelector("#fieldset-sousform-donnees_techniques-construire legend")->click();
1893            sleep(1);
1894            // On déplie le fieldset Destinations et surfaces des constructions
1895            $this->byCssSelector("#fieldset-sousform-donnees_techniques-destinations-et-surfaces-des-constructions legend")->click();
1896            sleep(1);
1897            $this->assertEquals("120", $this->byId("su_cstr_shon1")->text());
1898            //On clique sur retour
1899            $this->byCssSelector("#sousform-donnees_techniques .retour")->click();
1900            // On se déconnecte
1901          $this->logout();          $this->logout();
1902            //}}}
1903    
1904      }      }
1905        
1906        /*
1907         * Cette méthode teste l'envoi de message au référentiel ERP lors de l'ajout
1908         * d'instruction
1909         */
1910        public function test_15_envoi_de_message_erp(){
1911            
1912            // On se connecte en tant que "admin"
1913            $this->login("admin", "admin");
1914            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1915            $this->verifyNoErrors();
1916            //On clique sur Paramétrage Dossiers
1917            $this->byLinkText("Paramétrage Dossiers")->click();
1918            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1919            $this->verifyNoErrors();
1920            //On clique sur Service
1921            $this->byLinkText("Événement")->click();
1922            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1923            $this->verifyNoErrors();
1924            //Initialisation de la variable
1925            $evenements = array();
1926            //{{{ Ajout d'événements
1927            //On ajoute trois événements
1928            for ($i = 1 ; $i < 3 ; $i++){
1929                $evenements[] = $this->addEvenement("test_evenement_erp_".$i);
1930            }
1931            //}}}
1932            
1933            //{{{ On change trois variables erp_service_accessibilite,
1934            // erp_service_securite et erp_service_conformite
1935            //On clique sur Administration
1936            $this->byLinkText("Administration")->click();
1937            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1938            $this->verifyNoErrors();
1939            //On clique sur Paramètre
1940            $this->byLinkText("Paramètre")->click();
1941            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1942            $this->verifyNoErrors();
1943            $erp_evenement_accepter_sans_reserve = $this->changeParametreEvenementErp("erp_evenement_accepter_sans_reserve", $evenements[0]);
1944            $erp_evenement_refuser_dossier = $this->changeParametreEvenementErp("erp_evenement_refuser_dossier", $evenements[1]);
1945            $option_referentiel_arrete = $this->changeParametreEvenementErp("option_referentiel_arrete", 'true');
1946            ///}}}
1947            // On se déconnecte
1948            $this->deconnect();
1949            
1950            // On se connecte en tant que "guichet"
1951            $this->login("guichet", "guichet");
1952            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1953            $this->verifyNoErrors();
1954            //{{{On ajoute un dossier d'instruction
1955            //On clique sur Nouveau Dossier
1956            $this->byLinkText("Nouveau Dossier")->click();
1957            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1958            $this->verifyNoErrors();
1959            //On ajoute le dossier
1960            $dossier = $this->addDossierInstruction("1", "1");
1961            //}}}
1962            // On se déconnecte
1963            $this->deconnect();
1964            
1965            // On se connecte en tant que "instr"
1966            $this->login("instr", "instr");
1967            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1968            $this->verifyNoErrors();
1969            //{{{ On ajoute trois événement
1970            //On clique sur Nouveau Dossier
1971            $this->byLinkText("Recherche")->click();
1972            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1973            $this->verifyNoErrors();
1974            //On cherche le dossier d'instruction
1975            $this->byId("dossier")->value(str_replace(" ", "", $dossier));
1976            // On valide la recherche
1977            $this->byId("advanced-form")->submit();
1978            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1979            $this->verifyNoErrors();
1980            //On clique sur le dossier d'instruction
1981            $this->byLinkText($dossier)->click();
1982            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1983            $this->verifyNoErrors();
1984            //On clique sur Modifier
1985            $this->byClassName("edit-16")->click();
1986            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1987            $this->verifyNoErrors();
1988            //On clique sur erp
1989            $this->byId("erp")->click();
1990            //On valide le formulaire
1991            $this->byName("f1")->submit();
1992            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1993            $this->verifyNoErrors();
1994            // On vérifie le message
1995            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message .text")->text());
1996            //On clique sur l'onglet instruction
1997            $this->byId("instruction")->click();
1998            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1999            $this->verifyNoErrors();
2000            //On ajoute trois consultations
2001            foreach ($evenements as $value) {
2002                $this->addInstruction($value);
2003            }
2004    
2005            //On clique sur le + du tableau
2006            $this->byClassName("add-16")->click();
2007            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2008            $this->verifyNoErrors();
2009            //On choisit l'événement
2010            $this->select($this->byId("evenement"))->selectOptionByValue(81);
2011            //On valide le formulaire
2012            $this->byName("f2")->submit();
2013            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2014            $this->verifyNoErrors();
2015            // On vérifie que le message de validation est présent
2016            $this->assertContains('Vos modifications ont bien été enregistrées.', $this->byCssSelector("#sousform-instruction .message .text")->text());
2017            //On clique sur Retour
2018            $this->byLinkText("Retour")->click();
2019            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2020            $this->verifyNoErrors();
2021            //On clique sur l'instruction
2022            $this->byLinkText("accepter un dossier sans réserve")->click();
2023            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2024            $this->verifyNoErrors();
2025            //On récupère le numéro d'instruction
2026            $instruction = trim($this->byId("instruction")->text());
2027            //On la finalise
2028            $this->byClassName("finalise")->click();
2029            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2030            $this->verifyNoErrors();
2031            // On vérifie que le message de validation est présent
2032            $this->assertContains('La finalisation du document s\'est effectuée avec succès.', $this->byCssSelector("#sousform-instruction .message .text")->text());
2033            // On se déconnecte
2034            $this->deconnect();
2035            
2036            // On se connecte en tant que "admin"
2037            $this->login("admin", "admin");
2038            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2039            $this->verifyNoErrors();
2040            //On clique sur instruction
2041            $this->byLinkText("Instruction")->click();
2042            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2043            $this->verifyNoErrors();
2044            //On clique sur Recherche
2045            $this->byLinkText("Recherche")->click();
2046            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2047            $this->verifyNoErrors();
2048            //On cherche le dossier d'instruction
2049            $this->byId("dossier")->value(str_replace(" ", "", $dossier));
2050            // On valide la recherche
2051            $this->byId("advanced-form")->submit();
2052            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2053            $this->verifyNoErrors();
2054            //On clique sur le dossier d'instruction
2055            $this->byLinkText($dossier)->click();
2056            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2057            $this->verifyNoErrors();
2058            //On clique sur l'onglet instruction
2059            $this->byId("instruction")->click();
2060            //On clique sur l'instruction accepter un dossier sans réserve
2061            $this->byLinkText("accepter un dossier sans réserve")->click();
2062            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2063            $this->verifyNoErrors();
2064            //On la definalise
2065            $this->byClassName("definalise")->click();
2066            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2067            $this->verifyNoErrors();
2068            // On vérifie que le message de validation est présent
2069            $this->assertContains('La definalisation du document s\'est effectuée avec succès.', $this->byCssSelector("#sousform-instruction .message .text")->text());
2070            //On clique sur modifier
2071            $this->byCssSelector("#sousform-instruction .edit-16")->click();
2072            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2073            $this->verifyNoErrors();
2074            //On choisit un signataire Albert Dupont
2075            $this->select($this->byId("signataire_arrete"))->selectOptionByValue("1");
2076            //On remplit la date de retour sign
2077            $this->byId("date_retour_signature")->value(date('d/m/Y'));
2078            //On valide le formulaire
2079            $this->byName("f2")->submit();
2080            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2081            $this->verifyNoErrors();
2082            // On vérifie que le message de validation est présent
2083            $this->assertContains('Vos modifications ont bien été enregistrées.', $this->byCssSelector("#sousform-instruction .message .text")->text());
2084            // On vérifie que le message d'envoi est présent
2085            $this->assertContains('Le message a été transmis au référentiel arrêté.', $this->byCssSelector("#sousform-instruction .message .text")->text());
2086            //}}}
2087            
2088            // On se déconnecte
2089            $this->deconnect();
2090            
2091            // On se connecte en tant que "admin"
2092            $this->login("admin", "admin");
2093            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2094            $this->verifyNoErrors();
2095            //{{{ On remet les valeurs par défaut des paramètres
2096            //On clique sur Administration
2097            $this->byLinkText("Administration")->click();
2098            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2099            $this->verifyNoErrors();
2100            //On clique sur Paramètre
2101            $this->byLinkText("Paramètre")->click();
2102            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2103            $this->verifyNoErrors();
2104            $this->changeParametreEvenementErp("erp_evenement_accepter_sans_reserve", $erp_evenement_accepter_sans_reserve);
2105            $this->changeParametreEvenementErp("erp_evenement_refuser_dossier", $erp_evenement_refuser_dossier);
2106            $this->changeParametreEvenementErp("option_referentiel_arrete", $option_referentiel_arrete);
2107            //}}}
2108            
2109            //On se déconnecte
2110            $this->logout();
2111        }
2112        
2113        /**
2114         * Ajout d'un dossier d'instruction par le guichet unique
2115         *
2116         * @param int $dossier_autorisation_type_detaille L'identifiant du type détaillé
2117         *  de dossier d'autorisation
2118         * @param int $demande_type L'identifiant du type de la demande
2119         * @param int $type Type de la demande : nouveau dossier ou dossier existant
2120         * @return le numéro de dossier d'instruction qui vient d'être créé
2121         */
2122        public function addDossierInstruction($dossier_autorisation_type_detaille,
2123            $demande_type, $nom_petit = "test recopie",  $type = 1, $dossier = "" ){
2124            
2125            if ($type===1){
2126                //On choisit le type détaillé de dossier d'autorisation
2127                $this->select($this->byName("dossier_autorisation_type_detaille"))->selectOptionByValue($dossier_autorisation_type_detaille);
2128            }
2129            else {
2130                sleep(2);
2131                // On remplit le champ de recherche simple
2132                $this->byCssSelector("input[name='recherche']")->value(str_replace(' ', '', $dossier));
2133                // On clique sur le bouton recherche
2134                $this->byCssSelector(".ui-button")->click();sleep(1);
2135                // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2136                $this->verifyNoErrors();
2137                // On clique sur le résultat
2138                $this->byId("action-tab-demande_dossier_encours-left-consulter-".str_replace(' ', '', $dossier))->click();
2139                // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2140                $this->verifyNoErrors();
2141            }
2142            //On choisit le type de demande
2143            $this->select($this->byName("demande_type"))->selectOptionByValue($demande_type);
2144            //On clique sur "Saisir le pétitionnaire principal"
2145            $this->byId("add_petitionnaire_principal")->click();
2146            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2147            $this->verifyNoErrors();
2148            //On saisie le nom du pétitionnaire principal
2149            $this->byId("particulier_nom")->value($nom_petit);
2150            // On clique sur ajouter
2151            $this->byCssSelector("div#sformulaire form div.formControls input.om-button")->click();sleep(1);
2152            // On vérifie qu'il n'y ait pas d'erreur
2153            $this->verifynoerrors();
2154            //On vérifie que le pétitionnaire s'est bien ajouté
2155            // On vérifie le message
2156            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector("#sousform-petitionnaire .message")->text());
2157            // On clique sur le bouton retour
2158            $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();sleep(1);
2159            // On vérifie que le text est présent
2160            $this->assertContains($nom_petit,$this->byCssSelector("#petitionnaire_principal_delegataire .synthese_demandeur")->text());
2161            // On clique sur ajouter
2162            $this->byXPath("//input[@value='Ajouter']")->click();
2163            // On vérifie qu'il n'y ait pas d'erreur
2164            $this->verifynoerrors();
2165            // On vérifie le message
2166            $this->assertContains("Création du dossier",$this->byCssSelector(".message")->text());
2167            //On récupère le numéro de dossier d'instruction créé
2168            if ($type===1){
2169                preg_match('/(PC)[0-9 ]*(P0)/', $this->byCssSelector("#tabs-1 .message")->text(), $dossier);
2170            }
2171            elseif ($type===2){
2172                preg_match('/(PC)[0-9 ]*(DT01)/', $this->byCssSelector("#tabs-1 .message")->text(), $dossier);
2173            }
2174            else{
2175                preg_match('/(PC)[0-9 ]*[A-Z]*(0)[1-9]{1}/', $this->byCssSelector("#tabs-1 .message")->text(), $dossier);
2176            }
2177            return $dossier[0];
2178        }
2179    
2180        /*
2181         * Ajoute un événement
2182         * @param $libelle le libelle de l'événement
2183         *
2184         * @return l'identifiant de l'événement
2185         */
2186        private function addEvenement($libelle){
2187            
2188            //On clique sur le + du tableau
2189            $this->byClassName("add-16")->click();
2190            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2191            $this->verifyNoErrors();
2192            //On remplit les champs
2193            $this->byId("libelle")->value($libelle);
2194            $this->select($this->byName("etats_depuis_lequel_l_evenement_est_disponible[]"))
2195                ->selectOptionByValue("notifier");
2196            $this->select($this->byName("dossier_instruction_type[]"))
2197                ->selectOptionByValue("1");
2198            //On valide le formulaire
2199            $this->byName('f1')->submit();
2200            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2201            $this->verifyNoErrors();
2202            // On vérifie que le message de validation est présent
2203            $this->assertContains('Vos modifications ont bien été enregistrées.', $this->byCssSelector(".message .text")->text());
2204            //On clique sur le bouton retour
2205            $this->byLinkText("Retour")->click();
2206            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2207            $this->verifyNoErrors();
2208            //On saisie le nom due l'événement dans la recherche simple
2209            $this->byClassName("champFormulaire")->value($libelle);
2210            //On valide la recherche
2211            $this->byName('s1')->submit();
2212            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2213            $this->verifyNoErrors();
2214            //On clique sur l'événement
2215            $this->byLinkText($libelle)->click();
2216            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2217            $this->verifyNoErrors();
2218            //On récupère l'identifiant
2219            $evenementId = trim($this->byId("evenement")->text());
2220            //On clique sur le bouton Retour
2221            $this->byLinkText("Retour")->click();
2222            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2223            $this->verifyNoErrors();
2224            //On retourne l'identifiant
2225            return $evenementId;
2226        }
2227    
2228        /*
2229         * Modifie la valeur du paramètre du numéro de'événement pour le message ERP
2230         * @param string $parametre le libelle du paramètre
2231         * @param string $valeur la valeur à renseigner
2232         *
2233         * @return string la valeur précédente du paramètre
2234         */
2235        private function changeParametreEvenementErp($parametre, $valeur){
2236            
2237            //On vide le champ
2238            $this->byClassName("champFormulaire")->clear();
2239            //On saisie le nom de la variable dans la recherche simple
2240            $this->byClassName("champFormulaire")->value($parametre);
2241            //On valide la recherche
2242            $this->byName('s1')->submit();
2243            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2244            $this->verifyNoErrors();
2245            //On clique sur le paramètre
2246            $this->byLinkText($parametre)->click();
2247            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2248            $this->verifyNoErrors();
2249            //On clique sur modifier dans le portail d'action
2250            $this->byClassName("edit-16")->click();
2251            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2252            $this->verifyNoErrors();
2253            //On récupère la valeur actuelle du paramètre
2254            $parametre = trim($this->byId("valeur")->value());
2255            //On vide le champ
2256            $this->byId("valeur")->clear();
2257            //On change la valeur du paramètre
2258            $this->byId("valeur")->value($valeur);
2259            //On valide le formulaire
2260            $this->byName('f1')->submit();
2261            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2262            $this->verifyNoErrors();
2263            // On vérifie que le message de validation est présent
2264            $this->assertContains('Vos modifications ont bien été enregistrées.', $this->byCssSelector(".message .text")->text());
2265            //On clique sur le bouton retour
2266            $this->byLinkText("Retour")->click();
2267            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2268            $this->verifyNoErrors();
2269            //On clique sur le bouton retour
2270            $this->byLinkText("Retour")->click();
2271            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2272            $this->verifyNoErrors();
2273            //On retourne la valeur
2274            return $parametre;
2275        }
2276    
2277        /*
2278         * Ajoute une instruction
2279         * @param int $service l'identifiant du service
2280         */
2281        private function addInstruction($evenement){
2282            
2283            //On clique sur le + du tableau
2284            $this->byClassName("add-16")->click();
2285            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2286            $this->verifyNoErrors();
2287            //On choisit l'événement
2288            $this->select($this->byId("evenement"))->selectOptionByValue($evenement);
2289            //On valide le formulaire
2290            $this->byName("f2")->submit();
2291            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2292            $this->verifyNoErrors();
2293            // On vérifie que le message de validation est présent
2294            $this->assertContains('Vos modifications ont bien été enregistrées.', $this->byCssSelector("#sousform-instruction .message .text")->text());
2295            // On vérifie que le message d'envoi est présent
2296            $this->assertContains('Le message a été transmis au référentiel ERP.', $this->byCssSelector("#sousform-instruction .message .text")->text());
2297            //On clique sur le bouton retour
2298            $this->byLinkText("Retour")->click();
2299            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2300            $this->verifyNoErrors();
2301        }
2302  }  }
2303    
2304  ?>  ?>

Legend:
Removed from v.1677  
changed lines
  Added in v.2877

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26