Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 949 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 949 Rev 958
1
<?php
1
<?php
2
 
2
 
3
require_once dirname(__FILE__).'/../ServiceEflorePhpUnit.php';
3
require_once dirname(__FILE__).'/../ServiceEflorePhpUnit.php';
4
 
4
 
5
class InformationsBaseflorTest extends ServiceEflorePhpUnit {
5
class InformationsBaseflorTest extends ServiceEflorePhpUnit {
6
	
6
	
7
	public function __construct() {
7
	public function __construct() {
8
		$this->projet = 'baseflor';
8
		$this->projet = 'baseflor';
9
		$this->service = 'informations';
9
		$this->service = 'informations';
10
	}
10
	}
11
	
11
	
12
	
12
	
13
	//++ ------------------------------------Test des ressources -----------------------------++
13
	//++ ------------------------------------Test des ressources -----------------------------++
14
	
14
	
15
	public function testRessourceReferentielInconnu() {
15
	public function testRessourceReferentielInconnu() {
16
		$ressources = array('dgoju.nn:73256');
16
		$ressources = array('dgoju.nn:73256');
17
		$parametres = array();
17
		$parametres = array();
18
		$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
18
		$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
19
		$messageAttendu =
19
		$messageAttendu =
20
			  "Erreur dans l'url de votre requête :".
20
			  "Erreur dans l'url de votre requête :".
21
				" </br> Le référentiel \" dgoju \" n'existe pas.";
21
				" </br> Le référentiel \" dgoju \" n'existe pas.";
22
		$this->assertEquals($messageAttendu, $retour,
22
		$this->assertEquals($messageAttendu, $retour,
23
						"Il faut indiquer un référentiel inconnu.");
23
						"Il faut indiquer un référentiel inconnu.");
24
	}
24
	}
25
	
25
	
26
	public function testRessourceInconnue() {
26
	public function testRessourceInconnue() {
27
		$ressources = array('inconnue');
27
		$ressources = array('inconnue');
28
		$parametres = array();
28
		$parametres = array();
29
		$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
29
		$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
30
		$messageAttendu =
30
		$messageAttendu =
31
				  "Erreur dans l'url de votre requête : </br> La ressource demandée n'existe pas.";
31
				  "Erreur dans l'url de votre requête : </br> La ressource demandée n'existe pas.";
32
		$this->assertEquals($messageAttendu, $retour,
32
		$this->assertEquals($messageAttendu, $retour,
33
							"Il faut indiquer si une ressource est eronnée.");
33
							"Il faut indiquer si une ressource est eronnée.");
34
	}
34
	}
35
	
35
	
36
	public function testRessourceNNInconnu() {
36
	public function testRessourceNNInconnu() {
37
		$ressources = array('bdtfx.nn:3');
37
		$ressources = array('bdtfx.nn:3');
38
		$parametres = array();
38
		$parametres = array();
39
		$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
39
		$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
40
		$messageAttendu = "Les données recherchées sont introuvables.";
40
		$messageAttendu = "Les données recherchées sont introuvables.";
41
		$this->assertEquals($messageAttendu, $retour,
41
		$this->assertEquals($messageAttendu, $retour,
42
			"Il faut indiquer si une requête ne renvoie pas de résultats.");
42
			"Il faut indiquer si une requête ne renvoie pas de résultats.");
43
	}
43
	}
44
	
44
	
45
	//++ ------------------------------------Test des paramètres -----------------------------++
45
	//++ ------------------------------------Test des paramètres -----------------------------++
46
	
46
	
47
	public function testParametreInconnu() {
47
	public function testParametreInconnu() {
48
		$ressourcesList = array(
48
		$ressourcesList = array(
49
			array('bdtfx.nn:73256'),
49
			array('bdtfx.nn:73256'),
50
			array('bdtfx.nn:101128'));
50
			array('bdtfx.nn:101128'));
51
		$parametres = array('paramatre' => 'image/jpeg');
51
		$parametres = array('paramatre' => 'image/jpeg');
52
		foreach ($ressourcesList as $ressources) {
52
		foreach ($ressourcesList as $ressources) {
53
			$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
53
			$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
54
			$messageAttendu = "Erreur dans les parametres de votre requête :".
54
			$messageAttendu = "Erreur dans les parametres de votre requête :".
55
										" </br> Le paramètre \" paramatre \" n'existe pas.";
55
										" </br> Le paramètre \" paramatre \" n'existe pas.";
56
			$this->assertEquals($messageAttendu, $retour,
56
			$this->assertEquals($messageAttendu, $retour,
57
				"Il faut indiquer si un paramètre est inconnu.");
57
				"Il faut indiquer si un paramètre est inconnu.");
58
		}
58
		}
59
		
59
		
60
	}
60
	}
61
	
61
	
62
	public function testParametreCategorieInconnue() {
62
	public function testParametreCategorieInconnue() {
63
		$ressourcesList = array(
63
		$ressourcesList = array(
64
			array('bdtfx.nn:73256'),
64
			array('bdtfx.nn:73256'),
65
			array('bdtfx.nn:101128'));
65
			array('bdtfx.nn:101128'));
66
		$parametres = array('categorie' => 'inventé');
66
		$parametres = array('categorie' => 'inventé');
67
		foreach ($ressourcesList as $ressources) {
67
		foreach ($ressourcesList as $ressources) {
68
			$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
68
			$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
69
			$messageAttendu = "Valeur de paramètre inconnue pour 'categorie'. Ce paramètre n'est pas autorisé";
69
			$messageAttendu = "Valeur de paramètre inconnue pour 'categorie'. Ce paramètre n'est pas autorisé";
70
			$this->assertContains($messageAttendu, $retour,
70
			$this->assertContains($messageAttendu, $retour,
71
								"Il faut indiquer si la valeur du paramètre categorie est inconnue pour (" . implode(',', $ressources) . ").");
71
								"Il faut indiquer si la valeur du paramètre categorie est inconnue pour (" . implode(',', $ressources) . ").");
72
		}
72
		}
73
	}
73
	}
74
	
74
	
75
	public function testParametreNavigationDepartSansLimite() {
75
	public function testParametreNavigationDepartSansLimite() {
76
		$ressources = array();
76
		$ressources = array();
77
		$parametres = array('navigation.depart' => 10);
77
		$parametres = array('navigation.depart' => 10);
78
		$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
78
		$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
79
		$messageAttendu = "indiquez également la valeur pour le paramètre navigation.limite.";
79
		$messageAttendu = "indiquez également la valeur pour le paramètre navigation.limite.";
80
		$this->assertEquals($messageAttendu, $retour,
80
		$this->assertEquals($messageAttendu, $retour,
81
					"Navigation.depart doit être accompagné de navigation.limite ensemble.");
81
					"Navigation.depart doit être accompagné de navigation.limite ensemble.");
82
 
82
 
83
	}
83
	}
84
	
84
	
85
	public function testParametreDepartSuperieurTotalResultats() {
85
	public function testParametreDepartSuperieurTotalResultats() {
86
		$ressources = array();
86
		$ressources = array();
87
		$parametres = array('navigation.depart' => 20000, 'navigation.limite' => 10 );
87
		$parametres = array('navigation.depart' => 20000, 'navigation.limite' => 10 );
88
			$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
88
			$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
89
			$messageAttendu = 
89
			$messageAttendu = 
90
				"Erreur : la valeur pour le paramètre navigation.départ est supérieure".
90
				"Erreur : la valeur pour le paramètre navigation.départ est supérieure".
91
				" au nombre total de résultats.";
91
				" au nombre total de résultats.";
92
			$this->assertEquals($messageAttendu, $retour,
92
			$this->assertEquals($messageAttendu, $retour,
93
						"Il faut indiquer si la valeur de départ est supérieure au nombre de résultats.");
93
						"Il faut indiquer si la valeur de départ est supérieure au nombre de résultats.");
94
	}
94
	}
95
	
95
	
96
	
96
	
97
	public function testParametreNavigationErrone() {
97
	public function testParametreNavigationErrone() {
98
		$ressources = array();
98
		$ressources = array();
99
		$parametresList = array(
99
		$parametresList = array(
100
			array('navigation.depart' => -5, 'navigation.limite' => 10 ),
100
			array('navigation.depart' => -5, 'navigation.limite' => 10 ),
101
			array('navigation.depart' => 0, 'navigation.limite' => 'abc' ));
101
			array('navigation.depart' => 0, 'navigation.limite' => 'abc' ));
102
		$cles = array('navigation.depart','navigation.limite');
102
		$cles = array('navigation.depart','navigation.limite');
103
		$i = 0 ;
103
		$i = 0 ;
104
		foreach ($parametresList as $parametres) {
104
		foreach ($parametresList as $parametres) {
105
			$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
105
			$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
106
			$messageAttendu = "Erreur : valeur erronnée pour le paramètre {$cles[$i]}.";
106
			$messageAttendu = "Erreur : valeur erronnée pour le paramètre {$cles[$i]}.";
107
			$this->assertEquals($messageAttendu, $retour,
107
			$this->assertEquals($messageAttendu, $retour,
108
						"il faut indiquer lorsque qu'un des paramètres de navigation a une valeur impossible.");
108
						"il faut indiquer lorsque qu'un des paramètres de navigation a une valeur impossible.");
109
			$i++;
109
			$i++;
110
		}
110
		}
111
	}
111
	}
112
	
112
	
113
	public function testParametreRetourFormatErrone() {
113
	public function testParametreRetourFormatErrone() {
114
		$ressourcesList = array(
114
		$ressourcesList = array(
115
			array('bdtfx.nn:73256'),
115
			array('bdtfx.nn:73256'),
116
			array('bdtfx.nn:101128'));
116
			array('bdtfx.nn:101128'));
117
		$parametres = array('retour.format' => 'pdf');
117
		$parametres = array('retour.format' => 'pdf');
118
		foreach ($ressourcesList as $ressources) {
118
		foreach ($ressourcesList as $ressources) {
119
			$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
119
			$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
120
			$messageAttendu = "Valeur de paramètre inconnue pour 'retour.format'. Ce paramètre n'est pas autorisé";
120
			$messageAttendu = "Valeur de paramètre inconnue pour 'retour.format'. Ce paramètre n'est pas autorisé";
121
			$this->assertContains($messageAttendu, $retour,
121
			$this->assertContains($messageAttendu, $retour,
122
							"il faut indiquer lorsque que le paramètre retour.format a une valeur impossible.");
122
							"il faut indiquer lorsque que le paramètre retour.format a une valeur impossible.");
123
		}
123
		}
124
	}
124
	}
125
	
125
	
126
	public function testParametreVersionProjetInconnu() {
126
	public function testParametreVersionProjetInconnu() {
127
		$ressourcesList = array(
127
		$ressourcesList = array(
128
			array('bdtfx.nn:73256'),
128
			array('bdtfx.nn:73256'),
129
			array('bdtfx.nn:101128'));
129
			array('bdtfx.nn:101128'));
130
		$parametres = array('version.projet' => 'dhgkg22');
130
		$parametres = array('version.projet' => 'dhgkg22');
131
		foreach ($ressourcesList as $ressources){
131
		foreach ($ressourcesList as $ressources){
132
			$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
132
			$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
133
			$messageAttendu = "Erreur : La version est inconnue.";
133
			$messageAttendu = "Erreur : La version est inconnue.";
134
			$this->assertEquals($messageAttendu, $retour,
134
			$this->assertEquals($messageAttendu, $retour,
135
									"Il faut indiquer si la valeur du paramètre version.projet est inconnue.");
135
									"Il faut indiquer si la valeur du paramètre version.projet est inconnue.");
136
		}
136
		}
137
	}
137
	}
138
	
138
	
139
	//++ ------------------------------------Test du retour json correct -----------------------------++
139
	//++ ------------------------------------Test du retour json correct -----------------------------++
140
	
140
	
141
	//++ ---Informations ----++
141
	//++ ---Informations ----++
142
	
142
	
143
	public function testJsonBienFormeInformations() {
143
	public function testJsonBienFormeInformations() {
144
		$ressources = array();
144
		$ressources = array();
145
		$parametres = array('navigation.depart' => 10, 'navigation.limite' => 15);
145
		$parametres = array('navigation.depart' => 10, 'navigation.limite' => 15);
146
			$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
146
			$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
147
			$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
147
			$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
148
			$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
148
			$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
149
			$this->assertArrayHasKey('resultats', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
149
			$this->assertArrayHasKey('resultats', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
150
			$this->verifierJsonEnteteBienFormeInformations($retour, $ressources, $parametres);
150
			$this->verifierJsonEnteteBienFormeInformations($retour, $ressources, $parametres);
151
	}
151
	}
152
	
152
	
153
	private function verifierJsonEnteteBienFormeInformations($retour, $ressources, $parametres) {
153
	private function verifierJsonEnteteBienFormeInformations($retour, $ressources, $parametres) {
154
		//depart
154
		//depart
155
		$this->assertArrayHasKey('depart', $retour['entete'],
155
		$this->assertArrayHasKey('depart', $retour['entete'],
156
					"L'en-tête ne contient pas d'attribut : depart ");
156
					"L'en-tête ne contient pas d'attribut : depart ");
157
		$this->assertEquals($retour['entete']['depart'], $parametres['navigation.depart'],
157
		$this->assertEquals($retour['entete']['depart'], $parametres['navigation.depart'],
158
					"La valeur de départ est incorrecte dans l'en-tête.");
158
					"La valeur de départ est incorrecte dans l'en-tête.");
159
		//limite
159
		//limite
160
		$this->assertArrayHasKey('limite', $retour['entete'],
160
		$this->assertArrayHasKey('limite', $retour['entete'],
161
					"L'en-tête ne contient pas d'attribut : limite");
161
					"L'en-tête ne contient pas d'attribut : limite");
162
		$this->assertEquals($retour['entete']['limite'], $parametres['navigation.limite'],
162
		$this->assertEquals($retour['entete']['limite'], $parametres['navigation.limite'],
163
					"La valeur de limite est incorrecte dans l'en-tête.");
163
					"La valeur de limite est incorrecte dans l'en-tête.");
164
		//total
164
		//total
165
		$this->assertArrayHasKey('total', $retour['entete'],
165
		$this->assertArrayHasKey('total', $retour['entete'],
166
					"L'en-tête ne contient pas d'attribut : total ");
166
					"L'en-tête ne contient pas d'attribut : total ");
167
		$this->assertNotEquals('', $retour['entete']['total'],
167
		$this->assertNotEquals('', $retour['entete']['total'],
168
							"La valeur de total est vide dans l'en-tête.");
168
							"La valeur de total est vide dans l'en-tête.");
169
		//href
169
		//href
170
		$this->assertArrayHasKey('href.suivant', $retour['entete'],
170
		$this->assertArrayHasKey('href.suivant', $retour['entete'],
171
					"L'en-tête ne contient pas d'attribut : href.suivant ");
171
					"L'en-tête ne contient pas d'attribut : href.suivant ");
172
		$this->assertArrayHasKey('href.precedent', $retour['entete'],
172
		$this->assertArrayHasKey('href.precedent', $retour['entete'],
173
							"L'en-tête ne contient pas d'attribut : href.precedent ");
173
							"L'en-tête ne contient pas d'attribut : href.precedent ");
174
		$parametres_url =
174
		$parametres_url =
175
		array('navigation.depart' => ($retour['entete']['limite']+$retour['entete']['depart']),
175
		array('navigation.depart' => ($retour['entete']['limite']+$retour['entete']['depart']),
176
						 'navigation.limite' => $retour['entete']['limite'] );
176
						 'navigation.limite' => $retour['entete']['limite'] );
177
		$urlsuivant = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres_url);
177
		$urlsuivant = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres_url);
178
		$this->assertEquals($urlsuivant, $retour['entete']['href.suivant'],
178
		$this->assertEquals($urlsuivant, $retour['entete']['href.suivant'],
179
												"L' url $urlsuivant de l'entete est incorrecte.");
179
												"L' url $urlsuivant de l'entete est incorrecte.");
180
	}
180
	}
181
	
181
	
182
	public function testJsonResultatsHrefInformations() {
182
	public function testJsonResultatsHrefInformations() {
183
		$ressources = array();
183
		$ressources = array();
184
		$parametres = array('navigation.depart' => 370, 'navigation.limite' => 5);
184
		$parametres = array('navigation.depart' => 370, 'navigation.limite' => 5);
185
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
185
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
186
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
186
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
187
		foreach ($retour['resultats'] as $id => $valeurs) {
187
		foreach ($retour['resultats'] as $id => $valeurs) {
188
			if (!$valeurs['num_nomen']) {
188
			if (!$valeurs['num_nomen']) {
189
				$this->assertArrayNotHasKey('href', $valeurs,
189
				$this->assertArrayNotHasKey('href', $valeurs,
190
							"Il ne doit pas avoir de lien s'il n'y a pas de numéro nomenclatural (=0). Voir $url ");
190
							"Il ne doit pas avoir de lien s'il n'y a pas de numéro nomenclatural (=0). Voir $url ");
191
			}
191
			}
192
		}
192
		}
193
	}
193
	}
194
	
194
	
195
	public function testJsonNombreLimiteDemande() {
195
	public function testJsonNombreLimiteDemande() {
196
		$ressources = array();
196
		$ressources = array();
197
        $parametres = array();
197
        $parametres = array();
198
		$parametresList = array('navigation.depart' => 10, 'navigation.limite' => 15 );
198
		$parametresList = array('navigation.depart' => 10, 'navigation.limite' => 15 );
199
			$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
199
			$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
200
			$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
200
			$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
201
			$this->assertLessThanOrEqual(15, count($retour), 
201
			$this->assertLessThanOrEqual(15, count($retour), 
202
				"Le json renvoie un nombre de résultats trop important : entete. Voir : $url");
202
				"Le json renvoie un nombre de résultats trop important : entete. Voir : $url");
203
	}
203
	}
204
	
204
	
205
	//++ ---Informations.nn ----++
205
	//++ ---Informations.nn ----++
206
	
206
	
207
	public function testJsonInformationsNN_min() {
207
	public function testJsonInformationsNN_min() {
208
		$ressourcesList = array(
208
		$ressourcesList = array(
209
			array('bdtfx.nn:73256'),
209
			array('bdtfx.nn:73256'),
210
			array('bdtfx.nn:101128'));
210
			array('bdtfx.nn:101128'));
211
		$parametres = array('retour.format' => 'min' );
211
		$parametres = array('retour.format' => 'min' );
212
		foreach ($ressourcesList as $ressources) {
212
		foreach ($ressourcesList as $ressources) {
213
			$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
213
			$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
214
			$this->assertArrayNotHasKey('type_bio.code',$retour,
214
			$this->assertArrayNotHasKey('type_bio.code',$retour,
215
				"Le champs 'type_bio.code' ne doit pas être présent si retour.format=min. ");
215
				"Le champs 'type_bio.code' ne doit pas être présent si retour.format=min. ");
216
			$this->assertArrayNotHasKey('type_bio.libelle',$retour,
216
			$this->assertArrayNotHasKey('type_bio.libelle',$retour,
217
				"Le champs 'type_bio.libelle' ne doit pas être présent si retour.format=min.");
217
				"Le champs 'type_bio.libelle' ne doit pas être présent si retour.format=min.");
218
			$this->assertArrayNotHasKey('type_bio.detail',$retour,
218
			$this->assertArrayNotHasKey('type_bio.detail',$retour,
219
				"Le champs 'type_bio.detail' ne doit pas être présent si retour.format=min.");
219
				"Le champs 'type_bio.detail' ne doit pas être présent si retour.format=min.");
220
			$champs = array_keys(Outils::recupererTableauConfig('champs_ontologiques'));
220
			$champs = array_keys(Outils::recupererTableauConfig('Paramètres.champs_ontologiques'));
221
			foreach ($champs as $chps) {
221
			foreach ($champs as $chps) {
222
				$this->assertArrayNotHasKey($chps.'.libelle', $retour,
222
				$this->assertArrayNotHasKey($chps.'.libelle', $retour,
223
					"Le champs '{$chps}.libelle' ne doit pas être présent si retour.format=min.");
223
					"Le champs '{$chps}.libelle' ne doit pas être présent si retour.format=min.");
224
				$this->assertArrayNotHasKey($chps.'.code', $retour,
224
				$this->assertArrayNotHasKey($chps.'.code', $retour,
225
					"Le champs '{$chps}.code' ne doit pas être présent si retour.format=min.");
225
					"Le champs '{$chps}.code' ne doit pas être présent si retour.format=min.");
226
				$this->assertArrayNotHasKey($chps.'.href', $retour,
226
				$this->assertArrayNotHasKey($chps.'.href', $retour,
227
					"Le champs '{$chps}.href' ne doit pas être présent si retour.format=min.");
227
					"Le champs '{$chps}.href' ne doit pas être présent si retour.format=min.");
228
			}
228
			}
229
			foreach ($champs as $chps) {
229
			foreach ($champs as $chps) {
230
				$this->assertArrayNotHasKey($chps.'_min.libelle', $retour,
230
				$this->assertArrayNotHasKey($chps.'_min.libelle', $retour,
231
								"Le champs '{$chps}_min.libelle' ne doit pas être présent si retour.format=min.");
231
								"Le champs '{$chps}_min.libelle' ne doit pas être présent si retour.format=min.");
232
				$this->assertArrayNotHasKey($chps.'_min.code', $retour,
232
				$this->assertArrayNotHasKey($chps.'_min.code', $retour,
233
								"Le champs '{$chps}_min.code' ne doit pas être présent si retour.format=min.");
233
								"Le champs '{$chps}_min.code' ne doit pas être présent si retour.format=min.");
234
				$this->assertArrayNotHasKey($chps.'_min.href', $retour,
234
				$this->assertArrayNotHasKey($chps.'_min.href', $retour,
235
								"Le champs '{$chps}_min.href' ne doit pas être présent si retour.format=min.");
235
								"Le champs '{$chps}_min.href' ne doit pas être présent si retour.format=min.");
236
				$this->assertArrayNotHasKey($chps.'_max.libelle', $retour,
236
				$this->assertArrayNotHasKey($chps.'_max.libelle', $retour,
237
								"Le champs '{$chps}_max.libelle' ne doit pas être présent si retour.format=min.");
237
								"Le champs '{$chps}_max.libelle' ne doit pas être présent si retour.format=min.");
238
				$this->assertArrayNotHasKey($chps.'_max.code', $retour,
238
				$this->assertArrayNotHasKey($chps.'_max.code', $retour,
239
								"Le champs '{$chps}_max.code' ne doit pas être présent si retour.format=min.");
239
								"Le champs '{$chps}_max.code' ne doit pas être présent si retour.format=min.");
240
				$this->assertArrayNotHasKey($chps.'_max.href', $retour,
240
				$this->assertArrayNotHasKey($chps.'_max.href', $retour,
241
								"Le champs '{$chps}_max.href' ne doit pas être présent si retour.format=min.");
241
								"Le champs '{$chps}_max.href' ne doit pas être présent si retour.format=min.");
242
			}
242
			}
243
			
243
			
244
		}
244
		}
245
	}
245
	}
246
				
246
				
247
	
247
	
248
	public function testJsonInformationsNNBasefor_max() {
248
	public function testJsonInformationsNNBasefor_max() {
249
        $retour = $this->consulterJson($this->service, $this->projet, ['bdtfx.nn:73256'], ['retour.format' => 'max', 'categorie' => 'description']);
249
        $retour = $this->consulterJson($this->service, $this->projet, ['bdtfx.nn:73256'], ['retour.format' => 'max', 'categorie' => 'description']);
250
        $this->verifierParametresDescription_max($retour);
250
        $this->verifierParametresDescription_max($retour);
251
 
251
 
252
        $retour = $this->consulterJson($this->service, $this->projet, ['bdtfx.nn:73256'], ['retour.format' => 'max', 'categorie' => 'ecologie']);
252
        $retour = $this->consulterJson($this->service, $this->projet, ['bdtfx.nn:73256'], ['retour.format' => 'max', 'categorie' => 'ecologie']);
253
        $this->verifierParametresEcologie_max($retour, 'baseflor');
253
        $this->verifierParametresEcologie_max($retour, 'baseflor');
254
	}
254
	}
255
	
255
	
256
	public function testJsonInformationsNNRangSup_max() {
256
	public function testJsonInformationsNNRangSup_max() {
257
		$ressources = array('bdtfx.nn:101128');
257
		$ressources = array('bdtfx.nn:101128');
258
		$parametres = array('retour.format' => 'max' , 'categorie' => 'ecologie');
258
		$parametres = array('retour.format' => 'max' , 'categorie' => 'ecologie');
259
			$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
259
			$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
260
			if ($parametres['categorie'] == 'description') {
260
			if ($parametres['categorie'] == 'description') {
261
				$this->verifierParametresDescription_max();
261
				$this->verifierParametresDescription_max();
262
			} else {
262
			} else {
263
				$this->verifierParametresEcologie_max($retour, 'rangSup');
263
				$this->verifierParametresEcologie_max($retour, 'rangSup');
264
			}
264
			}
265
	}
265
	}
266
 
266
 
267
	private function verifierParametresDescription_max($retour) {
267
	private function verifierParametresDescription_max($retour) {
268
		$this->assertArrayHasKey('type_bio.code',$retour,
268
		$this->assertArrayHasKey('type_bio.code',$retour,
269
									"Le champs 'type_bio.code' doit être présent si retour.format=max. ");
269
									"Le champs 'type_bio.code' doit être présent si retour.format=max. ");
270
		$this->assertArrayHasKey('type_bio.libelle',$retour,
270
		$this->assertArrayHasKey('type_bio.libelle',$retour,
271
									"Le champs 'type_bio.libelle' doit être présent si retour.format=max.");
271
									"Le champs 'type_bio.libelle' doit être présent si retour.format=max.");
272
		$this->assertArrayHasKey('type_bio.detail',$retour,
272
		$this->assertArrayHasKey('type_bio.detail',$retour,
273
									"Le champs 'type_bio.detail' doit être présent si retour.format=max.");
273
									"Le champs 'type_bio.detail' doit être présent si retour.format=max.");
274
	}
274
	}
275
	
275
	
276
	private function verifierParametresEcologie_max($retour,$type) {
276
	private function verifierParametresEcologie_max($retour,$type) {
277
		$champs = array_keys(Outils::recupererTableauConfig('champs_ontologiques'));
277
		$champs = array_keys(Outils::recupererTableauConfig('Paramètres.champs_ontologiques'));
278
		if ($type == 'baseflor') {
278
		if ($type == 'baseflor') {
279
			foreach ($champs as $chps) {
279
			foreach ($champs as $chps) {
280
				$this->assertArrayHasKey($chps.'.libelle', $retour,
280
				$this->assertArrayHasKey($chps.'.libelle', $retour,
281
													"Le champs '{$chps}.libelle' doit être présent si retour.format=max.");
281
													"Le champs '{$chps}.libelle' doit être présent si retour.format=max.");
282
				$this->assertArrayHasKey($chps.'.code', $retour,
282
				$this->assertArrayHasKey($chps.'.code', $retour,
283
													"Le champs '{$chps}.code' doit	 être présent si retour.format=max.");
283
													"Le champs '{$chps}.code' doit	 être présent si retour.format=max.");
284
				$this->assertArrayHasKey($chps.'.href', $retour,
284
				$this->assertArrayHasKey($chps.'.href', $retour,
285
													"Le champs '{$chps}.href' doit	 être présent si retour.format=max.");
285
													"Le champs '{$chps}.href' doit	 être présent si retour.format=max.");
286
			}
286
			}
287
		} elseif ($type == 'rangSup') {
287
		} elseif ($type == 'rangSup') {
288
			foreach ($champs as $chps) {
288
			foreach ($champs as $chps) {
289
				$this->assertArrayHasKey($chps.'_min.libelle', $retour,
289
				$this->assertArrayHasKey($chps.'_min.libelle', $retour,
290
											"Le champs '{$chps}_min.libelle' doit être présent si retour.format=max.");
290
											"Le champs '{$chps}_min.libelle' doit être présent si retour.format=max.");
291
				$this->assertArrayHasKey($chps.'_min.code', $retour,
291
				$this->assertArrayHasKey($chps.'_min.code', $retour,
292
											"Le champs '{$chps}_min.code' doit être présent si retour.format=max.");
292
											"Le champs '{$chps}_min.code' doit être présent si retour.format=max.");
293
				$this->assertArrayHasKey($chps.'_min.href', $retour,
293
				$this->assertArrayHasKey($chps.'_min.href', $retour,
294
											"Le champs '{$chps}_min.href' doit être présent si retour.format=max.");
294
											"Le champs '{$chps}_min.href' doit être présent si retour.format=max.");
295
				$this->assertArrayHasKey($chps.'_max.libelle', $retour,
295
				$this->assertArrayHasKey($chps.'_max.libelle', $retour,
296
											"Le champs '{$chps}_max.libelle' doit être présent si retour.format=max.");
296
											"Le champs '{$chps}_max.libelle' doit être présent si retour.format=max.");
297
				$this->assertArrayHasKey($chps.'_max.code', $retour,
297
				$this->assertArrayHasKey($chps.'_max.code', $retour,
298
											"Le champs '{$chps}_max.code' doit être présent si retour.format=max.");
298
											"Le champs '{$chps}_max.code' doit être présent si retour.format=max.");
299
				$this->assertArrayHasKey($chps.'_max.href', $retour,
299
				$this->assertArrayHasKey($chps.'_max.href', $retour,
300
											"Le champs '{$chps}_max.href' doit être présent si retour.format=max.");
300
											"Le champs '{$chps}_max.href' doit être présent si retour.format=max.");
301
			}
301
			}
302
		}
302
		}
303
	}
303
	}
304
	
304
	
305
	//++ ------------------------------------Test du champs type biologique	 -----------------------------++
305
	//++ ------------------------------------Test du champs type biologique	 -----------------------------++
306
	
306
	
307
	//TEST sur différents cas typique de 'type_bio.libelle'
307
	//TEST sur différents cas typique de 'type_bio.libelle'
308
	public function testJsonTypeBioOntologies() {
308
	public function testJsonTypeBioOntologies() {
309
		$ressourcesList = array(array("bdtfx.nn:73256"),array("bdtfx.nn:70441"),array("bdtfx.nn:62911"),array("bdtfx.nn:72496"),
309
		$ressourcesList = array(array("bdtfx.nn:73256"),array("bdtfx.nn:70441"),array("bdtfx.nn:62911"),array("bdtfx.nn:72496"),
310
							array("bdtfx.nn:6446"),array("bdtfx.nn:8373"), array("bdafx.nn:35574"), array("bdtfx.nn:62443"),
310
							array("bdtfx.nn:6446"),array("bdtfx.nn:8373"), array("bdafx.nn:35574"), array("bdtfx.nn:62443"),
311
							array("bdtfx.nn:62442"));
311
							array("bdtfx.nn:62442"));
312
		$parametres = array();
312
		$parametres = array();
313
		$resultats_attendus = array ('Grhi-aqua' => 'Géophytes (>= 1m) à rhizome (plantes aquatiques) ' , 
313
		$resultats_attendus = array ('Grhi-aqua' => 'Géophytes (>= 1m) à rhizome (plantes aquatiques) ' , 
314
				'test-aqua-car' => 'Thérophytes (< 1m) estivaux	 (plantes aquatiques, carnivores) ',
314
				'test-aqua-car' => 'Thérophytes (< 1m) estivaux	 (plantes aquatiques, carnivores) ',
315
				'grhi' => 'Géophytes (< 1m) à rhizome ', 
315
				'grhi' => 'Géophytes (< 1m) à rhizome ', 
316
				'hsto(test)' => 'Hémicryptophytes (< 1m) stolonifères , Thérophytes (< 1m) estivaux ',
316
				'hsto(test)' => 'Hémicryptophytes (< 1m) stolonifères , Thérophytes (< 1m) estivaux ',
317
				'Hsto-lia(Grhi-lia)' => 'Hémicryptophytes (>= 1m) stolonifères	(lianes) , Géophytes (>= 1m) à rhizome (lianes) ', 
317
				'Hsto-lia(Grhi-lia)' => 'Hémicryptophytes (>= 1m) stolonifères	(lianes) , Géophytes (>= 1m) à rhizome (lianes) ', 
318
				'Cfru(b-cad)' => 'Chaméphytes (>= 1m) frutescents , Nanophanérophytes (2 à 4m) (caducifoliées) ',
318
				'Cfru(b-cad)' => 'Chaméphytes (>= 1m) frutescents , Nanophanérophytes (2 à 4m) (caducifoliées) ',
319
				'test-aqua(heri)' => 'Thérophytes (< 1m) estivaux (plantes aquatiques) , Hémicryptophytes (< 1m) érigé ',
319
				'test-aqua(heri)' => 'Thérophytes (< 1m) estivaux (plantes aquatiques) , Hémicryptophytes (< 1m) érigé ',
320
				'hbis(hsto,test)-suc' => 'Hémicryptophytes (< 1m) bisannuels (succulentes) , Hémicryptophytes (< 1m) stolonifères, Thérophytes (< 1m) estivaux ',
320
				'hbis(hsto,test)-suc' => 'Hémicryptophytes (< 1m) bisannuels (succulentes) , Hémicryptophytes (< 1m) stolonifères, Thérophytes (< 1m) estivaux ',
321
				'hbis(hsto)-suc' => 'Hémicryptophytes (< 1m) bisannuels	 (succulentes) , Hémicryptophytes (< 1m) stolonifères ');
321
				'hbis(hsto)-suc' => 'Hémicryptophytes (< 1m) bisannuels	 (succulentes) , Hémicryptophytes (< 1m) stolonifères ');
322
		foreach ($ressourcesList as $ressources) {
322
		foreach ($ressourcesList as $ressources) {
323
			$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
323
			$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
324
			$code = $retour['type_bio.code'];
324
			$code = $retour['type_bio.code'];
325
			$this->assertEquals($resultats_attendus[$code], $retour['type_bio.libelle'],
325
			$this->assertEquals($resultats_attendus[$code], $retour['type_bio.libelle'],
326
										"le traitement de l'ontologie pour les types biologiques est erroné pour $ressources[0] . ");
326
										"le traitement de l'ontologie pour les types biologiques est erroné pour $ressources[0] . ");
327
		}
327
		}
328
	}
328
	}
329
 
329
 
330
	public function testRelationsCatminat() {
330
	public function testRelationsCatminat() {
331
		$ressources = array('bdtfx.nn:5641', 'relations', 'catminat');
331
		$ressources = array('bdtfx.nn:5641', 'relations', 'catminat');
332
		$parametres = array();
332
		$parametres = array();
333
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
333
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
334
 
334
 
335
		// valeurs standards
335
		// valeurs standards
336
		$this->assertArrayHasKey('cle',$retour, "Le champ 'cle' doit être présent.");
336
		$this->assertArrayHasKey('cle',$retour, "Le champ 'cle' doit être présent.");
337
		$this->assertEquals('1693',$retour['cle'], "Le champ 'cle' est erroné.");
337
		$this->assertEquals('1693',$retour['cle'], "Le champ 'cle' est erroné.");
338
 
338
 
339
		$this->assertArrayHasKey('num_nomen',$retour, "Le champ 'num_nomen' doit être présent.");
339
		$this->assertArrayHasKey('num_nomen',$retour, "Le champ 'num_nomen' doit être présent.");
340
		$this->assertEquals('5641',$retour['num_nomen'], "Le champ 'num_nomen' est erroné.");
340
		$this->assertEquals('5641',$retour['num_nomen'], "Le champ 'num_nomen' est erroné.");
341
 
341
 
342
		$this->assertArrayHasKey('bdnt',$retour, "Le champ 'bdnt' doit être présent.");
342
		$this->assertArrayHasKey('bdnt',$retour, "Le champ 'bdnt' doit être présent.");
343
		$this->assertEquals('bdtfx',$retour['bdnt'], "Le champ 'bdnt' est erroné.");
343
		$this->assertEquals('bdtfx',$retour['bdnt'], "Le champ 'bdnt' est erroné.");
344
 
344
 
345
		// valeurs écologiques, test libelle
345
		// valeurs écologiques, test libelle
346
	
346
	
347
		$this->assertArrayHasKey('ve_texture_sol_min.libelle',$retour, "Le champ 've_texture_sol_min.libelle' doit être présent.");
347
		$this->assertArrayHasKey('ve_texture_sol_min.libelle',$retour, "Le champ 've_texture_sol_min.libelle' doit être présent.");
348
		$this->assertEquals('intermédiaire',$retour['ve_texture_sol_min.libelle'], "Le champ 've_texture_sol_min.libelle' est erroné.");
348
		$this->assertEquals('intermédiaire',$retour['ve_texture_sol_min.libelle'], "Le champ 've_texture_sol_min.libelle' est erroné.");
349
 
349
 
350
		$this->assertArrayHasKey('ve_humidite_atmos_min.code',$retour, "Le champ 've_humidite_atmos_min.code' doit être présent.");
350
		$this->assertArrayHasKey('ve_humidite_atmos_min.code',$retour, "Le champ 've_humidite_atmos_min.code' doit être présent.");
351
		$this->assertEquals('8',$retour['ve_humidite_atmos_min.code'], "Le champ 've_texture_sol_min.libelle' est erroné.");
351
		$this->assertEquals('8',$retour['ve_humidite_atmos_min.code'], "Le champ 've_texture_sol_min.libelle' est erroné.");
352
 
352
 
353
		// climat
353
		// climat
354
		$this->assertArrayHasKey('graphique_climat',$retour, "Le champ 'graphique_climat' doit être présent.");
354
		$this->assertArrayHasKey('graphique_climat',$retour, "Le champ 'graphique_climat' doit être présent.");
355
		$this->assertArrayHasKey('libelle',$retour['graphique_climat'], "Le champ 'graphique_climat > libelle' doit être présent.");
355
		$this->assertArrayHasKey('libelle',$retour['graphique_climat'], "Le champ 'graphique_climat > libelle' doit être présent.");
356
		$this->assertArrayHasKey('href',$retour['graphique_climat'], "Le champ 'graphique_climat > href' doit être présent.");
356
		$this->assertArrayHasKey('href',$retour['graphique_climat'], "Le champ 'graphique_climat > href' doit être présent.");
357
		$this->assertEquals('climat',$retour['graphique_climat']['libelle'], "Le champ 'graphique_climat > href' doit être présent.");
357
		$this->assertEquals('climat',$retour['graphique_climat']['libelle'], "Le champ 'graphique_climat > href' doit être présent.");
358
	}
358
	}
359
 
359
 
360
	// TODO = ajouter un test pour Informations/id/Relations/catminat?navigation.limite=500&navigation.depart=0
360
	// TODO = ajouter un test pour Informations/id/Relations/catminat?navigation.limite=500&navigation.depart=0
361
}
361
}
362
?>
362
?>