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

Contents of /trunk/tests/base.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2174 - (show annotations)
Wed Aug 28 16:19:00 2013 UTC (11 years, 5 months ago) by fmichon
File size: 8507 byte(s)
Mise en cohérence des URL : tous les tests se font désormais sur la même URL http://localhost/openads/ 

1 <?php
2 /**
3 *
4 *
5 * @package openfoncier
6 * @version SVN : $Id$
7 */
8
9 class BaseTestCase extends PHPUnit_Extensions_SeleniumTestCase {
10
11 protected function setUp() {
12 $this->setBrowser("firefox");
13 $this->setBrowserUrl("http://localhost/");
14 $this->setSleep(1);
15 }
16
17 protected function tearDown() {
18
19 }
20
21 protected function connect($login, $password) {
22 $this->open("openads/");
23 $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 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 ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26