Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 17 | Rev 100 | 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');
3 jpm 14
		$url = $this->creerUrl($ressources, $parametres);
15
		$retour = $this->consulterJson($ressources, $parametres);
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' => '*');
3 jpm 24
		$url = $this->creerUrl($ressources, $parametres);
25
 
26
		$retour = $this->consulterJson($ressources, $parametres);
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' => '*');
3 jpm 36
		$url = $this->creerUrl($ressources, $parametres);
37
 
38
		$retour = $this->consulterBrut($ressources, $parametres);
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');
3 jpm 48
		$url = $this->creerUrl($ressources, $parametres);
49
 
50
		$retour = $this->consulterBrut($ressources, $parametres);
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');
3 jpm 63
		$url = $this->creerUrl($ressources, $parametres);
64
 
65
		$retour = $this->consulterJson($ressources, $parametres);
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');
3 jpm 78
		$url = $this->creerUrl($ressources, $parametres);
79
 
7 jpm 80
		$retour = $this->consulterJson($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");
84
		$this->assertArrayHasKey('id', $retour['resultat']['182'], "Le tableau du résultat 182 doit contenir un champ 'id'. Voir : $url");
85
		$this->assertEquals('182', $retour['resultat']['182']['id'], "Le tableau du résultat 182 doit contenir un champ 'id' avec pour valeur '182'. Voir : $url");
86
		$this->assertArrayHasKey('retenu', $retour['resultat']['182'], "Le tableau du résultat 182 doit contenir un champ 'id'. Voir : $url");
87
		$this->assertEquals('true', $retour['resultat']['182']['retenu'], "Le tableau du résultat 182 doit contenir un champ 'retenu' avec pour valeur 'true'. Voir : $url");
88
		$this->assertArrayHasKey('nom_sci', $retour['resultat']['182'], "Le tableau du résultat 182 doit contenir un champ 'nom_sci'. Voir : $url");
89
		$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");
90
	}
91
 
92
	public function testMasqueSg() {
96 jpm 93
		$ressources = array();
3 jpm 94
		$parametres = array(
96 jpm 95
			'version.projet' => '1.01',
96
			'recherche' => 'stricte',
97
			'masque.sg' => 'Asteraceae');
3 jpm 98
		$url = $this->creerUrl($ressources, $parametres);
99
 
7 jpm 100
		$retour = $this->consulterJson($ressources, $parametres);
3 jpm 101
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
102
		$this->assertEquals('nom_supra_generique=Asteraceae', $retour['entete']['masque'], "L'attribut 'masque' de l'entête devrait valoir 'nom_supra_generique=Asteraceae'. Voir : $url");
103
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
104
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
105
		$this->assertEquals(1, count($retour['resultat']), "Le résultat devrait contenir une seule donnée. Voir : $url");
106
	}
107
 
108
	public function testMasqueGenSpSspAuAn() {
96 jpm 109
		$ressources = array();
3 jpm 110
		$parametres = array(
96 jpm 111
			'version.projet' => '1.01',
112
			'recherche' => 'stricte',
113
			'masque.gen' => 'Allium',
114
			'masque.sp' => 'carinatum',
115
			'masque.ssp' => 'consimile',
116
			'masque.au' => 'Gren.',
117
			'masque.an' => '1855');
3 jpm 118
		$url = $this->creerUrl($ressources, $parametres);
119
 
7 jpm 120
		$retour = $this->consulterJson($ressources, $parametres);
121
 
3 jpm 122
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
123
 
124
		$masque = 'genre=Allium&epithete_sp=carinatum&epithete_infra_sp=consimile&auteur=Gren.&annee=1855';
125
		$message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url";
126
		$this->assertEquals($masque, $retour['entete']['masque'], $message);
127
 
128
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
129
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
130
		$this->assertEquals(1, count($retour['resultat']), "Le résultat devrait contenir une seule donnée. Voir : $url");
131
	}
132
 
