/[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 2185 by fmichon, Thu Aug 29 15:02:04 2013 UTC revision 2896 by nhaye, Mon Mar 31 09:14:14 2014 UTC
# Line 14  require_once "base.php"; Line 14  require_once "base.php";
14   */   */
15  class Instruction extends Base2TestCase {  class Instruction extends Base2TestCase {
16    
17        // Liste des utilisateurs
18        var $listUtlisateurs = array(
19                array(
20                    "login" => "instr",
21                    "mdp" => "instr"
22                ),
23                array(
24                    "login" => "adminfonct",
25                    "mdp" => "adminfonct"
26                ),
27            );
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 test_01_ouverture_de_chaque_ecran_par_l_instructeur() {      // Fonction privé
34          //      private function ouvertureMenu($utilisateur) {
35          $this->login("instr", "instr");          // On se connecte
36          //          $this->login($utilisateur["login"], $utilisateur["mdp"]);
37            // Ouvre le menu
38            $this->openMenu("Instruction", $utilisateur);
39            // On vérifie le menu ""
40          $this->byLinkText("Mes Encours")->click();          $this->byLinkText("Mes Encours")->click();
41            $this->assertContains("Instruction > Dossiers D'instruction",
42                $this->byId("title")->text());
43          $this->verifyNoErrors();          $this->verifyNoErrors();
44          $this->assertEquals("DI", $this->byXPath("//a[@href='#tabs-1']")->text());          // On vérifie le menu ""
         //  
45          $this->byLinkText("Tous Les Encours")->click();          $this->byLinkText("Tous Les Encours")->click();
46            $this->assertContains("Instruction > Dossiers D'instruction",
47                $this->byId("title")->text());
48          $this->verifyNoErrors();          $this->verifyNoErrors();
49          $this->assertEquals("DI", $this->byXPath("//a[@href='#tabs-1']")->text());          // On vérifie le menu ""
         //  
50          $this->byLinkText("Mes Clôturés")->click();          $this->byLinkText("Mes Clôturés")->click();
51            $this->assertContains("Instruction > Dossiers D'instruction",
52                $this->byId("title")->text());
53          $this->verifyNoErrors();          $this->verifyNoErrors();
54          $this->assertEquals("DI", $this->byXPath("//a[@href='#tabs-1']")->text());          // On vérifie le menu ""
         //  
55          $this->byLinkText("Tous Les Clôturés")->click();          $this->byLinkText("Tous Les Clôturés")->click();
56            $this->assertContains("Instruction > Dossiers D'instruction",
57                $this->byId("title")->text());
58          $this->verifyNoErrors();          $this->verifyNoErrors();
59          $this->assertEquals("DI", $this->byXPath("//a[@href='#tabs-1']")->text());          // On vérifie le menu ""
         //  
60          $this->byLinkText("Recherche")->click();          $this->byLinkText("Recherche")->click();
61            $this->assertContains("Instruction > Dossiers D'instruction",
62                $this->byId("title")->text());
63          $this->verifyNoErrors();          $this->verifyNoErrors();
64          $this->assertEquals("DI", $this->byXPath("//a[@href='#tabs-1']")->text());          // On vérifie le menu ""
         //  
65          $this->byLinkText("Dossiers À Qualifier")->click();          $this->byLinkText("Dossiers À Qualifier")->click();
66            $this->assertContains("Instruction > Qualification > Dossiers À Qualifier",
67                $this->byId("title")->text());
68          $this->verifyNoErrors();          $this->verifyNoErrors();
69          $this->assertEquals("dossier", $this->byCssSelector(".col-1 .name a")->text());          // On vérifie le menu ""
70          //          $this->byLinkText("Architecte Fréquent")->click();
71            $this->assertContains("Instruction > Qualification > Architecte Fréquent",
72                $this->byId("title")->text());
73            $this->verifyNoErrors();
74            // On vérifie le menu ""
75          $this->byLinkText("Mes Retours")->click();          $this->byLinkText("Mes Retours")->click();
76            $this->assertContains("Instruction > Consultations > Mes Retours",
77                $this->byId("title")->text());
78          $this->verifyNoErrors();          $this->verifyNoErrors();
79          $this->assertEquals("dossier", $this->byCssSelector(".col-1 .name a")->text());          // On vérifie le menu ""
         //  
80          $this->byLinkText("Tous Les Retours")->click();          $this->byLinkText("Tous Les Retours")->click();
81            $this->assertContains("Instruction > Consultations > Tous Les Retours",
82                $this->byId("title")->text());
83          $this->verifyNoErrors();          $this->verifyNoErrors();
84          $this->assertEquals("dossier", $this->byCssSelector(".col-1 .name a")->text());          // On vérifie le menu ""
         //  
85          $this->byLinkText("Mes Messages")->click();          $this->byLinkText("Mes Messages")->click();
86            $this->assertContains("Instruction > Messages > Mes Messages",
87                $this->byId("title")->text());
88          $this->verifyNoErrors();          $this->verifyNoErrors();
89          $this->assertEquals("dossier", $this->byCssSelector(".col-1 .name a")->text());          // On vérifie le menu ""
         //  
90          $this->byLinkText("Tous Les Messages")->click();          $this->byLinkText("Tous Les Messages")->click();
91            $this->assertContains("Instruction > Messages > Tous Les Messages",
92                $this->byId("title")->text());
93          $this->verifyNoErrors();          $this->verifyNoErrors();
94          $this->assertEquals("dossier", $this->byCssSelector(".col-1 .name a")->text());          // On vérifie le menu ""
         //  
95          $this->byCssSelector("a.commission_mes_retours-16")->click();          $this->byCssSelector("a.commission_mes_retours-16")->click();
96            $this->assertContains("Instruction > Commissions > Mes Retours",
97                $this->byId("title")->text());
98          $this->verifyNoErrors();          $this->verifyNoErrors();
99          $this->assertEquals("dossier", $this->byCssSelector(".col-1 .name a")->text());          // On vérifie le menu ""
         //  
100          $this->byCssSelector("a.commission_tous_retours-16")->click();          $this->byCssSelector("a.commission_tous_retours-16")->click();
101            $this->assertContains("Instruction > Commissions > Tous Les Retours",
102                $this->byId("title")->text());
103          $this->verifyNoErrors();          $this->verifyNoErrors();
104          $this->assertEquals("dossier", $this->byCssSelector(".col-1 .name a")->text());          // On se déconnecte
105                $this->deconnect();
106          //      }
107          $this->logout();      // 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() {      public function ttest_02_visualisation_di_et_da_par_l_instructeur_en_charge() {
124                    
125          // On se connecte en tant que "instr"          // On se connecte en tant que "instr"
126          $this->login("instr", "instr");          $this->login("instr", "instr");
# Line 144  class Instruction extends Base2TestCase Line 187  class Instruction extends Base2TestCase
187      /**      /**
188       *       *
189       */       */
190      public function test_03_informations_du_widget_profil_instructeur() {      public function ttest_03_informations_du_widget_profil_instructeur() {
191          // On se connecte en tant que "instr"          // On se connecte en tant que "instr"
192          $this->login("instr", "instr");          $this->login("instr", "instr");
193          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
# Line 195  class Instruction extends Base2TestCase Line 238  class Instruction extends Base2TestCase
238    
239      /**      /**
240       * Ajout d'instructions par l'instructeur sur le dossier DP0130551200001P0       * Ajout d'instructions par l'instructeur sur le dossier DP0130551200001P0
241         * Modification d'un événement
242       */       */
243      public function test_04_ajout_instructions_par_instructeur() {      public function ttest_04_ajout_instructions_par_instructeur() {
           
244                    
245            // On se connecte en tant que "admin"
246            $this->login("admin", "admin");
247            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
248            $this->verifyNoErrors();
249            // On clique sur le lien "Paramétrage Dossiers" dans le menu
250            $this->byLinkText("Paramétrage Dossiers")->click();
251            // On clique sur le sousmenu "Événement"
252            $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"          // On se connecte en tant que "instr"
293          $this->login("instr", "instr");          $this->login("instr", "instr");
294          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
# Line 208  class Instruction extends Base2TestCase Line 298  class Instruction extends Base2TestCase
298          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
299          $this->verifyNoErrors();          $this->verifyNoErrors();
300          sleep(1);          sleep(1);
301          // On clique sur le lien "AZ0130551200001P0" dans le tableau          // On clique sur le dossier dernièrement créé
302          $this->byLinkText("DP 013055 12 00001P0")->click();          $this->byLinkText($dossier)->click();
303          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
304          $this->verifyNoErrors();          $this->verifyNoErrors();
305          // On clique sur l'onglet "Instruction"          // On clique sur l'onglet "Instruction"
# Line 221  class Instruction extends Base2TestCase Line 311  class Instruction extends Base2TestCase
311          $this->byCssSelector(".actions-max-1 a")->click();          $this->byCssSelector(".actions-max-1 a")->click();
312          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
313          $this->verifyNoErrors();          $this->verifyNoErrors();
314          //On choisi un événement          //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");          $this->select($this->byId("evenement"))->selectOptionByValue("22");
377          //On valide le formulaire          //On valide le formulaire
378          $this->byXPath("//input[@value='Ajouter']")->click();          $this->byXPath("//input[@value='Ajouter']")->click();
# Line 249  class Instruction extends Base2TestCase Line 400  class Instruction extends Base2TestCase
400          $this->byCssSelector(".actions-max-1 a")->click();          $this->byCssSelector(".actions-max-1 a")->click();
401          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
402          $this->verifyNoErrors();          $this->verifyNoErrors();
403          //On choisi un événement          //On choisi l'événement "accepter un dossier sans réserve [acceptation]"
404          $this->select($this->byId("evenement"))->selectOptionByValue("81");          $this->select($this->byId("evenement"))->selectOptionByValue("81");
405          //On valide le formulaire          // 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
416            $this->byXPath("//input[@value='Valider']")->click();
417            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
418            $this->verifyNoErrors();
419            // On valide le formulaire
420          $this->byXPath("//input[@value='Ajouter']")->click();          $this->byXPath("//input[@value='Ajouter']")->click();
421          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
422          $this->verifyNoErrors();          $this->verifyNoErrors();
423          sleep(1);          // On vérifie le message de validation
424          $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text());          $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text());
425          //On retourne sur le tableau d'instructions          //On retourne sur le tableau d'instructions
426          $this->byCssSelector("#sousform-instruction .retour")->click();          $this->byCssSelector("#sousform-instruction .retour")->click();
427          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
428          $this->verifyNoErrors();          $this->verifyNoErrors();
429          //On affiche l'instruction          // On clique sur l'instruction
430          $this->byLinkText("accepter un dossier sans réserve")->click();          $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é          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
432          $this->verifyNoErrors();          $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          //On vérifie que certains champs apparaissent
437          $this->assertTrue($this->byClassName("libelle-date_envoi_controle_legalite")->displayed());          $this->assertTrue($this->byClassName("libelle-date_envoi_controle_legalite")->displayed());
438          $this->assertTrue($this->byClassName("libelle-date_envoi_controle_legalite")->displayed());          $this->assertTrue($this->byClassName("libelle-date_envoi_controle_legalite")->displayed());
439          // On se déconnecte          // 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();          $this->logout();
511            // }}}
512      }      }
513    
514      /**      /**
515       * Test le formulaire de la demande de type qui possède des select filtrés       * Test le formulaire de la demande de type qui possède des select filtrés
516       */       */
517      public function test_05_ajout_lot() {      public function ttest_05_ajout_lot() {
518          // On se connecte en tant que "instr"          // On se connecte en tant que "instr"
519          $this->login("instr", "instr");          $this->login("instr", "instr");
520          // On clique sur le lien "Mes encours" dans le menu          // On clique sur le lien "Mes encours" dans le menu
# Line 325  class Instruction extends Base2TestCase Line 564  class Instruction extends Base2TestCase
564          // On se déconnecte          // On se déconnecte
565          $this->logout();          $this->logout();
566      }      }
567    //
568      /**      /**
569       * Test du lien automatique entre choix autorité compétente dans DI et       * Test du lien automatique entre choix autorité compétente dans DI et
570       * évènement d'instruction à créer       * évènement d'instruction à créer
571       */       */
572      public function test_06_modification_autorite_competente() {      // Fonction privé
573          // On se connecte en tant que "instr"      private function modification_autorite_competente($utilisateur) {
574          $this->login("instr", "instr");          // 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          // On clique sur le lien "Mes encours" dans le menu
579          $this->byLinkText("Mes Encours")->click();          $this->byLinkText("Recherche")->click();
580          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
581          $this->verifyNoErrors();          $this->verifyNoErrors();
582          // On clique sur le lien "AZ0130551200001P0" dans le tableau          // On clique sur le lien "AZ0130551200001P0" dans le tableau
# Line 368  class Instruction extends Base2TestCase Line 610  class Instruction extends Base2TestCase
610          $this->assertRegExp('/.*Commune pour état*/', $this->byCssSelector("#tabs-1 #autorite_competente")->text());          $this->assertRegExp('/.*Commune pour état*/', $this->byCssSelector("#tabs-1 #autorite_competente")->text());
611          // On se déconnecte          // On se déconnecte
612          $this->deconnect();          $this->deconnect();
613    //
614          // On se connecte en tant que "admin"          // On se connecte en tant que "admin"
615          $this->login("admin", "admin");          $this->login("admin", "admin");
616          sleep(1);          sleep(1);
# Line 378  class Instruction extends Base2TestCase Line 621  class Instruction extends Base2TestCase
621          $this->byLinkText("AZ 013055 12 00001P0")->click();          $this->byLinkText("AZ 013055 12 00001P0")->click();
622          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
623          $this->verifyNoErrors();          $this->verifyNoErrors();
624          // On verifie que l'autorité compétente à changée.          // On verifie que l'autorité compétente à changée
625          $this->assertRegExp('/.*Commune pour état*/', $this->byCssSelector("#tabs-1 #autorite_competente")->text());          $this->assertEquals('Commune pour état', $this->byCssSelector("#tabs-1 #autorite_competente")->text());
626          // On clique sur l'onglet "Instruction"          // On clique sur l'onglet "Instruction"
627          $this->byId("instruction")->click();          $this->byId("instruction")->click();
628          $this->byLinkText("Changer l'autorité compétente 'commune état'")->click();          $this->byLinkText("Changer l'autorité compétente 'commune état'")->click();
629          sleep(1);          sleep(1);
630          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
631          $this->verifyNoErrors();          $this->verifyNoErrors();
         $this->byXPath("(//div[@id='portlet-actions']/ul/li[2]/a/span)[2]")->click();  
632          // On supprime l'element et on verifie le retour de l'autorité "commune"          // On supprime l'element et on verifie le retour de l'autorité "commune"
633          $this->byCssSelector("form[name=\"f2\"] > a.retour")->click();          $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
639            $this->byLinkText("Retour")->click();
640            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
641            $this->verifyNoErrors();
642            // On vérifie que l'événement d'instruction n'est plus dans le tableau
643            $this->assertNotContains("Changer l'autorité compétente 'commune état'", $this->byId("sousform-instruction")->text());
644          // Retour à l'onglet principal          // Retour à l'onglet principal
645          $this->byId("main")->click();          $this->byId("main")->click();
646            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
647            $this->verifyNoErrors();
648            // On rafraîchit la page
649          $this->refresh();          $this->refresh();
650          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché          // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
651          $this->verifyNoErrors();          $this->verifyNoErrors();
652          // On verifie que l'autorité compétente à changée.          // On verifie que l'autorité compétente à changée.
653          $this->assertRegExp('/.*Commune*/', $this->byCssSelector("#tabs-1 #autorite_competente")->text());          $this->assertEquals('Commune', $this->byCssSelector("#tabs-1 #autorite_competente")->text());
654          // On se déconnecte          // On se déconnecte
655          $this->logout();          $this->deconnect();
656      }      }
657        // Fonction public
658        public function ttest_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       * Test de l'ajout de données techniques au dossier
672       */       */
673      public function test_07_edition_donnees_techniques() {      public function ttest_07_edition_donnees_techniques() {
674          // On se connecte en tant que "instr"          // On se connecte en tant que "instr"
675          $this->login("admin", "admin");          $this->login("admin", "admin");
676          sleep(1);          sleep(1);
# Line 467  class Instruction extends Base2TestCase Line 734  class Instruction extends Base2TestCase
734          sleep(1);          sleep(1);
735          // On se déconnecte          // On se déconnecte
736          $this->logout();          $this->logout();
737    //
738        }
739    //
740        /**
741         * Test un événement d'instruction qui a un événement "retour"
742         */
743        public function ttest_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
767            $this->byXPath("//input[@value='Ajouter']")->click();
768            // On vérifie le message de validation
769            $this->assertContains("Vos modifications ont bien été enregistrées.", $this->byCssSelector(".message .text")->text());
770            /** 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 un signataire Albert Dupont
907            $this->select($this->byId("signataire_arrete"))->selectOptionByValue("1");
908            //On choisit l'instruction 'accepter un dossier sans réserve
909            //[acceptation]'
910            $this->select($this->byId("evenement"))->selectOptionByValue(81);
911            // On valide le formulaire
912            $this->byXPath("//input[@value='Ajouter']")->click();
913            // On vérifie le message
914            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message .text")->text());
915            // On clique sur le bouton "retour"
916            $this->byLinkText("Retour")->click();
917            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
918            $this->verifyNoErrors();
919            // On clique sur l'événement d'instruction "accepter un dossier sans réserve"
920            $this->byLinkText("accepter un dossier sans réserve")->click();
921            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
922            $this->verifyNoErrors();
923            // On valide l'instruction
924            $this->byId("action-sousform-instruction-finalisation")->click();
925            // On vérifie le message de validation
926            $this->assertContains("La finalisation du document s'est effectuée avec succès.",$this->byCssSelector(".message .text")->text());
927            // On clique sur le bouton "Retour"
928            $this->byLinkText("Retour")->click();
929            // On clique sur l'événement "accepter un dossier sans réserve"
930            $this->byLinkText("accepter un dossier sans réserve")->click();sleep(1);
931            // Récupération du numéro d'événement
932            $evenement = $this->byCssSelector("#instruction.field_value")->text();
933            /** Fin **/
934    //
935            /** On met à jour la date de retour signature **/
936            // Date de retour signature
937            $date_retour_signature = date("d/m/Y", mktime(0, 0, 0, date("m"), date("d")+5,  date("Y")));
938            // On clique sur le menu "Suivi"
939            $this->byLinkText("Suivi")->click();
940            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
941            $this->verifyNoErrors();
942            // On clique sur le sous-menu "Mise À Jour Des Dates"
943            $this->byLinkText("Mise À Jour Des Dates")->click();
944            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
945            $this->verifyNoErrors();
946            // On sélectionne "date de retour de signature + Envoi contrôle légalite"
947            $this->select($this->byId("type_mise_a_jour"))->selectOptionByLabel("date de retour de signature + Envoi contrôle légalite");
948            // On remplit à la date du jour + 5 jours
949            $this->byId("date")->value($date_retour_signature);
950            // On remplit le code barres de l'instruction
951            $this->byId("code_barres")->value("11".str_pad($evenement, 10, "0", STR_PAD_LEFT));
952            // On clique sur Valider
953            $this->byCssSelector("#suivi_mise_a_jour_des_dates_form div.formControls input.om-button")->click();sleep(1);
954            // On vérifie la synthèse avec le numéro du dossier et l'événement
955            $this->assertContains($dossier, $this->byId("dossier_libelle")->text());
956            $this->assertContains("accepter un dossier sans réserve", $this->byId("evenement")->text());
957            // On clique sur Valider
958            $this->byCssSelector("#suivi_mise_a_jour_des_dates_form div.formControls input.om-button")->click();
959            // On vérifie le message de validation
960            $this->assertContains("Saisie enregistrée",$this->byCssSelector(".message .text")->text());
961            /** Fin **/
962    //
963            /** Vérifie l'instruction "retour" et le DI **/
964            // Date de validité
965            $date_validite = $this->mois_date(date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")+5,  date("Y"))), 5, "+");
966            $date_validite = date("d/m/Y", strtotime($date_validite));
967            // On clique sur le menu "Instruction"
968            $this->byLinkText("Instruction")->click();
969            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
970            $this->verifyNoErrors();
971            // On clique sur le sous-menu "Recherche"
972            $this->byLinkText("Recherche")->click();
973            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
974            $this->verifyNoErrors();
975            // On recherche le dossier crée
976            $this->byId("dossier")->value(str_replace(' ', '', $dossier));
977            // On clique sur le bouton recherche
978            $this->byId("adv-search-submit")->click();
979            // On clique sur le résultat
980            $this->byLinkText($dossier)->click();
981            // On vérifie la date de validité mise à jour par l'action
982            $this->assertContains($date_validite, $this->byId("date_validite")->text());
983            // On clique sur l'onglet "Instruction"
984            $this->byId("instruction")->click();
985            // On clique sur l'instruction "retour signature"
986            $this->byLinkText("retour signature")->click();
987            // On contrôle la date de retour signature
988            $this->assertContains($date_retour_signature, $this->byId("date_retour_signature")->text());
989            /** Fin **/
990    //
991            // On se déconnecte
992            $this->logout();
993    //
994        }
995        //
996        /**
997         * Test la suppression d'un événement d'instruction lié à une demande qui ne
998         * créée pas de nouveau dossier d'instruction
999         */
1000        public function ttest_09_suppression_evenement_demande(){
1001            //
1002            //Ajout du paramétrage d'une nouvelle demande
1003            // On se connecte à l'application en tant qu'administrateur
1004            $this->login("admin", "admin");
1005            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1006            $this->verifyNoErrors();
1007            //On clique sur "Paramétrage dossier"
1008            $this->byLinkText("Paramétrage Dossiers")->click();
1009            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1010            $this->verifyNoErrors();
1011            //On clique sur Type
1012            $this->byLinkText("Type")->click();
1013            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1014            $this->verifyNoErrors();
1015            //On clique sur le "+" du tableau
1016            $this->byClassName("add-16")->click();
1017            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1018            $this->verifyNoErrors();
1019            //On saisit le type de la demande
1020            $this->byId("code")->value("test_09_suppression");
1021            $this->byId("libelle")->value("test_09_suppression");
1022            // On sélectionne le groupe 'Autorisation ADS'
1023            $this->select($this->byId("groupe"))->selectOptionByValue("1");sleep(1);
1024            // On sélectionne 'AZ (Demande d'autorisation spéciale de travaux dans
1025            // le périmètre d'une AVAP)'
1026            $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByValue("7");sleep(1);
1027            // On sélectionne la nature 'Dossier existant'
1028            $this->select($this->byId("demande_nature"))->selectOptionByValue("2");
1029            // On sélectionne l'état 'En cours'
1030            $this->select($this->byName("etats_dossier_autorisation_autorises[]"))->selectOptionByValue("1");
1031            // On sélectionne l'événement 'Defrichement soumis a enquete publique'
1032            $this->select($this->byId("evenement"))->selectOptionByValue("15");
1033            // On sélectionne la contrainte 'Avec récupération demandeur'
1034            $this->select($this->byId("contraintes"))->selectOptionByValue("avec_recup");
1035            // On clique sur le bouton ajouter
1036            $this->byXPath("//input[@value='Ajouter']")->click();
1037            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1038            $this->verifyNoErrors();
1039            // On vérifie que le type de demande a bien été ajouté
1040            $this->assertContains('Vos modifications ont bien été enregistrées', $this->byCssSelector(".message .text")->text());
1041            //On se déconnecte
1042            $this->deconnect();
1043            //
1044            //Création d'un nouveau dossier d'instruction
1045            // On se connecte à l'application
1046            $this->login("guichet", "guichet");
1047            //On clique sur "Dossier En Cours"
1048            $this->byLinkText("Dossier En Cours")->click();
1049            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1050            $this->verifyNoErrors();
1051            //On clique sur le dossier "AZ0130551200001P0"
1052            $this->byId("action-tab-demande_dossier_encours-left-consulter-AZ0130551200001P0")->click();
1053            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1054            $this->verifyNoErrors();
1055            //On sélectionne le type de la demande
1056            $this->select($this->byId("demande_type"))->selectOptionByLabel("test_09_suppression");sleep(1);
1057            // On clique sur le bouton ajouter
1058            $this->byXPath("//input[@value='Ajouter']")->click();
1059            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1060            $this->verifyNoErrors();
1061            // On vérifie que le type de demande a bien été ajouté
1062            $this->assertContains('Vos modifications ont bien été enregistrées', $this->byCssSelector(".message .text")->text());
1063            //On se déconnecte
1064            $this->deconnect();
1065            //
1066            //Suppression de l'événement d'instruction
1067            // On se connecte à l'application
1068            $this->login("admin", "admin");
1069            //On clique sur le menu "Instruction"
1070            $this->byLinkText("Instruction")->click();
1071            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1072            $this->verifyNoErrors();
1073            //On clique sur le menu "Recherche"
1074            $this->byLinkText("Recherche")->click();
1075            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1076            $this->verifyNoErrors();
1077            //On clique sur le dossier "AZ 013055 12 00001P0"
1078            $this->byLinkText("AZ 013055 12 00001P0")->click();
1079            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1080            $this->verifyNoErrors();
1081            //On clique sur l'onglet "Instruction"
1082            $this->byId("instruction")->click();
1083            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1084            $this->verifyNoErrors();
1085            //On clique sur l'instruction "Defrichement soumis a enquete publique"
1086            $this->byLinkText("Defrichement soumis a enquete publique")->click();
1087            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1088            $this->verifyNoErrors();
1089            //On définalise l'instruction
1090            $this->byClassName("definalise")->click();
1091            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1092            $this->verifyNoErrors();
1093            //On clique "Supprimer"
1094            $this->byCssSelector("#sousform-instruction .delete-16")->click();
1095            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1096            $this->verifyNoErrors();
1097            //On clique sur supprimer
1098            $this->byXPath("//input[@value='Supprimer']")->click();
1099            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1100            $this->verifyNoErrors();
1101            //On vérifie que lasuppression a été éffectuée
1102            $this->assertContains("La suppression a été correctement effectuée.",
1103                $this->byCssSelector("#sousform-instruction .message .text")->text());
1104            // On se déconnecte
1105            $this->logout();
1106        }
1107    //
1108        /**
1109         * Test sur les types d'éditions des consultations
1110         */
1111        function ttest_10_nouveau_type_edition_consultation(){
1112            //
1113            //On saisit un service de test        
1114            // On se connecte à l'application
1115            $this->login("admin", "admin");
1116            //On clique sur "Paramétrage"
1117            $this->byLinkText("Paramétrage")->click();
1118            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1119            $this->verifyNoErrors();
1120            //On clique sur "Service"
1121            $this->byLinkText("Service")->click();
1122            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1123            $this->verifyNoErrors();        
1124            //On clique sur le "+" du tableau
1125            $this->byClassName("add-16")->click();
1126            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1127            $this->verifyNoErrors();
1128            //On saisit les données du service
1129            $this->byId("abrege")->value("test_10");
1130            $this->byId("libelle")->value("test_10");
1131            $this->byId("consultation_papier")->click();
1132            $this->select($this->byId("edition"))->selectOptionByLabel("test_10");
1133            // On clique sur le bouton ajouter
1134            $this->byXPath("//input[@value='Ajouter']")->click();
1135            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1136            $this->verifyNoErrors();
1137            // On vérifie que le service a bien été ajouté
1138            $this->assertContains('Vos modifications ont bien été enregistrées', $this->byCssSelector(".message .text")->text());
1139            //On se déconnecte
1140            $this->deconnect();
1141            //
1142            //On ajoute une consultation sur un dossier et on vérifie l'édition
1143            // On se connecte à l'application
1144            $this->login("instr", "instr");
1145            //On clique sur "Recherche"
1146            $this->byLinkText("Recherche")->click();
1147            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1148            $this->verifyNoErrors();
1149            //On choisit le dossier "AZ 013055 12 00001P0"
1150            $this->byLinkText("AZ 013055 12 00001P0")->click();
1151            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1152            $this->verifyNoErrors();
1153            //On clique sur l'onglet "Consultation"
1154            $this->byId("consultation")->click();
1155            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1156            $this->verifyNoErrors();
1157            //On clique sur le "+" du tableau
1158            $this->byClassName("add-16")->click();
1159            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1160            $this->verifyNoErrors();
1161            //On saist une nouvelle consultation
1162            $this->select($this->byId("service"))->selectOptionByLabel("test_10");
1163            // On clique sur le bouton ajouter
1164            $this->byXPath("//input[@value='Ajouter']")->click();
1165            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1166            $this->verifyNoErrors();
1167            // On vérifie que la consultation a bien été ajoutée
1168            $this->assertContains('Vos modifications ont bien été enregistrées', $this->byCssSelector(".message .text")->text());
1169            //On clique sur retour
1170            $this->byCssSelector("#sousform-consultation .retour")->click();
1171            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1172            $this->verifyNoErrors();
1173            //On clique sur la consultation au service "test_10"
1174            $this->byLinkText("test_10")->click();
1175            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1176            $this->verifyNoErrors();
1177            //On affiche le PDF
1178            $this->byId("action-sousform-consultation-pdfetat")->click();sleep(5);
1179            // Liste les fenêtres
1180            $windows = $this->windowHandles();
1181            // Change la fenêtre
1182            $this->window($windows[1]);
1183            // On vérifie qu'il n'y ait pas d'erreur
1184            $this->verifynoerrors();
1185            // On vérifie que le text est présent
1186            $this->assertContains("test_10",$this->source());
1187            $this->assertNotContains("test_10_2",$this->source());
1188            // On ferme la fenêtre
1189            $this->closeWindow();
1190            // On change le focus de la fenêtre
1191            $this->window($windows[0]);
1192            //On se déconnecte
1193            $this->deconnect();
1194            //
1195            //On change l'édition
1196            // On se connecte à l'application
1197            $this->login("admin", "admin");
1198            //On clique sur "Paramétrage"
1199            $this->byLinkText("Paramétrage")->click();
1200            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1201            $this->verifyNoErrors();
1202            //On clique sur "Service"
1203            $this->byLinkText("Service")->click();
1204            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1205            $this->verifyNoErrors();
1206            //On cherche le service
1207            $this->byName("recherche")->value("test_10");
1208            //On valide
1209            $this->byName("s1")->click();
1210            //On clique sur le service ttest_10
1211            $this->byLinkText("test_10")->click();
1212            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1213            $this->verifyNoErrors();
1214            //On clique sur "Modifier" dans le portail d'action
1215            $this->byClassName("edit-16")->click();
1216            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1217            $this->verifyNoErrors();
1218            //On choisit une seconde édition
1219            $this->select($this->byId("edition"))->selectOptionByLabel("test_10_2");
1220            // On clique sur le bouton ajouter
1221            $this->byXPath("//input[@value='Modifier']")->click();
1222            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1223            $this->verifyNoErrors();
1224            // On vérifie que le service a bien été ajouté
1225            $this->assertContains('Vos modifications ont bien été enregistrées', $this->byCssSelector(".message .text")->text());
1226            //On se déconnecte
1227            $this->deconnect();
1228            //
1229            //On vérifie que c'est la bonne édition qui est affiché
1230            // On se connecte à l'application
1231            $this->login("instr", "instr");
1232            //On clique sur "Recherche"
1233            $this->byLinkText("Recherche")->click();
1234            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1235            $this->verifyNoErrors();
1236            //On choisit le dossier "AZ 013055 12 00001P0"
1237            $this->byLinkText("AZ 013055 12 00001P0")->click();
1238            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1239            $this->verifyNoErrors();
1240            //On clique sur l'onglet "Consultation"
1241            $this->byId("consultation")->click();
1242            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1243            $this->verifyNoErrors();
1244            //On clique sur la consultation au service "test_10"
1245            $this->byLinkText("test_10")->click();
1246            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1247            $this->verifyNoErrors();
1248            //on definalise la consultaion
1249            $this->byClassName("definalise")->click();
1250            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1251            $this->verifyNoErrors();
1252            //On vérifie que la consultation s'est bien définalisée
1253            $this->assertEquals('La definalisation du document s\'est effectuée avec succès.', $this->byCssSelector("#sousform-consultation .message .text")->text());sleep(10);
1254            //On affiche le PDF
1255            $this->byId("action-sousform-consultation-pdfetat")->click();sleep(5);
1256            // Liste les fenêtres
1257            $windows = $this->windowHandles();
1258            // Change la fenêtre
1259            $this->window($windows[1]);
1260            // On vérifie qu'il n'y ait pas d'erreur
1261            $this->verifynoerrors();
1262            // On vérifie que le text est présent
1263            $this->assertContains("test_10_2",$this->source());
1264            // On ferme la fenêtre
1265            $this->closeWindow();
1266            // On change le focus de la fenêtre
1267            $this->window($windows[0]);
1268            //
1269            // On se déconnecte
1270            $this->logout();
1271        }
1272    //
1273        /**
1274         * Test sur un événement non verrouillable
1275         */
1276        public function ttest_11_evenement_non_verrouillable(){
1277    //
1278            /* On crée une nouvelle demande initial */
1279            // On se connecte à l'application
1280            $this->login("guichet", "guichet");
1281            // On clique sur le menu "Nouveau Dossier"
1282            $this->byLinkText("Nouveau Dossier")->click();
1283            // On vérifie qu'il n'y ait pas d'erreur
1284            $this->verifynoerrors();
1285            // On vérifie le nom de l'onglet
1286            $this->assertEquals("Demande", $this->byCssSelector("ul.ui-tabs-nav li.ui-state-default a")->text());
1287            // On sélectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes"
1288            $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByLabel("Permis de construire pour une maison individuelle et / ou ses annexes");
1289            // On selectionne le label "Dépôt Initial"
1290            $this->select($this->byId("demande_type"))->selectOptionByLabel("Dépôt Initial");
1291            // On clique pour ajouter un pétitionnaire principale
1292            $this->byId("add_petitionnaire_principal")->click();
1293            // On remplit le champ
1294            $this->byId("particulier_nom")->value("DURAND");
1295            // On remplit le champ
1296            $this->byId("particulier_prenom")->value("MICKAEL");
1297            // On remplit le champ
1298            $this->byId("particulier_date_naissance")->value("03/01/1956");
1299            // On remplit le champ
1300            $this->byId("particulier_commune_naissance")->value("LILLE");
1301            // On remplit le champ
1302            $this->byId("particulier_departement_naissance")->value("NORD");
1303            // On remplit le champ
1304            $this->byId("numero")->value("12");
1305            // On remplit le champ
1306            $this->byId("voie")->value("RUE DE LA LOI");
1307            // On remplit le champ
1308            $this->byId("complement")->value("APPT 12");
1309            // On remplit le champ
1310            $this->byId("localite")->value("MARSEILLE");
1311            // On remplit le champ
1312            $this->byId("code_postal")->value("13012");
1313            // On remplit le champ
1314            $this->byId("telephone_fixe")->value("0404040404");
1315            // On clique sur ajouter
1316            $this->byCssSelector("div#sformulaire form div.formControls input.om-button")->click();sleep(1);
1317            // On vérifie qu'il n'y ait pas d'erreur
1318            $this->verifynoerrors();
1319            // On vérifie le message
1320            $this->assertRegExp("/^[\s\S]*Vos modifications ont bien été enregistrées.[\s\S]*$/",$this->byCssSelector("#sousform-petitionnaire .message")->text());
1321            // On clique sur le bouton retour
1322            $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();sleep(1);
1323            // On vérifie que le text est présent
1324            $this->assertRegExp("/^[\s\S]*DURAND MICKAEL[\s\S]*$/",$this->byCssSelector("#petitionnaire_principal_delegataire .synthese_demandeur")->text());
1325            // On clique sur ajouter
1326            $this->byXPath("//input[@value='Ajouter']")->click();
1327            // On vérifie qu'il n'y ait pas d'erreur
1328            $this->verifynoerrors();
1329            // On vérifie le message
1330            $this->assertRegExp("/^[\s\S]*Création du dossier d'autorisation n°[\s\S]*$/",$this->byCssSelector(".message")->text());
1331            // Récupération du numéro de dossier
1332            preg_match('/(PC)[0-9 ]*(P0)/', $this->byCssSelector(".message .text")->text(), $matches);
1333            $dossier_libelle = $matches[0];
1334            $dossier = str_replace(' ', '', $dossier_libelle);
1335            $dossier_dir = substr_replace($dossier, '.', -2, -3);
1336            // On clique
1337            $this->byCssSelector("a.lien")->click();sleep(5);
1338            // Liste les fenêtres
1339            $windows = $this->windowHandles();
1340            // Change la fenêtre
1341            $this->window($windows[1]);
1342            // On vérifie qu'il n'y ait pas d'erreur
1343            $this->verifynoerrors();
1344            // On vérifie que le text est présent
1345            $this->assertRegExp("/^[\s\S]*RECEPISSE DE DEPOT[\s\S]*$/",$this->source());
1346            // On ferme la fenêtre
1347            $this->closeWindow();
1348            // On change le focus de la fenêtre
1349            $this->window($windows[0]);
1350            // On clique sur le bouton retour
1351            $this->byLinkText("Retour")->click();
1352            // On vérifie qu'il n'y ait pas d'erreur
1353            $this->verifynoerrors();
1354            // On vérifie que le répertoire s'est crée
1355            $this->assertTrue(file_exists("../trs/numerisation/Todo/".$dossier_dir));
1356            // On se déconnecte
1357            $this->deconnect();
1358            /* Fin */
1359    //
1360            /* On accepte le dossier d'instruction et le finalise */
1361            // On se connecte à l'application
1362            $this->login("instr", "instr");
1363            // On clique sur le menu 'Recherche'
1364            $this->byLinkText("Recherche")->click();
1365            // On recherche le dossier crée
1366            $this->byId("dossier")->value($dossier);
1367            // On clique sur le bouton recherche
1368            $this->byId("adv-search-submit")->click();
1369            // On clique sur le résultat
1370            $this->byLinkText($dossier_libelle)->click();
1371            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1372            $this->verifyNoErrors();
1373            // On clique sur l'onglet "Instruction"
1374            $this->byId("instruction")->click();
1375            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1376            $this->verifyNoErrors();
1377            // On clique sur le lien d'ajout dans le tableau
1378            $this->byCssSelector(".actions-max-1 a")->click();
1379            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1380            $this->verifyNoErrors();
1381            //On choisit l'instruction 'accepter un dossier sans réserve
1382            //[acceptation]'
1383            $this->select($this->byId("evenement"))->selectOptionByValue(81);
1384            // On valide le formulaire
1385            $this->byXPath("//input[@value='Ajouter']")->click();
1386            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1387            $this->verifyNoErrors();
1388            sleep(1);
1389            $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text());
1390            // On retourne sur le tableau d'instructions
1391            $this->byCssSelector("#sousform-instruction .retour")->click();
1392            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1393            $this->verifyNoErrors();
1394            // On clique sur l'événement d'instruction "accepter un dossier sans réserve"
1395            $this->byLinkText("accepter un dossier sans réserve")->click();
1396            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1397            $this->verifyNoErrors();
1398            // On valide l'instruction (un événement verrouillable ne pourrait pas
1399            // être finalisé)
1400            $this->byId("action-sousform-instruction-finalisation")->click();
1401            // On vérifie le message de validation
1402            $this->assertContains("La finalisation du document s'est effectuée avec succès.",$this->byCssSelector(".message .text")->text());
1403            /* Fin */
1404        }
1405    //
1406        /**
1407         * Test que les données du dossier d'autorisation sont recopiés dans les
1408         * champs 'archive_' de l'événement d'instruction de la création du nouveau
1409         * dossier d'instruction
1410         */
1411        public function ttest_12_recopie_donnees_da_vers_nouveau_di(){
1412            //
1413            //{{{ Ajout de d'un nouveau dossier
1414            // On se connecte à l'application
1415            $this->login("guichet", "guichet");
1416            //On clique sur le menu des instructions
1417            $this->byLinkText("Nouveau Dossier")->click();
1418            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1419            $this->verifyNoErrors();
1420            //On ajoute un nouveau dossier
1421            $dossier = $this->addDossierInstruction( 1, 1);                
1422            // On se déconnecte
1423            $this->deconnect();
1424            //}}}
1425            //
1426            //{{{ Clôture du nouveau dossier
1427            // On se connecte à l'application
1428            $this->login("instr", "instr");
1429            //On clique sur le menu "Recherche"
1430            $this->byLinkText("Recherche")->click();
1431            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1432            $this->verifyNoErrors();
1433            // On recherche le dossier crée
1434            $this->byId("dossier")->value(str_replace(' ', '', $dossier));
1435            // On clique sur le bouton recherche
1436            $this->byId("adv-search-submit")->click();
1437            // On clique sur le résultat
1438            $this->byLinkText($dossier)->click();
1439            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1440            $this->verifyNoErrors();
1441            //On clique sur l'onglet "instruction"
1442            $this->byId("instruction")->click();
1443            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1444            $this->verifyNoErrors();
1445            // On ajoute une instruction
1446            $this->byCssSelector("#sousform-instruction .add-16")->click();
1447            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1448            $this->verifyNoErrors();
1449            //On choisit l'instruction 'accepter un dossier sans réserve
1450            //[acceptation]'
1451            $this->select($this->byId("evenement"))->selectOptionByValue(81);
1452            // On clique sur ajouter
1453            $this->byXPath("//input[@value='Ajouter']")->click();
1454            // On vérifie qu'il n'y ait pas d'erreur
1455            $this->verifynoerrors();
1456            // On vérifie le message
1457            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1458            //On rafraichit la page pour vérifier que le dossier est clôturé
1459            $this->refresh();
1460            $this->assertEquals("Favorable", $this->byId("avis_decision")->text());
1461            // On se déconnecte
1462            $this->deconnect();
1463            //}}}
1464            //
1465            //{{{ Ajout de l'action
1466            // On se connecte à l'application
1467            $this->login("admin", "admin");
1468            //On clique sur le menu "Paramétrage dossiers"
1469            $this->byLinkText("Paramétrage Dossiers")->click();
1470            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1471            $this->verifyNoErrors();
1472            //On clique sur le menu "Action"
1473            $this->byLinkText("Action")->click();
1474            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1475            $this->verifyNoErrors();
1476            //On clique sur le "+" du tableau
1477            $this->byClassName("add-16")->click();
1478            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1479            $this->verifyNoErrors();
1480            //On remplit la règle de calcul de la date de validité
1481            $this->byId("action")->value("test_12_recopie_donnees");
1482            $this->byId("libelle")->value("test_12_recopie_donnees");
1483            $this->byId("regle_date_validite")->value("archive_date_validite+12");
1484            // On clique sur ajouter
1485            $this->byXPath("//input[@value='Ajouter']")->click();
1486            // On vérifie qu'il n'y ait pas d'erreur
1487            $this->verifynoerrors();
1488            // On vérifie le message
1489            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1490            //}}}
1491            //
1492            //{{{ Ajout de l'événement
1493            //On clique sur le menu "Événement"
1494            $this->byLinkText("Événement")->click();
1495            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1496            $this->verifyNoErrors();
1497            //On clique sur le "+" du tableau
1498            $this->byClassName("add-16")->click();
1499            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1500            $this->verifyNoErrors();
1501            //On remplit l'événement qui va être ajouté avec la nouvelle demande
1502            $this->byId("libelle")->value("test_12_recopie_donnees");
1503            $this->select($this->byName("etats_depuis_lequel_l_evenement_est_disponible[]"))->selectOptionByValue("accepter");
1504            // On sélectionne PCI - P - Initial
1505            $this->select($this->byName("dossier_instruction_type[]"))->selectOptionByValue(1);
1506            $this->select($this->byName("action"))->selectOptionByLabel("test_12_recopie_donnees");
1507            // On clique sur ajouter
1508            $this->byXPath("//input[@value='Ajouter']")->click();
1509            // On vérifie qu'il n'y ait pas d'erreur
1510            $this->verifynoerrors();
1511            // On vérifie le message
1512            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1513            //}}}
1514            //
1515            //{{{ Ajout du type de dossier d'instruction
1516            //On clique sur le menu "Type DI"
1517            $this->byLinkText("Type DI")->click();
1518            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1519            $this->verifyNoErrors();
1520            //On clique sur le "+" du tableau
1521            $this->byClassName("add-16")->click();
1522            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1523            $this->verifyNoErrors();
1524            //On remplit le type de la demande
1525            $this->byId("code")->value("DT");
1526            $this->byId("libelle")->value("test_12_recopie_donnees");
1527            // On sélectionne PCI (Permis de construire pour une maison individuelle
1528            // et / ou ses annexes)
1529            $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByValue(1);sleep(1);
1530            $this->byId("suffixe")->click();
1531            // On clique sur ajouter
1532            $this->byXPath("//input[@value='Ajouter']")->click();
1533            // On vérifie qu'il n'y ait pas d'erreur
1534            $this->verifynoerrors();
1535            // On vérifie le message
1536            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1537            //}}}
1538            //
1539            //{{{ Ajout du type de la demande
1540            //On clique sur le menu "Type"
1541            $this->byLinkText("Type")->click();
1542            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1543            $this->verifyNoErrors();
1544            //On clique sur le "+" du tableau
1545            $this->byClassName("add-16")->click();
1546            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1547            $this->verifyNoErrors();
1548            //On remplit le type de la demande
1549            $this->byId("code")->value("test_12_recopie_donnees");
1550            $this->byId("libelle")->value("test_12_recopie_donnees");
1551            // On sélectionne Autorisation ADS
1552            $this->select($this->byId("groupe"))->selectOptionByValue(1);sleep(1);
1553            // On sélectionne PCI (Permis de construire pour une maison individuelle
1554            // et / ou ses annexes)
1555            $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByValue(1);
1556            // On sélectionne Dossier existant
1557            $this->select($this->byId("demande_nature"))->selectOptionByValue(2);
1558            // On sélectionne Accordé
1559            $this->select($this->byName("etats_dossier_autorisation_autorises[]"))->selectOptionByValue(2);
1560            $this->select($this->byId("dossier_instruction_type"))->selectOptionByLabel("PCI - ttest_12_recopie_donnees");
1561            $this->select($this->byId("evenement"))->selectOptionByLabel("test_12_recopie_donnees");
1562            // On clique sur ajouter
1563            $this->byXPath("//input[@value='Ajouter']")->click();
1564            // On vérifie qu'il n'y ait pas d'erreur
1565            $this->verifynoerrors();
1566            // On vérifie le message
1567            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1568            //On clique sur retour
1569            $this->byClassName("retour")->click();
1570            // On vérifie qu'il n'y ait pas d'erreur
1571            $this->verifynoerrors();
1572            //On saisit le libellé du type de la demande saisit
1573            $this->byName("recherche")->value("test_12_recopie_donnees");
1574            //On valide
1575            $this->byName("s1")->click();
1576            // On vérifie qu'il n'y ait pas d'erreur
1577            $this->verifynoerrors();
1578            //On clique sur le type de la demande
1579            $this->byLinkText("test_12_recopie_donnees")->click();
1580            // On vérifie qu'il n'y ait pas d'erreur
1581            $this->verifynoerrors();
1582            //On récupère l'identifiant du type de la demande
1583            $demande_type = $this->byId("demande_type")->text();
1584            // On se déconnecte
1585            $this->deconnect();
1586            //}}}
1587            //
1588            //{{{ Ajout de d'un nouveau dossier
1589            // On se connecte à l'application
1590            $this->login("guichet", "guichet");
1591            //On clique sur le menu des instructions
1592            $this->byLinkText("Dossier En Cours")->click();
1593            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1594            $this->verifyNoErrors();
1595            //On ajoute un nouveau dossier
1596            $dossier = $this->addDossierInstruction(1, $demande_type, "Test validité", 2, str_replace(" ", "", $dossier));                
1597            // On se déconnecte
1598            $this->deconnect();
1599            //}}}
1600            //
1601            //{{{ Vérification de la date de validité
1602            // On se connecte à l'application
1603            $this->login("instr", "instr");
1604            //On clique sur le menu "Recherche"
1605            $this->byLinkText("Recherche")->click();
1606            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1607            $this->verifyNoErrors();
1608            // On recherche le dossier crée
1609            $this->byId("dossier")->value(str_replace(' ', '', $dossier));
1610            // On clique sur le bouton recherche
1611            $this->byId("adv-search-submit")->click();
1612            // On clique sur le résultat
1613            $this->byLinkText($dossier)->click();
1614            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1615            $this->verifyNoErrors();
1616            //On vérifie la date de validité
1617            $date_validite = $this->mois_date(date("Y-m-d"), 12, "+");
1618            $date_validite = date("d/m/Y", strtotime($date_validite));
1619            $this->assertEquals($date_validite, $this->byId("date_validite")->text());
1620            // On se déconnecte
1621            $this->deconnect();
1622            //}}}
1623        }
1624        //
1625        /**
1626         * Test de la numérotation des DI successifs
1627         */
1628        function ttest_13_numerotation_dossier_instruction_successif(){
1629                //
1630            //{{{ Ajout de d'un nouveau dossier d'instruction P0
1631            // On se connecte à l'application
1632            $this->login("guichet", "guichet");
1633            // On clique sur le menu "Nouveau Dossier"
1634            $this->byLinkText("Nouveau Dossier")->click();
1635            // On vérifie qu'il n'y ait pas d'erreur
1636            $this->verifynoerrors();
1637            // On ajoute un nouveau dossier d'instruction
1638            $dossierP0 = str_replace(" ", "", trim($this->addDossierInstruction(1, 1)));
1639            // On se déconnecte
1640            $this->deconnect();
1641            //}}}
1642            //
1643            //{{{ Accord du P0 créé
1644            // On se connecte à l'application
1645            $this->login("instr", "instr");
1646            // On clique sur le menu "Recherche"
1647            $this->byLinkText("Recherche")->click();
1648            // On vérifie qu'il n'y ait pas d'erreur
1649            $this->verifynoerrors();
1650            // On saisit le numéro du dossier d'instruction
1651            $this->byId("dossier")->value($dossierP0);
1652            // On valide la recherche
1653            $this->byId("adv-search-submit")->click();
1654            // On vérifie qu'il n'y ait pas d'erreur
1655            $this->verifynoerrors();
1656            // On clique sur le dossier d'instruction
1657            $this->byId("action-tab-dossier_instruction-left-consulter-".$dossierP0)->click();
1658            // On vérifie qu'il n'y ait pas d'erreur
1659            $this->verifynoerrors();
1660            // On clique sur l'onglet instruction
1661            $this->byId("instruction")->click();
1662            // On vérifie qu'il n'y ait pas d'erreur
1663            $this->verifynoerrors();
1664            // On clique sur le + du tableau
1665            $this->byClassName("add-16")->click();
1666            // On vérifie qu'il n'y ait pas d'erreur
1667            $this->verifynoerrors();
1668            // On choisit l'événement n°81 accepter un dossier sans réserve
1669            $this->select($this->byName("evenement"))->selectOptionByValue(81);
1670            // On clique sur ajouter
1671            $this->byXPath("//input[@value='Ajouter']")->click();
1672            // On vérifie qu'il n'y ait pas d'erreur
1673            $this->verifynoerrors();
1674            // On vérifie que l'événement d'instruction s'est bien ajouté
1675            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector("#sousform-instruction .message")->text());
1676            // On se déconnecte
1677            $this->deconnect();
1678            //}}}
1679            //
1680            //{{{ Ajout d'un nouveau type de dossier d'instruction
1681            // On se connecte à l'application
1682            $this->login("admin", "admin");
1683            // On clique sur le menu "Paramétrage Dossiers"
1684            $this->byLinkText("Paramétrage Dossiers")->click();
1685            // On vérifie qu'il n'y ait pas d'erreur
1686            $this->verifynoerrors();
1687            // On clique sur le menu "Type DI"
1688            $this->byLinkText("Type DI")->click();
1689            // On vérifie qu'il n'y ait pas d'erreur
1690            $this->verifynoerrors();
1691            // On clique sur le + du tableau
1692            $this->byClassName("add-16")->click();
1693            // On vérifie qu'il n'y ait pas d'erreur
1694            $this->verifynoerrors();
1695            //On saisit les données
1696            $this->byId("code")->value("TN");
1697            $this->byId("libelle")->value("Test numérotation");
1698            $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByValue(1);
1699            $this->byId("suffixe")->click();
1700            // On clique sur ajouter
1701            $this->byXPath("//input[@value='Ajouter']")->click();
1702            // On vérifie qu'il n'y ait pas d'erreur
1703            $this->verifynoerrors();
1704            // On vérifie que le type de dossier d'instruction s'est bien ajouté
1705            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1706            //}}}
1707            //
1708            //{{{ Ajout d'un nouveau type de demande
1709            // On clique sur le menu "Type"
1710            $this->byLinkText("Type")->click();
1711            // On vérifie qu'il n'y ait pas d'erreur
1712            $this->verifynoerrors();
1713            // On clique sur le + du tableau
1714            $this->byClassName("add-16")->click();
1715            // On vérifie qu'il n'y ait pas d'erreur
1716            $this->verifynoerrors();
1717            //On saisit les données
1718            $this->byId("code")->value("TN");
1719            $this->byId("libelle")->value("Test numérotation");
1720            $this->select($this->byId("groupe"))->selectOptionByValue(1);
1721            sleep(1);
1722            $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByValue(1);
1723            $this->select($this->byId("demande_nature"))->selectOptionByValue(2);
1724            $this->select($this->byName("etats_dossier_autorisation_autorises[]"))->selectOptionByValue(2);
1725            $this->select($this->byId("dossier_instruction_type"))->selectOptionByLabel("PCI - Test numérotation");
1726            $this->select($this->byId("evenement"))->selectOptionByValue(1);
1727            // On clique sur ajouter
1728            $this->byXPath("//input[@value='Ajouter']")->click();
1729            // On vérifie qu'il n'y ait pas d'erreur
1730            $this->verifynoerrors();
1731            // On vérifie qu'il n'y ait pas d'erreur
1732            $this->verifynoerrors();
1733            // On vérifie que le type de dossier d'instruction s'est bien ajouté
1734            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1735            // On clique sur "Retour"
1736            $this->byClassName("retour")->click();
1737            // On vérifie qu'il n'y ait pas d'erreur
1738            $this->verifynoerrors();
1739            // On saisit le libelle du type de la demande nouvellement créée
1740            $this->byClassName("champFormulaire")->value("Test numérotation");
1741            // On valide la recherche
1742            $this->byName("f1")->submit();
1743            //On clique sur le type de la demande
1744            $this->byLinkText("Test numérotation")->click();
1745            // On vérifie qu'il n'y ait pas d'erreur
1746            $this->verifynoerrors();
1747            // On récupère l'identifiant
1748            $idDemandeType = trim($this->byId("demande_type")->text());
1749            // On se déconnecte
1750            $this->deconnect();
1751            //}}}
1752            //
1753            //{{{ Ajout de d'un nouveau dossier d'instruction avec le nouveau type
1754            //de dossier d'instruction
1755            // On se connecte à l'application
1756            $this->login("guichet", "guichet");
1757            // On clique sur le menu "Dossier En Cours"
1758            $this->byLinkText("Dossier En Cours")->click();
1759            // On vérifie qu'il n'y ait pas d'erreur
1760            $this->verifynoerrors();
1761            // On ajoute un nouveau dossier d'instruction
1762            $dossierTN01 = trim($this->addDossierInstruction(1, $idDemandeType, "Test nouveau DI", 3, $dossierP0));
1763            //On vérifie que le numéro du dossier d'instruction est celui attendu
1764            assert(preg_match('/(PC)[0-9 ]*(TN01)/', $dossierTN01) === 1);
1765            // On se déconnecte
1766            $this->deconnect();
1767            //}}}
1768            
1769            
1770        }
1771    
1772        /**
1773         * Test de la numérotation des DI successifs
1774         */
1775        function test_14_recalcul_donnees_DI_vers_DA(){
1776            //{{{ Ajout de d'un nouveau dossier
1777            // On se connecte à l'application
1778            $this->login("guichet", "guichet");
1779            //On clique sur le menu des instructions
1780            $this->byLinkText("Nouveau Dossier")->click();
1781            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1782            $this->verifyNoErrors();
1783            //On ajoute un nouveau dossier
1784            $dossier = $this->addDossierInstruction( 1, 1);                
1785            // On se déconnecte
1786            $this->deconnect();
1787            //}}}
1788            //
1789            //{{{
1790            // Mise à jour des données techniques
1791            // On se connecte à l'application
1792            $this->login("instr", "instr");
1793            //On clique sur le menu "Recherche"
1794            $this->byLinkText("Recherche")->click();
1795            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1796            $this->verifyNoErrors();
1797            // On recherche le dossier crée
1798            $this->byId("dossier")->value(str_replace(' ', '', $dossier));
1799            // On clique sur le bouton recherche
1800            $this->byId("adv-search-submit")->click();
1801            // On clique sur le résultat
1802            $this->byLinkText($dossier)->click();
1803            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1804            $this->verifyNoErrors();
1805            // Ouverture du formulaire des données techniques
1806            $this->byCssSelector("#formulaire .rediger-16")->click();
1807            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1808            $this->verifyNoErrors();
1809            // Modification des données techniques
1810            $this->byCssSelector("#sousform-donnees_techniques .edit-16")->click();
1811            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1812            $this->verifyNoErrors();
1813            sleep(1);
1814            // On déplie le fieldset Construire
1815            $this->byCssSelector("#fieldset-sousform-donnees_techniques-construire legend")->click();
1816            sleep(1);
1817            // On déplie le fieldset Destinations et surfaces des constructions
1818            $this->byCssSelector("#fieldset-sousform-donnees_techniques-destinations-et-surfaces-des-constructions legend")->click();
1819            sleep(1);
1820            //On remplit des données techniques
1821            $this->byId("su_cstr_shon1")->value("120");
1822            // On clique sur ajouter
1823            $this->byXPath("//input[@value='Modifier']")->click();
1824            // On vérifie qu'il n'y ait pas d'erreur
1825            $this->verifynoerrors();
1826            // On vérifie le message
1827            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1828            //On clique sur retour
1829            $this->byCssSelector("#sousform-donnees_techniques .retour")->click();
1830            //}}}
1831            //
1832            //{{{ Clôture du nouveau dossier
1833            //On clique sur le menu "Recherche"
1834            $this->byLinkText("Recherche")->click();
1835            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1836            $this->verifyNoErrors();
1837            // On recherche le dossier crée
1838            $this->byId("dossier")->value(str_replace(' ', '', $dossier));
1839            // On clique sur le bouton recherche
1840            $this->byId("adv-search-submit")->click();
1841            // On clique sur le résultat
1842            $this->byLinkText($dossier)->click();
1843            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1844            $this->verifyNoErrors();
1845            //On clique sur l'onglet "instruction"
1846            $this->byId("instruction")->click();
1847            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1848            $this->verifyNoErrors();
1849            // On ajoute une instruction
1850            $this->byCssSelector("#sousform-instruction .add-16")->click();
1851            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1852            $this->verifyNoErrors();
1853            //On choisit l'instruction 'accepter un dossier sans réserve
1854            //[acceptation]'
1855            $this->select($this->byId("evenement"))->selectOptionByValue(81);
1856            // On clique sur ajouter
1857            $this->byXPath("//input[@value='Ajouter']")->click();
1858            // On vérifie qu'il n'y ait pas d'erreur
1859            $this->verifynoerrors();
1860            // On vérifie le message
1861            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message")->text());
1862            //On rafraichit la page pour vérifier que le dossier est clôturé
1863            $this->refresh();
1864            $this->assertEquals("Favorable", $this->byId("avis_decision")->text());
1865            //}}}
1866            //
1867            //{{{ Vérification des données techniques dans la visu DA
1868            //On clique sur le menu "Recherche"
1869            $this->byLinkText("Recherche")->click();
1870            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1871            $this->verifyNoErrors();
1872            // On recherche le dossier crée
1873            $this->byId("dossier")->value(str_replace(' ', '', $dossier));
1874            // On clique sur le bouton recherche
1875            $this->byId("adv-search-submit")->click();
1876            // On clique sur le résultat
1877            $this->byLinkText($dossier)->click();
1878            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1879            $this->verifyNoErrors();
1880            //On clique sur l'onglet "DA"
1881            $this->byId("dossier_autorisation")->click();
1882            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1883            $this->verifyNoErrors();
1884            // On ajoute une instruction
1885            $this->byCssSelector("#sousform-dossier_autorisation .consult-16")->click();
1886            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1887            $this->verifyNoErrors();
1888            // Affichage des données techniques
1889            $this->byId("donnees_techniques_da")->click();
1890            sleep(1);
1891            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1892            $this->verifyNoErrors();
1893            // On déplie le fieldset Construire
1894            $this->byCssSelector("#fieldset-sousform-donnees_techniques-construire legend")->click();
1895            sleep(1);
1896            // On déplie le fieldset Destinations et surfaces des constructions
1897            $this->byCssSelector("#fieldset-sousform-donnees_techniques-destinations-et-surfaces-des-constructions legend")->click();
1898            sleep(1);
1899            $this->assertEquals("120", $this->byId("su_cstr_shon1")->text());
1900            //On clique sur retour
1901            $this->byCssSelector("#sousform-donnees_techniques .retour")->click();
1902            // On se déconnecte
1903            $this->deconnect();
1904            //}}}
1905            
1906            // Vérification du calcul de l'état du DA
1907            //{{{ Ajout de d'un nouveau dossier
1908            // On se connecte à l'application
1909            $this->login("guichet", "guichet");
1910            //On clique sur le menu des instructions
1911            $this->byLinkText("Nouveau Dossier")->click();
1912            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1913            $this->verifyNoErrors();
1914            //On ajoute un nouveau dossier
1915            $dossier = $this->addDossierInstruction( 1, 1, "test recalcul état DA");
1916            // On se déconnecte
1917            $this->deconnect();
1918            //}}}
1919            // On se connecte à l'application
1920            $this->login("instr", "instr");
1921            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1922            $this->verifyNoErrors();
1923            // On clique sur le lien "Mes encours" dans le menu
1924            $this->byLinkText("Mes Encours")->click();
1925            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1926            $this->verifyNoErrors();
1927            sleep(1);
1928            // On clique sur le dossier dernièrement créé
1929            $this->byLinkText($dossier)->click();
1930            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1931            $this->verifyNoErrors();
1932            $this->verifierEtatDA($dossier,81, "Accordé");
1933            // On se déconnecte
1934            $this->deconnect();
1935            //}}}
1936            //{{{ Ajout de d'un nouveau dossier
1937            // On se connecte à l'application
1938            $this->login("guichet", "guichet");
1939            //On clique sur le menu des instructions
1940            $this->byLinkText("Nouveau Dossier")->click();
1941            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1942            $this->verifyNoErrors();
1943            //On ajoute un nouveau dossier
1944            $dossier = $this->addDossierInstruction( 1, 1, "test recalcul état DA");
1945            // On se déconnecte
1946            $this->deconnect();
1947            //}}}
1948            // On se connecte à l'application
1949            $this->login("instr", "instr");
1950            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1951            $this->verifyNoErrors();
1952            // On clique sur le lien "Mes encours" dans le menu
1953            $this->byLinkText("Mes Encours")->click();
1954            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1955            $this->verifyNoErrors();
1956            sleep(1);
1957            // On clique sur le dossier dernièrement créé
1958            $this->byLinkText($dossier)->click();
1959            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1960            $this->verifyNoErrors();
1961            $this->verifierEtatDA($dossier,31, "Refusé");
1962            // On se déconnecte
1963            $this->deconnect();
1964            //}}}
1965        }
1966        
1967        /*
1968         * Cette méthode teste l'envoi de message au référentiel ERP lors de l'ajout
1969         * d'instruction
1970         */
1971        public function ttest_15_envoi_de_message_erp(){
1972            
1973            // On se connecte en tant que "admin"
1974            $this->login("admin", "admin");
1975            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1976            $this->verifyNoErrors();
1977            //On clique sur Paramétrage Dossiers
1978            $this->byLinkText("Paramétrage Dossiers")->click();
1979            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1980            $this->verifyNoErrors();
1981            //On clique sur Service
1982            $this->byLinkText("Événement")->click();
1983            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1984            $this->verifyNoErrors();
1985            //Initialisation de la variable
1986            $evenements = array();
1987            //{{{ Ajout d'événements
1988            //On ajoute trois événements
1989            for ($i = 1 ; $i < 3 ; $i++){
1990                $evenements[] = $this->addEvenement("test_evenement_erp_".$i);
1991            }
1992            //}}}
1993            
1994            //{{{ On change trois variables erp_service_accessibilite,
1995            // erp_service_securite et erp_service_conformite
1996            //On clique sur Administration
1997            $this->byLinkText("Administration")->click();
1998            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
1999            $this->verifyNoErrors();
2000            //On clique sur Paramètre
2001            $this->byLinkText("Paramètre")->click();
2002            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2003            $this->verifyNoErrors();
2004            $erp_evenement_accepter_sans_reserve = $this->changeParametreEvenementErp("erp_evenement_accepter_sans_reserve", $evenements[0]);
2005            $erp_evenement_refuser_dossier = $this->changeParametreEvenementErp("erp_evenement_refuser_dossier", $evenements[1]);
2006            $option_referentiel_arrete = $this->changeParametreEvenementErp("option_referentiel_arrete", 'true');
2007            ///}}}
2008            // On se déconnecte
2009            $this->deconnect();
2010            
2011            // On se connecte en tant que "guichet"
2012            $this->login("guichet", "guichet");
2013            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2014            $this->verifyNoErrors();
2015            //{{{On ajoute un dossier d'instruction
2016            //On clique sur Nouveau Dossier
2017            $this->byLinkText("Nouveau Dossier")->click();
2018            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2019            $this->verifyNoErrors();
2020            //On ajoute le dossier
2021            $dossier = $this->addDossierInstruction("1", "1");
2022            //}}}
2023            // On se déconnecte
2024            $this->deconnect();
2025            
2026            // On se connecte en tant que "instr"
2027            $this->login("instr", "instr");
2028            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2029            $this->verifyNoErrors();
2030            //{{{ On ajoute trois événement
2031            //On clique sur Nouveau Dossier
2032            $this->byLinkText("Recherche")->click();
2033            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2034            $this->verifyNoErrors();
2035            //On cherche le dossier d'instruction
2036            $this->byId("dossier")->value(str_replace(" ", "", $dossier));
2037            // On valide la recherche
2038            $this->byId("adv-search-submit")->click();
2039            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2040            $this->verifyNoErrors();
2041            //On clique sur le dossier d'instruction
2042            $this->byLinkText($dossier)->click();
2043            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2044            $this->verifyNoErrors();
2045            //On clique sur Modifier
2046            $this->byClassName("edit-16")->click();
2047            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2048            $this->verifyNoErrors();
2049            //On clique sur erp
2050            $this->byId("erp")->click();
2051            //On valide le formulaire
2052            $this->byName("f1")->submit();
2053            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2054            $this->verifyNoErrors();
2055            // On vérifie le message
2056            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector(".message .text")->text());
2057            //On clique sur l'onglet instruction
2058            $this->byId("instruction")->click();
2059            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2060            $this->verifyNoErrors();
2061            //On ajoute trois consultations
2062            foreach ($evenements as $value) {
2063                $this->addInstruction($value);
2064            }
2065    
2066            //On clique sur le + du tableau
2067            $this->byClassName("add-16")->click();
2068            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2069            $this->verifyNoErrors();
2070            //On choisit l'événement
2071            $this->select($this->byId("evenement"))->selectOptionByValue(81);
2072            //On valide le formulaire
2073            $this->byName("f2")->submit();
2074            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2075            $this->verifyNoErrors();
2076            // On vérifie que le message de validation est présent
2077            $this->assertContains('Vos modifications ont bien été enregistrées.', $this->byCssSelector("#sousform-instruction .message .text")->text());
2078            //On clique sur Retour
2079            $this->byLinkText("Retour")->click();
2080            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2081            $this->verifyNoErrors();
2082            //On clique sur l'instruction
2083            $this->byLinkText("accepter un dossier sans réserve")->click();
2084            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2085            $this->verifyNoErrors();
2086            //On récupère le numéro d'instruction
2087            $instruction = trim($this->byId("instruction")->text());
2088            //On la finalise
2089            $this->byClassName("finalise")->click();
2090            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2091            $this->verifyNoErrors();
2092            // On vérifie que le message de validation est présent
2093            $this->assertContains('La finalisation du document s\'est effectuée avec succès.', $this->byCssSelector("#sousform-instruction .message .text")->text());
2094            // On se déconnecte
2095            $this->deconnect();
2096            
2097            // On se connecte en tant que "admin"
2098            $this->login("admin", "admin");
2099            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2100            $this->verifyNoErrors();
2101            //On clique sur instruction
2102            $this->byLinkText("Instruction")->click();
2103            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2104            $this->verifyNoErrors();
2105            //On clique sur Recherche
2106            $this->byLinkText("Recherche")->click();
2107            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2108            $this->verifyNoErrors();
2109            //On cherche le dossier d'instruction
2110            $this->byId("dossier")->value(str_replace(" ", "", $dossier));
2111            // On valide la recherche
2112            $this->byId("adv-search-submit")->click();
2113            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2114            $this->verifyNoErrors();
2115            //On clique sur le dossier d'instruction
2116            $this->byLinkText($dossier)->click();
2117            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2118            $this->verifyNoErrors();
2119            //On clique sur l'onglet instruction
2120            $this->byId("instruction")->click();
2121            //On clique sur l'instruction accepter un dossier sans réserve
2122            $this->byLinkText("accepter un dossier sans réserve")->click();
2123            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2124            $this->verifyNoErrors();
2125            //On la definalise
2126            $this->byClassName("definalise")->click();
2127            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2128            $this->verifyNoErrors();
2129            // On vérifie que le message de validation est présent
2130            $this->assertContains('La definalisation du document s\'est effectuée avec succès.', $this->byCssSelector("#sousform-instruction .message .text")->text());
2131            //On clique sur modifier
2132            $this->byCssSelector("#sousform-instruction .edit-16")->click();
2133            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2134            $this->verifyNoErrors();
2135            //On choisit un signataire Albert Dupont
2136            $this->select($this->byId("signataire_arrete"))->selectOptionByValue("1");
2137            //On remplit la date de retour sign
2138            $this->byId("date_retour_signature")->value(date('d/m/Y'));
2139            //On valide le formulaire
2140            $this->byName("f2")->submit();
2141            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2142            $this->verifyNoErrors();
2143            // On vérifie que le message de validation est présent
2144            $this->assertContains('Vos modifications ont bien été enregistrées.', $this->byCssSelector("#sousform-instruction .message .text")->text());
2145            // On vérifie que le message d'envoi est présent
2146            $this->assertContains('Le message a été transmis au référentiel arrêté.', $this->byCssSelector("#sousform-instruction .message .text")->text());
2147            //}}}
2148            
2149            // On se déconnecte
2150            $this->deconnect();
2151            
2152            // On se connecte en tant que "admin"
2153            $this->login("admin", "admin");
2154            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2155            $this->verifyNoErrors();
2156            //{{{ On remet les valeurs par défaut des paramètres
2157            //On clique sur Administration
2158            $this->byLinkText("Administration")->click();
2159            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2160            $this->verifyNoErrors();
2161            //On clique sur Paramètre
2162            $this->byLinkText("Paramètre")->click();
2163            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2164            $this->verifyNoErrors();
2165            $this->changeParametreEvenementErp("erp_evenement_accepter_sans_reserve", $erp_evenement_accepter_sans_reserve);
2166            $this->changeParametreEvenementErp("erp_evenement_refuser_dossier", $erp_evenement_refuser_dossier);
2167            $this->changeParametreEvenementErp("option_referentiel_arrete", $option_referentiel_arrete);
2168            //}}}
2169            
2170            //On se déconnecte
2171            $this->logout();
2172        }
2173        
2174        /*
2175         * Cette méthode teste l'envoi de message au référentiel ERP lors de la
2176         * modification d'un dossier d'insruction
2177         */
2178        public function ttest_16_envoi_de_message_erp_dossier_instruction(){
2179            
2180            // On se connecte en tant que "admin"
2181            $this->login("admin", "admin");
2182            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2183            $this->verifyNoErrors();
2184            
2185            //{{{ On change deux variables erp_nature_dat et erp_dossier_nature_pc
2186            //On clique sur Administration
2187            $this->byLinkText("Administration")->click();
2188            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2189            $this->verifyNoErrors();
2190            //On clique sur Paramètre
2191            $this->byLinkText("Paramètre")->click();
2192            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2193            $this->verifyNoErrors();
2194            //On change la valeur des paramètres
2195            $erp_nature_dat = $this->changeParametreEvenementErp("erp_nature_dat", "AT");
2196            $erp_dossier_nature_pc = $this->changeParametreEvenementErp("erp_dossier_nature_pc", "PCI");
2197            //}}}
2198            // On se déconnecte
2199            $this->deconnect();
2200            
2201            //{{{Ajout d'un dossier AT par le guichet unique
2202            // On se connecte en tant que "guichet"
2203            $this->login("guichet", "guichet");
2204            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2205            $this->verifyNoErrors();
2206            //On clique sur Nouveau Dossier
2207            $this->byLinkText("Nouveau Dossier")->click();
2208            //On ajoute un dossier d'instruction de type AT
2209            $dossier = $this->addDossierInstruction(8, 8);
2210            //}}}
2211            // On se déconnecte
2212            $this->deconnect();
2213            
2214            // On se connecte en tant que "instr"
2215            $this->login("instr", "instr");
2216            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2217            $this->verifyNoErrors();
2218            //{{{On change le dossier en a été qualifié
2219            //On clique sur Recherche
2220            $this->byLinkText("Recherche")->click();
2221            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2222            $this->verifyNoErrors();
2223            //On cherche le dossier d'instruction
2224            $this->byId("dossier")->value(str_replace(" ", "", $dossier));
2225            // On valide la recherche
2226            $this->byId("adv-search-submit")->click();
2227            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2228            $this->verifyNoErrors();
2229            //On clique sur le dossier d'instruction
2230            $this->byLinkText($dossier)->click();
2231            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2232            $this->verifyNoErrors();
2233            //On clique sur modifier
2234            $this->byClassName("edit-16")->click();
2235            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2236            $this->verifyNoErrors();
2237            //On décoche à qualifier
2238            $this->byId("a_qualifier")->click();
2239            //On valide le formulaire
2240            $this->byName("f1")->submit();
2241            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2242            $this->verifyNoErrors();
2243            // On vérifie que le message de validation est présent
2244            $this->assertContains('Vos modifications ont bien été enregistrées.',
2245                $this->byCssSelector(".message .text")->text());
2246            // On vérifie que le message d'envoi est présent
2247            $this->assertContains('Le message a été transmis au référentiel ERP.',
2248                $this->byCssSelector(".message .text")->text());
2249            //}}}
2250            // On se déconnecte
2251            $this->deconnect();
2252            
2253            //{{{Ajout d'un dossier PC par le guichet unique
2254            // On se connecte en tant que "guichet"
2255            $this->login("guichet", "guichet");
2256            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2257            $this->verifyNoErrors();
2258            //On clique sur Nouveau Dossier
2259            $this->byLinkText("Nouveau Dossier")->click();
2260            //On ajoute un dossier d'instruction de type AT
2261            $dossier = $this->addDossierInstruction(1, 1);
2262            //}}}
2263            // On se déconnecte
2264            $this->deconnect();
2265            
2266            // On se connecte en tant que "instr"
2267            $this->login("instr", "instr");
2268            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2269            $this->verifyNoErrors();
2270            //{{{On change le dossier en ERP
2271            //On clique sur Recherche
2272            $this->byLinkText("Recherche")->click();
2273            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2274            $this->verifyNoErrors();
2275            //On cherche le dossier d'instruction
2276            $this->byId("dossier")->value(str_replace(" ", "", $dossier));
2277            // On valide la recherche
2278            $this->byId("adv-search-submit")->click();
2279            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2280            $this->verifyNoErrors();
2281            //On clique sur le dossier d'instruction
2282            $this->byLinkText($dossier)->click();
2283            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2284            $this->verifyNoErrors();
2285            //On clique sur modifier
2286            $this->byClassName("edit-16")->click();
2287            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2288            $this->verifyNoErrors();
2289            //On décoche à qualifier
2290            $this->byId("a_qualifier")->click();
2291            //On coche ERP
2292            $this->byId("erp")->click();
2293            //On valide le formulaire
2294            $this->byName("f1")->submit();
2295            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2296            $this->verifyNoErrors();
2297            // On vérifie que le message de validation est présent
2298            $this->assertContains('Vos modifications ont bien été enregistrées.',
2299                $this->byCssSelector(".message .text")->text());
2300            // On vérifie que le message d'envoi est présent
2301            $this->assertContains('Le message a été transmis au référentiel ERP.',
2302                $this->byCssSelector(".message .text")->text());
2303            //}}}
2304            // On se déconnecte
2305            $this->deconnect();
2306            
2307            // On se connecte en tant que "admin"
2308            $this->login("admin", "admin");
2309            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2310            $this->verifyNoErrors();
2311            
2312            //{{{ On change deux variables erp_nature_dat et erp_dossier_nature_pc
2313            //On clique sur Administration
2314            $this->byLinkText("Administration")->click();
2315            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2316            $this->verifyNoErrors();
2317            //On clique sur Paramètre
2318            $this->byLinkText("Paramètre")->click();
2319            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2320            $this->verifyNoErrors();
2321            //On change la valeur des paramètres
2322            $this->changeParametreEvenementErp("erp_nature_dat", $erp_nature_dat);
2323            $this->changeParametreEvenementErp("erp_dossier_nature_pc", $erp_dossier_nature_pc);
2324            //}}}
2325            
2326            //On se déconnecte
2327            $this->logout();
2328        }
2329        
2330        /**
2331         * Ajout d'un dossier d'instruction par le guichet unique
2332         *
2333         * @param int $dossier_autorisation_type_detaille L'identifiant du type détaillé
2334         *  de dossier d'autorisation
2335         * @param int $demande_type L'identifiant du type de la demande
2336         * @param int $type Type de la demande : nouveau dossier ou dossier existant
2337         * @return le numéro de dossier d'instruction qui vient d'être créé
2338         */
2339        public function addDossierInstruction($dossier_autorisation_type_detaille,
2340            $demande_type, $nom_petit = "test recopie",  $type = 1, $dossier = "" ){
2341            
2342            if ($type===1){
2343                //On choisit le type détaillé de dossier d'autorisation
2344                $this->select($this->byName("dossier_autorisation_type_detaille"))->selectOptionByValue($dossier_autorisation_type_detaille);
2345            }
2346            else {
2347                sleep(2);
2348                // On remplit le champ de recherche simple
2349                $this->byCssSelector("input[name='recherche']")->value(str_replace(' ', '', $dossier));
2350                // On clique sur le bouton recherche
2351                $this->byCssSelector(".ui-button")->click();sleep(1);
2352                // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2353                $this->verifyNoErrors();
2354                // On clique sur le résultat
2355                $this->byId("action-tab-demande_dossier_encours-left-consulter-".str_replace(' ', '', $dossier))->click();
2356                // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2357                $this->verifyNoErrors();
2358            }
2359            //On choisit le type de demande
2360            $this->select($this->byName("demande_type"))->selectOptionByValue($demande_type);
2361            //On clique sur "Saisir le pétitionnaire principal"
2362            $this->byId("add_petitionnaire_principal")->click();
2363            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2364            $this->verifyNoErrors();
2365            //On saisie le nom du pétitionnaire principal
2366            $this->byId("particulier_nom")->value($nom_petit);
2367            // On clique sur ajouter
2368            $this->byCssSelector("div#sformulaire form div.formControls input.om-button")->click();sleep(1);
2369            // On vérifie qu'il n'y ait pas d'erreur
2370            $this->verifynoerrors();
2371            //On vérifie que le pétitionnaire s'est bien ajouté
2372            // On vérifie le message
2373            $this->assertContains("Vos modifications ont bien été enregistrées.",$this->byCssSelector("#sousform-petitionnaire .message")->text());
2374            // On clique sur le bouton retour
2375            $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();sleep(1);
2376            // On vérifie que le text est présent
2377            $this->assertContains($nom_petit,$this->byCssSelector("#petitionnaire_principal_delegataire .synthese_demandeur")->text());
2378            // On clique sur ajouter
2379            $this->byXPath("//input[@value='Ajouter']")->click();
2380            // On vérifie qu'il n'y ait pas d'erreur
2381            $this->verifynoerrors();
2382            // On vérifie le message
2383            $this->assertContains("Création du dossier",$this->byCssSelector(".message")->text());
2384            //On récupère le numéro de dossier d'instruction créé
2385            if ($type===1){
2386                preg_match('/(PC|AT)[0-9 ]*(P0)/', $this->byCssSelector("#tabs-1 .message")->text(), $dossier);
2387            }
2388            elseif ($type===2){
2389                preg_match('/(PC|AT)[0-9 ]*(DT01)/', $this->byCssSelector("#tabs-1 .message")->text(), $dossier);
2390            }
2391            else{
2392                preg_match('/(PC|AT)[0-9 ]*[A-Z]*(0)[1-9]{1}/', $this->byCssSelector("#tabs-1 .message")->text(), $dossier);
2393            }
2394            return $dossier[0];
2395        }
2396    
2397        /*
2398         * Ajoute un événement
2399         * @param $libelle le libelle de l'événement
2400         *
2401         * @return l'identifiant de l'événement
2402         */
2403        private function addEvenement($libelle){
2404            
2405            //On clique sur le + du tableau
2406            $this->byClassName("add-16")->click();
2407            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2408            $this->verifyNoErrors();
2409            //On remplit les champs
2410            $this->byId("libelle")->value($libelle);
2411            $this->select($this->byName("etats_depuis_lequel_l_evenement_est_disponible[]"))
2412                ->selectOptionByValue("notifier");
2413            $this->select($this->byName("dossier_instruction_type[]"))
2414                ->selectOptionByValue("1");
2415            //On valide le formulaire
2416            $this->byName('f1')->submit();
2417            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2418            $this->verifyNoErrors();
2419            // On vérifie que le message de validation est présent
2420            $this->assertContains('Vos modifications ont bien été enregistrées.', $this->byCssSelector(".message .text")->text());
2421            //On clique sur le bouton retour
2422            $this->byLinkText("Retour")->click();
2423            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2424            $this->verifyNoErrors();
2425            //On saisie le nom due l'événement dans la recherche simple
2426            $this->byClassName("champFormulaire")->value($libelle);
2427            //On valide la recherche
2428            $this->byName('s1')->submit();
2429            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2430            $this->verifyNoErrors();
2431            //On clique sur l'événement
2432            $this->byLinkText($libelle)->click();
2433            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2434            $this->verifyNoErrors();
2435            //On récupère l'identifiant
2436            $evenementId = trim($this->byId("evenement")->text());
2437            //On clique sur le bouton Retour
2438            $this->byLinkText("Retour")->click();
2439            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2440            $this->verifyNoErrors();
2441            //On retourne l'identifiant
2442            return $evenementId;
2443        }
2444    
2445        /*
2446         * Modifie la valeur du paramètre du numéro de'événement pour le message ERP
2447         * @param string $parametre le libelle du paramètre
2448         * @param string $valeur la valeur à renseigner
2449         *
2450         * @return string la valeur précédente du paramètre
2451         */
2452        private function changeParametreEvenementErp($parametre, $valeur){
2453            
2454            //On vide le champ
2455            $this->byClassName("champFormulaire")->clear();
2456            //On saisie le nom de la variable dans la recherche simple
2457            $this->byClassName("champFormulaire")->value($parametre);
2458            //On valide la recherche
2459            $this->byName('s1')->submit();
2460            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2461            $this->verifyNoErrors();
2462            //On clique sur le paramètre
2463            $this->byLinkText($parametre)->click();
2464            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2465            $this->verifyNoErrors();
2466            //On clique sur modifier dans le portail d'action
2467            $this->byClassName("edit-16")->click();
2468            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2469            $this->verifyNoErrors();
2470            //On récupère la valeur actuelle du paramètre
2471            $parametre = trim($this->byId("valeur")->value());
2472            //On vide le champ
2473            $this->byId("valeur")->clear();
2474            //On change la valeur du paramètre
2475            $this->byId("valeur")->value($valeur);
2476            //On valide le formulaire
2477            $this->byName('f1')->submit();
2478            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2479            $this->verifyNoErrors();
2480            // On vérifie que le message de validation est présent
2481            $this->assertContains('Vos modifications ont bien été enregistrées.', $this->byCssSelector(".message .text")->text());
2482            //On clique sur le bouton retour
2483            $this->byLinkText("Retour")->click();
2484            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2485            $this->verifyNoErrors();
2486            //On clique sur le bouton retour
2487            $this->byLinkText("Retour")->click();
2488            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2489            $this->verifyNoErrors();
2490            //On retourne la valeur
2491            return $parametre;
2492        }
2493    
2494        /*
2495         * Ajoute une instruction
2496         * @param int $service l'identifiant du service
2497         */
2498        private function addInstruction($evenement, $erp = true){
2499            
2500            //On clique sur le + du tableau
2501            $this->byClassName("add-16")->click();
2502            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2503            $this->verifyNoErrors();
2504            //On choisit l'événement
2505            $this->select($this->byId("evenement"))->selectOptionByValue($evenement);
2506            //On valide le formulaire
2507            $this->byName("f2")->submit();
2508            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2509            $this->verifyNoErrors();
2510            // On vérifie que le message de validation est présent
2511            $this->assertContains('Vos modifications ont bien été enregistrées.', $this->byCssSelector("#sousform-instruction .message .text")->text());
2512            if($erp) {
2513                // On vérifie que le message d'envoi est présent
2514                $this->assertContains('Le message a été transmis au référentiel ERP.', $this->byCssSelector("#sousform-instruction .message .text")->text());
2515            }
2516            //On clique sur le bouton retour
2517            $this->byLinkText("Retour")->click();
2518            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2519            $this->verifyNoErrors();
2520        }
2521    
2522        /**
2523         * Permet de vérifier l'état d'un DA en fonction de l'état de ses DI.
2524         * @param  string  $dossier numéro de dossier
2525         * @param  integer $event   numéro d'événement
2526         * @param  string  $etat    état du DA
2527         */
2528        private function verifierEtatDA($dossier, $event, $etat) {
2529            // On clique sur l'onglet "DA"
2530            $this->byId("dossier_autorisation")->click();
2531            sleep(1);
2532            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2533            $this->verifyNoErrors();
2534            $this->assertContains('En cours', $this->byCssSelector("#sousform-dossier_autorisation")->text());
2535            // retour sur l'ajout d'événement
2536            $this->byId("instruction")->click();
2537            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2538            $this->verifyNoErrors();
2539            $this->addInstruction($event, false);
2540            // On clique sur l'onglet "DA"
2541            $this->byId("dossier_autorisation")->click();
2542            sleep(1);
2543            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
2544            $this->verifyNoErrors();
2545            $this->assertContains($etat, $this->byCssSelector("#sousform-dossier_autorisation")->text());
2546      }      }
2547  }  }
2548    

Legend:
Removed from v.2185  
changed lines
  Added in v.2896

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26