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

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

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

revision 1649 by fmichon, Thu Apr 11 16:16:19 2013 UTC revision 2174 by fmichon, Wed Aug 28 16:19:00 2013 UTC
# Line 6  Line 6 
6   * @version SVN : $Id$   * @version SVN : $Id$
7   */   */
8    
9  class FIBaseTestCase extends PHPUnit_Extensions_SeleniumTestCase {  class BaseTestCase extends PHPUnit_Extensions_SeleniumTestCase {
10    
11      protected function setUp() {      protected function setUp() {
12          $this->setBrowser("firefox");          $this->setBrowser("firefox");
13          $this->setBrowserUrl("http://localhost/openfoncier");          $this->setBrowserUrl("http://localhost/");
14          // $this->setSleep(1);          $this->setSleep(1);
15      }      }
16    
17      protected function tearDown() {      protected function tearDown() {
# Line 19  class FIBaseTestCase extends PHPUnit_Ext Line 19  class FIBaseTestCase extends PHPUnit_Ext
19      }      }
20    
21      protected function connect($login, $password) {      protected function connect($login, $password) {
22          $this->open("/");          $this->open("openads/");
23          $this->type("id=login", $login);          $this->type("id=login", $login);
24          $this->type("id=password", $password);          $this->type("id=password", $password);
25          $this->click("name=login.action.connect");          $this->click("name=login.action.connect");
# Line 31  class FIBaseTestCase extends PHPUnit_Ext Line 31  class FIBaseTestCase extends PHPUnit_Ext
31          $this->waitForPageToLoad("30000");          $this->waitForPageToLoad("30000");
32      }      }
33    
34        protected function login($login, $password) {
35            // on commence par se connecter
36            $this->connect($login,  $password);
37            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
38            $this->verifyNoErrors();
39            // On doit être connecté
40            $this->assertTrue($this->isTextPresent("Votre session est maintenant ouverte."));
41        }
42    
43        protected function logout() {
44            // puis on se déconnecte
45            $this->deconnect();
46            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
47            $this->verifyNoErrors();
48            // on doit avoir un message nous indiquant que la session est finie
49            $this->assertTrue($this->isTextPresent("Votre session est maintenant terminée."));
50            // on ne doit plus avoir de lien de déconnexion
51            $this->assertFalse($this->isElementPresent("link=Déconnexion"));
52        }
53    
54        /**
55         * Cette méthode permet de fair un assert sur la NON présence d'un message
56         * indiquant une erreur de base de données ou une notice PHP
57         */
58        public function verifyNoErrors() {
59            try {
60                $this->assertFalse($this->isTextPresent("Erreur de base de données. Contactez votre administrateur."));
61            } catch (PHPUnit_Framework_AssertionFailedError $e) {
62                array_push($this->verificationErrors, "Erreur de base de données.");
63            }
64            try {
65                $this->assertFalse($this->isTextPresent("Parse error:"));
66            } catch (PHPUnit_Framework_AssertionFailedError $e) {
67                array_push($this->verificationErrors, "PHP Parse error:");
68            }
69            try {
70                $this->assertFalse($this->isTextPresent("Fatal error:"));
71            } catch (PHPUnit_Framework_AssertionFailedError $e) {
72                array_push($this->verificationErrors, "PHP Fatal error:");
73            }
74            try {
75                $this->assertFalse($this->isTextPresent("Notice:"));
76            } catch (PHPUnit_Framework_AssertionFailedError $e) {
77                array_push($this->verificationErrors, "PHP Notice:");
78            }
79        }
80    
81    }
82    
83    /**
84     * Cette classe est une classe de base à utiliser par les tests (thèmes)
85     * fonctionnels utilisant Selenium2 pour avoir les méthodes communes setUp,
86     * tearDown ainsi que certaines méthodes utilitaires comme login, logout, ou
87     * verifiynoerrors...
88     */
89    class Base2TestCase extends PHPUnit_Extensions_Selenium2TestCase {
90    
91        /**
92         * Cette méthode est appelée avant le lancement de chaque test
93         * (fonctionnalité).
94         */
95        protected function setUp() {      
96            // On positionne le navigateur
97            $this->setBrowser("firefox");
98            //$this->setBrowser("chrome");
99            // On positionne l'URL de base
100            $this->setBrowserUrl("http://localhost/");
101        }
102    
103        /**
104         * Cette méthode est appelée après le lancement de chaque test
105         * (fonctionnalité).
106         */
107        protected function tearDown() {
108            //
109            
110        }
111    
112        /**
113         * Cette méthode permet de connecter l'utilisateur à l'application et de
114         * vérifier que la connecion s'est bien déroulée.
115         */
116        protected function connect($login, $password) {
117            // On ouvre l'url openexemple
118            $this->url("openads/");
119            // On vérifie que le titre de la page HTML est le bon
120            $this->assertequals(":: openMairie :: openADS", $this->title());
121            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
122            $this->verifynoerrors();
123            // On saisit le login dans le champ login
124            $this->byName("login")->value($login);
125            // On saisit le mot de passe dans le champ mot de passe
126            $this->byName("password")->value($password);
127            // On clique sur le bouton de connexion
128            $this->byname("login.action.connect")->click();
129            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
130            $this->verifynoerrors();
131            // On vérifie qu'un message nous indique que la session est ouverte
132            $element = $this->bycssselector("div.message span.text");
133            $this->assertequals("Votre session est maintenant ouverte.", $element->text());
134        }
135    
136        /**
137         * Cette méthode permet de déconnecter l'utilisateur et de vérifier que la
138         * déconnexion s'est bien déroulée.
139         */
140        protected function deconnect() {
141            // On clique sur le lien de déconnexion
142            $element = $this->bycssselector("a.actions-logout");
143            $element->click();
144            // Réduit le temps d'attente lors de la recherche d'élément
145            $this->timeouts()->implicitWait(0);
146            // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
147            $this->verifynoerrors();
148            // On vérifie qu'un message nous indique que la session est terminée
149            $element = $this->bycssselector("div.message span.text");
150            $this->assertequals("Votre session est maintenant terminée.", $element->text());
151            // On vérifie que le lien de déconnexion n'est pas présent
152            try {
153                $el = $this->bycssselector("a.actions-logout");
154                $this->fail("The element shouldn't exist.");
155            } catch (RuntimeException $e) {}
156        }
157    
158        /**
159         * Cette méthode permet de connecter l'utilisateur à l'application et de
160         * vérifier que la connecion s'est bien déroulée.
161         */
162        protected function login($login, $password) {
163            // On se connecte
164            $this->connect($login,  $password);
165            // Allonge le temps d'attente lors de la recherche d'élément
166            $this->timeouts()->implicitWait(10000);
167        }
168    
169        /**
170         * Cette méthode permet de déconnecter l'utilisateur et de vérifier que la
171         * déconnexion s'est bien déroulée.
172         */
173        protected function logout() {
174            // On se déconnecte
175            $this->deconnect();
176            //Ferme la fenêtre
177            $this->closeWindow();
178        }
179    
180        /**
181         * Cette méthode permet de fair un assert sur la NON présence d'un message
182         * indiquant une erreur de base de données ou une notice PHP.
183         */
184        public function verifynoerrors() {
185            // On récupère le contenu du rendu de la page
186            $source = $this->source();
187            // On vérifie la présence du message d'erreur de base de données
188            try {
189                $this->assertNotContains("Erreur de base de données. Contactez votre administrateur.", $source);
190            } catch (PHPUnit_Framework_AssertionFailedError $e) {
191                $this->fail("Failed asserting that the source does not contain \"Erreur de base de données\".");
192            }
193            // On vérifie la présence d'une erreur fatale PHP
194            try {
195                $this->assertNotContains("Fatal error:", $source);
196            } catch (PHPUnit_Framework_AssertionFailedError $e) {
197                $this->fail("Failed asserting that the source does not contain \"PHP Fatal error:\".");
198            }
199            // On vérifie la présence d'une erreur de syntaxe PHP
200            try {
201                $this->assertNotContains("Parse error:", $source);
202            } catch (PHPUnit_Framework_AssertionFailedError $e) {
203                $this->fail("Failed asserting that the source does not contain \"PHP Parse error:\".");
204            }
205            // On vérifie la présence d'une notice PHP
206            try {
207                $this->assertNotContains("Notice:", $source);
208            } catch (PHPUnit_Framework_AssertionFailedError $e) {
209                $this->fail("Failed asserting that the source does not contain \"PHP Notice:\".");
210            }
211        }
212    
213        /**
214         * Cette méthode est un test (fonctionnalité) qui permet de tester le
215         * fonctionnement de la classe Base2TestCase
216         */
217        //public function test_login_logout() {
218        //    // On se connecte avec l'utilisateur admin
219        //    $this->login("admin", "admin");
220        //    // On se déconnecte
221        //    $this->logout();
222        //}
223    
224  }  }
225    
226  ?>  ?>

Legend:
Removed from v.1649  
changed lines
  Added in v.2174

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26