133
	public function testMasqueNn() {
96 jpm 134
		$ressources = array();
3 jpm 135
		$parametres = array(
96 jpm 136
			'version.projet' => '1.01',
137
			'recherche' => 'stricte',
138
			'masque.nn' => '182');
3 jpm 139
		$url = $this->creerUrl($ressources, $parametres);
140
 
7 jpm 141
		$retour = $this->consulterJson($ressources, $parametres);
3 jpm 142
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
143
		$masque = 'num_nom=182';
144
		$message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url";
145
		$this->assertEquals($masque, $retour['entete']['masque'], $message);
146
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
147
 
148
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
149
		$this->assertEquals(1, count($retour['resultat']), "Le résultat devrait contenir une seule donnée. Voir : $url");
150
		$this->assertArrayHasKey('id', $retour['resultat']['182'], "Le tableau du résultat 182 doit contenir un champ 'id'. Voir : $url");
151
		$this->assertEquals('182', $retour['resultat']['182']['id'], "Le tableau du résultat 182 doit contenir un champ 'id' avec pour valeur '182'. Voir : $url");
152
	}
153
 
154
	public function testMasqueRg() {
96 jpm 155
		$ressources = array();
3 jpm 156
		$parametres = array(
96 jpm 157
			'version.projet' => '1.01',
158
			'recherche' => 'stricte',
159
			'masque.rg' => '180');
3 jpm 160
		$url = $this->creerUrl($ressources, $parametres);
161
 
7 jpm 162
		$retour = $this->consulterJson($ressources, $parametres);
3 jpm 163
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
164
		$masque = 'rang=180';
165
		$message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url";
166
		$this->assertEquals($masque, $retour['entete']['masque'], $message);
167
		$this->assertEquals('210', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 210. Voir : $url");
168
	}
169
 
170
	public function testNsStructureTxt() {
96 jpm 171
		$ressources = array();
3 jpm 172
		$parametres = array(
96 jpm 173
			'version.projet' => '1.01',
3 jpm 174
			'recherche' => 'stricte',
175
			'masque.nn' => '182',
176
			'ns.format' => 'txt',
177
			'ns.structure' => 'au,an,bib,ad');
178
		$url = $this->creerUrl($ressources, $parametres);
179
 
7 jpm 180
		$retour = $this->consulterJson($ressources, $parametres);
3 jpm 181
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
182
		$masque = 'num_nom=182';
183
		$message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url";
184
		$this->assertEquals($masque, $retour['entete']['masque'], $message);
185
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
186
 
187
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
188
		$this->assertEquals('Acer monspessulanum L. [1753, Sp. Pl., éd. 1 : 1056]', $retour['resultat']['182']['nom_sci'], "Le tableau du résultat 182 doit contenir un champ 'nom_sci' avec pour valeur 'Acer monspessulanum'. Voir : $url");
189
	}
190
 
191
	public function testNsStructureHtml() {
96 jpm 192
		$ressources = array();
3 jpm 193
		$parametres = array(
96 jpm 194
			'version.projet' => '1.01',
195
			'recherche' => 'stricte',
196
			'masque.nn' => '182',
197
			'ns.format' => 'htm',
198
			'ns.structure' => 'au,an,bib,ad');
3 jpm 199
		$url = $this->creerUrl($ressources, $parametres);
200
 
7 jpm 201
		$retour = $this->consulterJson($ressources, $parametres);
3 jpm 202
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
203
		$masque = 'num_nom=182';
204
		$message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url";
205
		$this->assertEquals($masque, $retour['entete']['masque'], $message);
206
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
207
 
208
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat.\nVoir : $url");
209
		$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>]';
210
		$message = "Le tableau du résultat 182 doit contenir un champ 'nom_sci' avec pour valeur '$attendu'. Voir : $url";
211
		$this->assertEquals($attendu, $retour['resultat']['182']['nom_sci'], $message);
212
	}
213
}
214
?>