Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 520 | Rev 786 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
520 mathilde 1
<?php
2
require_once dirname(__FILE__).'/../ServiceEflorePhpUnit.php';
3
 
4
class GraphiquesBaseflorTest extends ServiceEflorePhpUnit {
5
 
6
	private $svg;
7
 
8
	public function __construct() {
9
		$this->projet = 'baseflor';
10
		$this->service = 'graphiques';
11
	}
12
 
13
	//++ ------------------------------------Test des ressources -----------------------------++
14
 
15
	public function testRessourceTypeGraphiqueInexistante() {
16
		$ressources = array('','bdtfx.nn:73256');
17
		$parametres = array();
18
		$retour = $this->consulterBrut($ressources, $parametres);
19
		$messageAttendu =  "Erreur dans l'url de votre requête :".
20
				"</br> precisez le graphique -> \"sol\" ou \"climat\".";
21
		$this->assertEquals($messageAttendu, $retour,
22
				"Il faut indiquer l'absence de la ressource 'sol' ou 'climat'.");
23
	}
24
 
25
	public function testRessourceReferentielNnInexistante() {
26
		$ressources = array('sol','');
27
		$parametres = array();
28
		$retour = $this->consulterBrut($ressources, $parametres);
29
		$messageAttendu =
30
		  "Erreur dans l'url de votre requête : précisez le référentiel et le numéro nomenclatural sous la forme {bdnt}.nn:{nn}.";
31
		$this->assertEquals($messageAttendu, $retour,
32
					"Il faut indiquer l'absence de la ressource {bdnt}.nn:{nn}.");
33
	}
34
 
35
	public function testRessourceReferentielTypeGraphiqueErronee() {
36
		$ressources = array('humdite','bdtfx.nn:73256');
37
		$parametres = array();
38
		$retour = $this->consulterBrut($ressources, $parametres);
39
		$messageAttendu = "Erreur dans l'url de votre requête :".
40
				"</br> precisez le graphique -> \"sol\" ou \"climat\".";
41
		$this->assertEquals($messageAttendu, $retour,
42
						"Il faut indiquer si la ressource type de graphique  n'est ni sol' ni 'climat'.");
43
	}
44
 
45
	public function testRessourceReferentielNnEronne() {
46
		$ressources = array('sol','gnnyh');
47
		$parametres = array();
48
		$retour = $this->consulterBrut($ressources, $parametres);
49
		$messageAttendu =
50
		"Erreur dans l'url de votre requête : précisez le référentiel et le numéro nomenclatural sous la forme {bdnt}.nn:{nn}.";
51
		$this->assertEquals($messageAttendu, $retour,
52
						"Il faut indiquer si la ressource {bdnt}.nn:{nn} est erronée.");
53
	}
54
 
55
	public function testRessourceReferentielInconnu() {
56
		$ressources = array('climat','btdjv.nn:73256');
57
		$parametres = array();
58
		$retour = $this->consulterBrut($ressources, $parametres);
59
		$messageAttendu = "Le référentiel btdjv n'existe pas.";
60
		$this->assertEquals($messageAttendu, $retour,
61
							"Il faut indiquer si le référentiel est inconnu.");
62
	}
63
 
64
	public function testRessourceNNInconnu() {
65
		$ressources = array('sol','bdtfx.nn:3');
66
		$parametres = array();
67
		$retour = $this->consulterBrut($ressources, $parametres);
68
		$messageAttendu = "Les données recherchées sont introuvables.";
69
		$this->assertEquals($messageAttendu, $retour,
70
								"Il faut indiquer si une requête ne renvoie pas de résultats.");
71
	}
72
 
73
	//++ ------------------------------------Test des paramètres -----------------------------++
74
 
75
	public function testParametreInconnu() {
76
		$ressources = array('sol','bdtfx.nn:73256');
77
		$parametres = array('paramatre' => 'image/jpeg');
78
		$retour = $this->consulterBrut($ressources, $parametres);
79
		$messageAttendu = "Erreur : Le paramètre paramatre est inconnu.";
80
		$this->assertEquals($messageAttendu, $retour,
81
										"Il faut indiquer si un paramètre  est inconnu.");
82
	}
83
 
84
	public function testParametreRetourInconnu() {
85
		$ressources = array('sol','bdtfx.nn:73256');
86
		$parametres = array('retour' => 'image/jpeg');
87
		$retour = $this->consulterBrut($ressources, $parametres);
88
		$messageAttendu =
89
			"Erreur : valeur inconnue. Choisissez le format de retour pour le paramètre retour : image/svg%2Bxml ou image/png.";
90
		$this->assertEquals($messageAttendu, $retour,
91
									"Il faut indiquer si la valeur du  paramètre retour est inconnue.");
92
	}
93
 
94
	public function testParametreRetourAbsent() {
95
		$ressources = array('sol','bdtfx.nn:73256');
96
		$parametres = array('retour' => '');
97
		$retour = $this->consulterBrut($ressources, $parametres);
98
		$messageAttendu =
99
			"Erreur : valeur inconnue. Choisissez le format de retour pour le paramètre retour : image/svg%2Bxml ou image/png.";
100
		$this->assertEquals($messageAttendu, $retour,
101
										"Il faut indiquer si la valeur du  paramètre retour est absente.");
102
	}
103
 
104
	public function testParametreRetourFormatAbsent() {
105
		$ressources = array('sol','bdtfx.nn:73256');
106
		$parametres = array('retour.format' => '');
107
		$retour = $this->consulterBrut($ressources, $parametres);
108
		$messageAttendu = "Erreur : valeur inconnue. Entrez la largeur voulue (en pixels) pour le paramètre retour.format.";
109
		$this->assertEquals($messageAttendu, $retour,
110
						"Il faut indiquer si la valeur du  paramètre retour.format est absente.");
111
	}
112
 
113
	public function testParametreRetourFormatInconnu() {
114
		$ressources = array('sol','bdtfx.nn:73256');
115
		$parametres = array('retour.format' => 'dhgkg22');
116
		$retour = $this->consulterBrut($ressources, $parametres);
117
		$messageAttendu = "Erreur : valeur inconnue. Entrez la largeur voulue (en pixels) pour le paramètre retour.format.";
118
		$this->assertEquals($messageAttendu, $retour,
119
					"Il faut indiquer si la valeur du  paramètre retour.format est inconnue.");
120
	}
121
 
122
	public function testParametreVersionProjetInconnu() {
123
		$ressources = array('sol','bdtfx.nn:73256');
124
		$parametres = array('version.projet' => 'dhgkg22');
125
		$retour = $this->consulterBrut($ressources, $parametres);
126
		$messageAttendu = "Erreur : La version est inconnue.";
127
		$this->assertEquals($messageAttendu, $retour,
128
					"Il faut indiquer si la valeur du  paramètre version.projet est inconnue.");
129
	}
130
 
131
	public function testParametreVersionProjetAbsent() {
132
		$ressources = array('sol','bdtfx.nn:73256');
133
		$parametres = array('version.projet' => '');
134
		$retour = $this->consulterBrut($ressources, $parametres);
135
		$messageAttendu = "Erreur : La version est inconnue.";
136
		$this->assertEquals($messageAttendu, $retour,
137
					"Il faut indiquer si la valeur du  paramètre version.projet est absente.");
138
	}
139
 
140
	//++------------------------------------------test des fichiers -------------------------++
141
 
142
	public function testRetourEstUnSVG(){
143
		$ressourcesListe = array(
144
			array('sol','bdtfx.nn:73256'),
145
			array('climat','bdtfx.nn:73256'),
146
			array('climat','bdtfx.nn:101128'),
147
			array('sol','bdtfx.nn:101128')
148
			);
149
		$parametresListe = array(
150
			array('retour' => 'image/svg+xml'),
151
			array()
152
			);
153
		foreach ($ressourcesListe as $ressources) {
154
			foreach ($parametresListe as $parametres) {
155
				$retour = $this->consulterBrut($ressources, $parametres);
156
				$this->chargerXml($retour);
783 raphael 157
				$this->etreSvg($retour);
520 mathilde 158
			}
159
		}
160
	}
161
 
162
	public function testSVGPresenceValeursEcolo_baseflor(){
163
		$ressourcesListe = array(
164
			array('sol','bdtfx.nn:73256'),
165
			array('climat','bdtfx.nn:73256'),
166
		);
167
		$parametresListe = array();
168
		foreach ($ressourcesListe as $ressources) {
169
				$retour = $this->consulterBrut($ressources, $parametres);
170
				$this->chargerXml($retour);
783 raphael 171
				$this->etreSvg($retour);
520 mathilde 172
				$test = false;
173
				$curseurs = $this->svg->getElementsByTagName('circle');
174
				foreach ($curseurs as $curseur){
175
					$classe = $curseur->getAttribute('class');
176
					if ($classe == 'curseur') {
177
						$test = true;
178
						break;
179
					}
180
				}
181
		}
182
		$this->assertTrue($test,"Le graphique renvoyé par $retour est vide de données écologiques.");
183
	}
184
 
185
	public function testSVGPresenceValeursEcolo_rangSup(){
186
		$ressourcesListe = array(
187
			array('climat','bdtfx.nn:101128'),
188
			array('sol','bdtfx.nn:101128')
189
		);
190
		$parametresListe = array();
191
		foreach ($ressourcesListe as $ressources) {
192
 
193
				$retour = $this->consulterBrut($ressources, $parametres);
194
				$this->chargerXml($retour);
783 raphael 195
				$this->etreSvg($retour);
520 mathilde 196
				$test = false;
197
 
198
 
199
				$cases = $this->svg->getElementsByTagName('rect');
200
				// ne fonctionne pas :
201
				/*$dompath = new DOMXPath($this->svg);
202
				$dompath->registerNamespace("svg", "http://www.w3.org/2000/svg");
203
				$cases = $dompath->query('svg:rect[@fill and not(@id="fond" or @id="cache")]');*/
204
 
205
				foreach ($cases as $case){
206
					$classe = $case->getAttribute('class');
207
					if ($classe != 'fond' and $classe  != 'cache' and $case->getAttribute('fill') != 'none') {
208
						$test = true;
209
						break;
210
					}
211
				}
212
		}
213
		$this->assertTrue($test,"Le graphique renvoyé par $retour est vide de données écologiques.");
214
	}
215
 
216
	public function testExistenceDesSvgDeBase(){
217
			$this->assertFileExists(config::get('chemin')."sol.svg","le svg de base sol.svg n'existe pas.");
218
			$this->assertFileExists(config::get('chemin')."climat.svg","le svg de base climat.svg n'existe pas.");
219
			$this->assertFileExists(config::get('chemin')."sol_min_max.svg","le svg de base sol_min_max.svg n'existe pas.");
220
			$this->assertFileExists(config::get('chemin')."climat_min_max.svg","le svg de base climat_min_max.svg n'existe pas.");
221
 
222
	}
223
 
224
 
225
 
226
	public function testCreationSvgEtPngDansCache(){
227
		$convertisseur = config::get('convertisseur');
228
		if ($convertisseur == 'rsvg') {
229
			$ressourcesListe = array(
230
			array('sol','bdtfx.nn:73256'),
231
			array('climat','bdtfx.nn:73256'),
232
			array('climat','bdtfx.nn:101128'),
233
			array('sol','bdtfx.nn:101128'));
234
			$parametresListe = array('retour' => 'image/png');
235
			foreach ($ressourcesListe as $ressources) {
236
				$this->consulterBrut($ressources, $parametres);
237
				$fichier = config::get('cache.stockageChemin')."".$this->getFichier($ressources);
238
				$this->assertFileExists($fichier.".svg"," {$fichier}.svg n'existe pas.");
239
				$this->assertFileExists($fichier.".png"," {$fichier}.png n'existe pas.");
240
			}
241
		}
242
	}
243
 
244
	//++------------------------------------------fonctions utiles-------------------------++
245
 
246
	private function chargerXml($retour) {
247
		$this->svg = new DOMDocument();
248
		$chargement = $this->svg->loadXML($retour);
249
 
250
		$this->assertTrue($chargement,"le fichier ne s'est pas chargé.");
251
	}
252
 
253
 
254
	private function etreSvg($retour) {
255
		$racineElement = $this->svg->documentElement;
256
		$this->assertEquals('svg', $racineElement->tagName,"$retour ne renvoie pas un svg." );
257
	}
258
 
259
	private function getFichier($ressources) {
260
			$idfichier = str_replace(".","-",$ressources[1]);
261
			$idfichier = str_replace(':','-',$idfichier);
262
			$idfichier .= "-".$ressources[0];
263
			return $idfichier;
264
	}
265
}
266
 
267
?>