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

Annotation of /trunk/tests/base.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2181 - (hide annotations)
Thu Aug 29 13:56:20 2013 UTC (11 years, 5 months ago) by fmichon
File size: 9329 byte(s)
Division de la méthode de login et de connect, connect permet de se connecter et login permet de tester que la connexion est réussie + Ajout de tests supplémentaires pour vérifier qu'il n'y a pas d'erreurs PHP

1 fmichon 1649 <?php
2     /**
3     *
4     *
5     * @package openfoncier
6     * @version SVN : $Id$
7     */
8    
9 fmichon 1654 class BaseTestCase extends PHPUnit_Extensions_SeleniumTestCase {
10 fmichon 1649
11     protected function setUp() {
12     $this->setBrowser("firefox");
13 fmichon 1654 $this->setBrowserUrl("http://localhost/");
14 softime 1990 $this->setSleep(1);
15 fmichon 1649 }
16    
17     protected function tearDown() {
18    
19     }
20    
21     protected function connect($login, $password) {
22 fmichon 2174 $this->open("openads/");
23 fmichon 1649 $this->type("id=login", $login);
24     $this->type("id=password", $password);
25     $this->click("name=login.action.connect");
26     $this->waitForPageToLoad("30000");
27     }
28    
29     protected function deconnect() {
30     $this->click("link=Déconnexion");
31     $this->waitForPageToLoad("30000");
32     }
33    
34 fmichon 1727 protected function login($login, $password) {
35     // on commence par se connecter
36     $this->connect($login, $password);
37 fmichon 1816 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
38     $this->verifyNoErrors();
39 fmichon 1727 // 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 fmichon 1816 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
47     $this->verifyNoErrors();
48 fmichon 1727 // 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 fmichon 1674 /**
55     * Cette méthode permet de fair un assert sur la NON présence d'un message
56 fmichon 1719 * indiquant une erreur de base de données ou une notice PHP
57 fmichon 1674 */
58 fmichon 1719 public function verifyNoErrors() {
59 fmichon 1674 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 fmichon 1719 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 fmichon 1674 }
80    
81 fmichon 1649 }
82    
83 softime 1990 /**
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 fmichon 2174 $this->url("openads/");
119 softime 1990 // On saisit le login dans le champ login
120     $this->byName("login")->value($login);
121     // On saisit le mot de passe dans le champ mot de passe
122     $this->byName("password")->value($password);
123     // On clique sur le bouton de connexion
124     $this->byname("login.action.connect")->click();
125     }
126    
127     /**
128     * Cette méthode permet de déconnecter l'utilisateur et de vérifier que la
129     * déconnexion s'est bien déroulée.
130     */
131     protected function deconnect() {
132     // On clique sur le lien de déconnexion
133     $element = $this->bycssselector("a.actions-logout");
134     $element->click();
135     }
136    
137     /**
138     * Cette méthode permet de connecter l'utilisateur à l'application et de
139     * vérifier que la connecion s'est bien déroulée.
140     */
141     protected function login($login, $password) {
142     // On se connecte
143     $this->connect($login, $password);
144     // Allonge le temps d'attente lors de la recherche d'élément
145     $this->timeouts()->implicitWait(10000);
146 fmichon 2181 // 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 ouverte
149     $element = $this->bycssselector("div.message span.text");
150     $this->assertequals("Votre session est maintenant ouverte.", $element->text());
151 softime 1990 }
152    
153     /**
154     * Cette méthode permet de déconnecter l'utilisateur et de vérifier que la
155     * déconnexion s'est bien déroulée.
156     */
157     protected function logout() {
158     // On se déconnecte
159     $this->deconnect();
160 fmichon 2181 // Réduit le temps d'attente lors de la recherche d'élément
161     $this->timeouts()->implicitWait(0);
162     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
163     $this->verifynoerrors();
164     // On vérifie qu'un message nous indique que la session est terminée
165     $element = $this->bycssselector("div.message span.text");
166     $this->assertequals("Votre session est maintenant terminée.", $element->text());
167     // On vérifie que le lien de déconnexion n'est pas présent
168     try {
169     $el = $this->bycssselector("a.actions-logout");
170     $this->fail("The element shouldn't exist.");
171     } catch (RuntimeException $e) {}
172 softime 1990 //Ferme la fenêtre
173     $this->closeWindow();
174     }
175    
176     /**
177     * Cette méthode permet de fair un assert sur la NON présence d'un message
178     * indiquant une erreur de base de données ou une notice PHP.
179 fmichon 2181 * XXX Remplacer les tests par des expressions régulières pour améliorer
180     * les performances et être plus exhaustif
181 softime 1990 */
182     public function verifynoerrors() {
183     // On récupère le contenu du rendu de la page
184     $source = $this->source();
185     // On vérifie la présence du message d'erreur de base de données
186     try {
187     $this->assertNotContains("Erreur de base de données. Contactez votre administrateur.", $source);
188     } catch (PHPUnit_Framework_AssertionFailedError $e) {
189     $this->fail("Failed asserting that the source does not contain \"Erreur de base de données\".");
190     }
191     // On vérifie la présence d'une erreur fatale PHP
192     try {
193     $this->assertNotContains("Fatal error:", $source);
194     } catch (PHPUnit_Framework_AssertionFailedError $e) {
195     $this->fail("Failed asserting that the source does not contain \"PHP Fatal error:\".");
196     }
197 fmichon 2181 // On vérifie la présence d'une erreur fatale PHP
198     try {
199     $this->assertNotContains("<b>Fatal error</b>", $source);
200     } catch (PHPUnit_Framework_AssertionFailedError $e) {
201     $this->fail("Failed asserting that the source does not contain \"PHP Fatal error:\".");
202     }
203 softime 1990 // On vérifie la présence d'une erreur de syntaxe PHP
204     try {
205     $this->assertNotContains("Parse error:", $source);
206     } catch (PHPUnit_Framework_AssertionFailedError $e) {
207     $this->fail("Failed asserting that the source does not contain \"PHP Parse error:\".");
208     }
209 fmichon 2181 // On vérifie la présence d'une erreur de syntaxe PHP
210     try {
211     $this->assertNotContains("<b>Parse error</b>", $source);
212     } catch (PHPUnit_Framework_AssertionFailedError $e) {
213     $this->fail("Failed asserting that the source does not contain \"PHP Parse error:\".");
214     }
215 softime 1990 // On vérifie la présence d'une notice PHP
216     try {
217     $this->assertNotContains("Notice:", $source);
218     } catch (PHPUnit_Framework_AssertionFailedError $e) {
219     $this->fail("Failed asserting that the source does not contain \"PHP Notice:\".");
220     }
221 fmichon 2181 // On vérifie la présence d'une notice PHP
222     try {
223     $this->assertNotContains("<b>Notice</b>", $source);
224     } catch (PHPUnit_Framework_AssertionFailedError $e) {
225     $this->fail("Failed asserting that the source does not contain \"PHP Notice:\".");
226     }
227 softime 1990 }
228    
229     /**
230     * Cette méthode est un test (fonctionnalité) qui permet de tester le
231     * fonctionnement de la classe Base2TestCase
232     */
233     //public function test_login_logout() {
234     // // On se connecte avec l'utilisateur admin
235     // $this->login("admin", "admin");
236     // // On se déconnecte
237     // $this->logout();
238     //}
239    
240     }
241    
242 fmichon 1649 ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26