Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev Author Line No. Line
3 jpm 1
<?php
96 jpm 2
require_once dirname(__FILE__).'/../ServiceEflorePhpUnit.php';
3 jpm 3
 
96 jpm 4
class BdtfxNomsTest extends ServiceEflorePhpUnit {
5
 
17 jpm 6
	public function __construct() {
7
		$this->projet = 'bdtfx';
8
		$this->service = 'noms';
9
	}
10
 
3 jpm 11
	public function testVersionPrecise() {
96 jpm 12
		$ressources = array();
13
		$parametres = array('version.projet' => '1.01');
790 raphael 14
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
15
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
3 jpm 16
 
17
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
18
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
19
	}
20
 
21
	public function testNomsIdVersionMultiple() {
96 jpm 22
		$ressources = array('71711');
23
		$parametres = array('version.projet' => '*');
790 raphael 24
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
3 jpm 25
 
790 raphael 26
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
3 jpm 27
		$this->assertArrayHasKey('bdtfx_v1_01', $retour, "Le json ne contient pas d'attribut : bdtfx_v1_01.\nVoir : $url");
900 raphael 28
		// $this->assertArrayHasKey('bdtfx_v1_02', $retour, "Le json ne contient pas d'attribut : bdtfx_v1_02.\nVoir : $url");
29
		$this->assertArrayHasKey('bdtfx_v2_00', $retour, "Le json ne contient pas d'attribut : bdtfx_v2_00.\nVoir : $url");
30
 
96 jpm 31
		$this->assertEquals('71711', $retour['bdtfx_v1_01']['id'], "'bdtfx_v1_01' doit contenir un attribut 'id' avec la valeur '71711'");
900 raphael 32
		// $this->assertEquals('71711', $retour['bdtfx_v1_02']['id'], "'bdtfx_v1_02' doit contenir un attribut 'id' avec la valeur '71711'");
33
		$this->assertEquals('71711', $retour['bdtfx_v2_00']['id'], "'bdtfx_v2_00' doit contenir un attribut 'id' avec la valeur '71711'");
3 jpm 34
	}
35
 
36
	public function testNomsVersionMultiple() {
96 jpm 37
		$ressources = array();
38
		$parametres = array('version.projet' => '*');
790 raphael 39
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
3 jpm 40
 
790 raphael 41
		$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
3 jpm 42
 
43
		$attendu = "L'affichage de plusieurs versions ne fonctionne que pour les ressources de type /ressources/#id";
44
		$message = "L'url :\n'$url'\n doit retourner un résultat de la forme :\n $attendu";
45
		$this->assertEquals($attendu, $retour, $message);
46
	}
47
 
48
	public function testVersionInexistante() {
96 jpm 49
		$ressources = array();
50
		$parametres = array('version.projet' => '99.00');
790 raphael 51
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
3 jpm 52
 
790 raphael 53
		$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
3 jpm 54
 
55
		$attendu = 'La requête SQL formée comporte une erreur!';
56
		$message = "L'url :\n'$url'\n doit retourner un résultat de la forme :\n $attendu";
57
		$this->assertEquals($attendu, $retour, $message);
58
	}
59
 
60
	public function testRechercheStricte() {
96 jpm 61
		$ressources = array();
3 jpm 62
		$parametres = array(
96 jpm 63
			'version.projet' => '1.01',
64
			'recherche' => 'stricte',
65
			'masque' => 'Acer');
790 raphael 66
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
3 jpm 67
 
790 raphael 68
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
3 jpm 69
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
70
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
71
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
897 raphael 72
		$this->assertCount(1, $retour['resultat'], "Le résultat devrait contenir une seule donnée. Voir : $url");
3 jpm 73
	}
74
 
75
	public function testResultatChamps() {
96 jpm 76
		$ressources = array();
3 jpm 77
		$parametres = array(
96 jpm 78
			'version.projet' => '1.01',
79
			'recherche' => 'stricte',
80
			'masque.nn' => '182');
790 raphael 81
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
3 jpm 82
 
790 raphael 83
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
3 jpm 84
 
85
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
897 raphael 86
		$this->assertCount(1, $retour['resultat'], "Le résultat devrait contenir une seule donnée. Voir : $url");
100 delphine 87
		$this->assertArrayNotHasKey('id', $retour['resultat']['182'], "Le tableau du résultat 182 ne doit pas contenir un champ 'id'. Voir : $url");
3 jpm 88
		$this->assertArrayHasKey('retenu', $retour['resultat']['182'], "Le tableau du résultat 182 doit contenir un champ 'id'. Voir : $url");
89
		$this->assertEquals('true', $retour['resultat']['182']['retenu'], "Le tableau du résultat 182 doit contenir un champ 'retenu' avec pour valeur 'true'. Voir : $url");
90
		$this->assertArrayHasKey('nom_sci', $retour['resultat']['182'], "Le tableau du résultat 182 doit contenir un champ 'nom_sci'. Voir : $url");
91
		$this->assertEquals('Acer monspessulanum', $retour['resultat']['182']['nom_sci'], "Le tableau du résultat 182 doit contenir un champ 'nom_sci' avec pour valeur 'Acer monspessulanum'. Voir : $url");
92
	}
93
 
94
	public function testMasqueSg() {
96 jpm 95
		$ressources = array();
3 jpm 96
		$parametres = array(
96 jpm 97
			'version.projet' => '1.01',
98
			'recherche' => 'stricte',
99
			'masque.sg' => 'Asteraceae');
790 raphael 100
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
3 jpm 101
 
790 raphael 102
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
3 jpm 103
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
104
		$this->assertEquals('nom_supra_generique=Asteraceae', $retour['entete']['masque'], "L'attribut 'masque' de l'entête devrait valoir 'nom_supra_generique=Asteraceae'. Voir : $url");
105
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
106
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
897 raphael 107
		$this->assertCount(1, $retour['resultat'], "Le résultat devrait contenir une seule donnée. Voir : $url");
3 jpm 108
	}
109
 
110
	public function testMasqueGenSpSspAuAn() {
96 jpm 111
		$ressources = array();
3 jpm 112
		$parametres = array(
96 jpm 113
			'version.projet' => '1.01',
114
			'recherche' => 'stricte',
115
			'masque.gen' => 'Allium',
116
			'masque.sp' => 'carinatum',
117
			'masque.ssp' => 'consimile',
118
			'masque.au' => 'Gren.',
119
			'masque.an' => '1855');
790 raphael 120
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
3 jpm 121
 
790 raphael 122
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
7 jpm 123
 
3 jpm 124
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
125
 
126
		$masque = 'genre=Allium&epithete_sp=carinatum&epithete_infra_sp=consimile&auteur=Gren.&annee=1855';
127
		$message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url";
128
		$this->assertEquals($masque, $retour['entete']['masque'], $message);
129
 
130
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
131
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
897 raphael 132
		$this->assertCount(1, $retour['resultat'], "Le résultat devrait contenir une seule donnée. Voir : $url");
3 jpm 133
	}
134
 
135
	public function testMasqueNn() {
96 jpm 136
		$ressources = array();
3 jpm 137
		$parametres = array(
96 jpm 138
			'version.projet' => '1.01',
139
			'recherche' => 'stricte',
140
			'masque.nn' => '182');
790 raphael 141
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
3 jpm 142
 
790 raphael 143
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
3 jpm 144
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
145
		$masque = 'num_nom=182';
146
		$message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url";
147
		$this->assertEquals($masque, $retour['entete']['masque'], $message);
148
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
149
 
150
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
897 raphael 151
		$this->assertCount(1, $retour['resultat'], "Le résultat devrait contenir une seule donnée. Voir : $url");
100 delphine 152
		$this->assertArrayNotHasKey('id', $retour['resultat']['182'], "Le tableau du résultat 182 doit contenir un champ 'id'. Voir : $url");
3 jpm 153
	}
154
 
155
	public function testMasqueRg() {
96 jpm 156
		$ressources = array();
3 jpm 157
		$parametres = array(
96 jpm 158
			'version.projet' => '1.01',
159
			'recherche' => 'stricte',
160
			'masque.rg' => '180');
790 raphael 161
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
3 jpm 162
 
790 raphael 163
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
3 jpm 164
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
165
		$masque = 'rang=180';
166
		$message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url";
167
		$this->assertEquals($masque, $retour['entete']['masque'], $message);
168
		$this->assertEquals('210', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 210. Voir : $url");
169
	}
170
 
171
	public function testNsStructureTxt() {
96 jpm 172
		$ressources = array();
3 jpm 173
		$parametres = array(
96 jpm 174
			'version.projet' => '1.01',
3 jpm 175
			'recherche' => 'stricte',
176
			'masque.nn' => '182',
177
			'ns.format' => 'txt',
178
			'ns.structure' => 'au,an,bib,ad');
790 raphael 179
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
3 jpm 180
 
790 raphael 181
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
3 jpm 182
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
183
		$masque = 'num_nom=182';
184
		$message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url";
185
		$this->assertEquals($masque, $retour['entete']['masque'], $message);
186
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
187
 
188
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
358 delphine 189
		$this->assertEquals('Acer monspessulanum L. [1753, Sp. Pl., éd. 1 : 1056]', $retour['resultat']['182']['nom_sci_complet'], "Le tableau du résultat 182 doit contenir un champ 'nom_sci' avec pour valeur 'Acer monspessulanum'. Voir : $url");
3 jpm 190
	}
191
 
192
	public function testNsStructureHtml() {
96 jpm 193
		$ressources = array();
3 jpm 194
		$parametres = array(
96 jpm 195
			'version.projet' => '1.01',
196
			'recherche' => 'stricte',
197
			'masque.nn' => '182',
198
			'ns.format' => 'htm',
199
			'ns.structure' => 'au,an,bib,ad');
790 raphael 200
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
3 jpm 201
 
790 raphael 202
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
3 jpm 203
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
204
		$masque = 'num_nom=182';
205
		$message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url";
206
		$this->assertEquals($masque, $retour['entete']['masque'], $message);
207
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
208
 
209
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat.\nVoir : $url");
135 jpm 210
		$attendu = '<span class="sci"><span class="gen">Acer</span> <span class="sp">monspessulanum</span></span> <span class="auteur">L.</span> [<span class="annee">1753</span>, <span class="biblio">Sp. Pl., éd. 1 : 1056</span>]';
3 jpm 211
		$message = "Le tableau du résultat 182 doit contenir un champ 'nom_sci' avec pour valeur '$attendu'. Voir : $url";
358 delphine 212
		$this->assertEquals($attendu, $retour['resultat']['182']['nom_sci_complet'], $message);
3 jpm 213
	}
112 jpm 214
 
100 delphine 215
	public function testListeNomsAvecParametreRetourChamps() {
216
		$ressources = array();
112 jpm 217
		$parametres = array('version.projet' => '1.01',
218
			'masque' => 'acer',
219
			'retour.champs' => 'auteur,nom_retenu.*');
220
 
790 raphael 221
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
100 delphine 222
		$this->assertArrayHasKey('auteur', $retour['resultat']['83587']);
223
		$this->assertArrayHasKey('nom_retenu.id', $retour['resultat']['83587']);
224
		$this->assertArrayHasKey('nom_retenu.href', $retour['resultat']['83587']);
225
		$this->assertArrayNotHasKey('nom_retenu', $retour['resultat']['83587']);
226
	}
135 jpm 227
 
115 delphine 228
	public function testNomsIdAvecParametreRetourChamps() {
229
		$ressources = array(1);
230
		$parametres = array('version.projet' => '1.01',
231
				'retour.champs' => 'nom_retenu.*');
135 jpm 232
 
790 raphael 233
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
115 delphine 234
		$this->assertArrayHasKey('nom_retenu.id', $retour);
235
		$this->assertArrayHasKey('nom_retenu.href', $retour);
236
		$this->assertArrayNotHasKey('nom_retenu', $retour);
237
		$this->assertArrayNotHasKey('auteur', $retour);
238
	}
112 jpm 239
 
240
	public function testListeNomAvecParametreNsStructureAuAnBibAd() {
241
		$ressources = array();
242
		$parametres = array('version.projet' => '1.01',
243
			'masque.nn' => '39607',
244
			'ns.structure' => 'au,an,bib,ad');
245
 
790 raphael 246
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
112 jpm 247
		$this->assertArrayHasKey('resultat', $retour);
248
		$this->assertArrayHasKey('39607', $retour['resultat']);
249
		$this->assertArrayHasKey('nom_sci', $retour['resultat']['39607']);
250
		$nomSciTxt = 'Lolium annuum Gilib. [1792, Exercit. Phytol., 2 : 520] [nom. invalid.]';
358 delphine 251
		$this->assertEquals($nomSciTxt, $retour['resultat']['39607']['nom_sci_complet']);
112 jpm 252
	}
253
 
254
	public function testListeNomAvecParametreNsStructureAuAnBibAdEtNsFormatHtm() {
255
		$ressources = array();
256
		$parametres = array('version.projet' => '1.01',
257
			'masque.nn' => '39607',
258
			'ns.structure' => 'au,an,bib,ad',
259
			'ns.format' => 'htm');
260
 
790 raphael 261
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
112 jpm 262
		$this->assertArrayHasKey('entete', $retour);
263
		$this->assertArrayHasKey('masque', $retour['entete']);
264
		$this->assertEquals('num_nom=39607', $retour['entete']['masque']);
265
 
266
		$this->assertArrayHasKey('resultat', $retour);
267
		$this->assertArrayHasKey('39607', $retour['resultat']);
268
		$this->assertArrayHasKey('nom_sci', $retour['resultat']['39607']);
135 jpm 269
		$nomSciHtml = "<span class=\"sci\"><span class=\"gen\">Lolium</span> <span class=\"sp\">annuum</span></span> <span class=\"auteur\">Gilib.</span> [<span class=\"annee\">1792</span>, <span class=\"biblio\">Exercit. Phytol., 2 : 520</span>] [<span class=\"adendum\">nom. invalid.</span>]";
358 delphine 270
		$this->assertEquals($nomSciHtml, $retour['resultat']['39607']['nom_sci_complet']);
112 jpm 271
	}
358 delphine 272
 
273
	public function testListeNomAvecParametreRetourChamps() {
274
		$ressources = array();
275
		$parametres = array('version.projet' => '1.01',
276
				'masque.nn' => '39607',
277
				'retour.champs' => 'rang,auteur');
900 raphael 278
 
279
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
790 raphael 280
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
358 delphine 281
		$this->assertArrayHasKey('entete', $retour);
282
		$this->assertArrayHasKey('masque', $retour['entete']);
283
		$this->assertEquals('num_nom=39607', $retour['entete']['masque']);
284
 
285
		$this->assertArrayHasKey('resultat', $retour);
286
		$this->assertArrayHasKey('39607', $retour['resultat']);
287
		$this->assertArrayHasKey('rang.libelle', $retour['resultat']['39607']);
900 raphael 288
		// peut advenir en cas d'échec de la requête (HTTP ou SQL) sur les ontologies
289
		// vérifier la présence de la table ainsi que la valeur "bdd_table_ontologies" dans "config_bdtfx.ini"
290
		$this->assertEquals('Espèce', $retour['resultat']['39607']['rang.libelle'], "Erreur champ 'Espèce': Voir $url");
358 delphine 291
		$this->assertArrayHasKey('auteur', $retour['resultat']['39607']);
292
		$this->assertEquals('Gilib.', $retour['resultat']['39607']['auteur']);
293
	}
3 jpm 294
}
295
?>