Subversion Repositories eFlore/Projets.eflore-projets

Rev

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