Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev Author Line No. Line
3 jpm 1
<?php
17 jpm 2
class BdtfxNomsTest extends ServicesTestsOutils {
3 jpm 3
 
17 jpm 4
	public function __construct() {
5
		$this->projet = 'bdtfx';
6
		$this->service = 'noms';
7
	}
8
 
3 jpm 9
	public function testVersionPrecise() {
10
		$ressources = array('v1.01');
11
		$parametres = array();
12
		$url = $this->creerUrl($ressources, $parametres);
13
		$retour = $this->consulterJson($ressources, $parametres);
14
 
15
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
16
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
17
	}
18
 
19
	public function testNomsIdVersionMultiple() {
20
		$ressources = array('*', '182');
21
		$parametres = array();
22
		$url = $this->creerUrl($ressources, $parametres);
23
 
24
		$retour = $this->consulterJson($ressources, $parametres);
25
		$this->assertArrayHasKey('bdtfx_v1_01', $retour, "Le json ne contient pas d'attribut : bdtfx_v1_01.\nVoir : $url");
26
		$this->assertArrayHasKey('bdtfx_v1_02', $retour, "Le json ne contient pas d'attribut : bdtfx_v1_02.\nVoir : $url");
27
		$this->assertEquals('182', $retour['bdtfx_v1_01']['id'], "'bdtfx_v1_01' doit contenir un attribut 'id' avec la valeur '182'");
28
		$this->assertEquals('182', $retour['bdtfx_v1_02']['id'], "'bdtfx_v1_02' doit contenir un attribut 'id' avec la valeur '182'");
29
	}
30
 
31
	public function testNomsVersionMultiple() {
32
		$ressources = array('*');
33
		$parametres = array();
34
		$url = $this->creerUrl($ressources, $parametres);
35
 
36
		$retour = $this->consulterBrut($ressources, $parametres);
37
 
38
		$attendu = "L'affichage de plusieurs versions ne fonctionne que pour les ressources de type /ressources/#id";
39
		$message = "L'url :\n'$url'\n doit retourner un résultat de la forme :\n $attendu";
40
		$this->assertEquals($attendu, $retour, $message);
41
	}
42
 
43
	public function testVersionInexistante() {
44
		$ressources = array('v99.00');
45
		$parametres = array();
46
		$url = $this->creerUrl($ressources, $parametres);
47
 
48
		$retour = $this->consulterBrut($ressources, $parametres);
49
 
50
		$attendu = 'La requête SQL formée comporte une erreur!';
51
		$message = "L'url :\n'$url'\n doit retourner un résultat de la forme :\n $attendu";
52
		$this->assertEquals($attendu, $retour, $message);
53
	}
54
 
55
	public function testRechercheStricte() {
56
		$ressources = array('v1.01');
57
		$parametres = array(
58
				'recherche' => 'stricte',
59
				'masque' => 'Acer');
60
		$url = $this->creerUrl($ressources, $parametres);
61
 
62
		$retour = $this->consulterJson($ressources, $parametres);
63
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
64
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
65
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
66
		$this->assertEquals(1, count($retour['resultat']), "Le résultat devrait contenir une seule donnée. Voir : $url");
67
	}
68
 
69
	public function testResultatChamps() {
70
		$ressources = array('v1.01');
71
		$parametres = array(
72
						'recherche' => 'stricte',
73
						'masque.nn' => '182');
74
		$url = $this->creerUrl($ressources, $parametres);
75
 
7 jpm 76
		$retour = $this->consulterJson($ressources, $parametres);
3 jpm 77
 
78
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
79
		$this->assertEquals(1, count($retour['resultat']), "Le résultat devrait contenir une seule donnée. Voir : $url");
80
		$this->assertArrayHasKey('id', $retour['resultat']['182'], "Le tableau du résultat 182 doit contenir un champ 'id'. Voir : $url");
81
		$this->assertEquals('182', $retour['resultat']['182']['id'], "Le tableau du résultat 182 doit contenir un champ 'id' avec pour valeur '182'. Voir : $url");
82
		$this->assertArrayHasKey('retenu', $retour['resultat']['182'], "Le tableau du résultat 182 doit contenir un champ 'id'. Voir : $url");
83
		$this->assertEquals('true', $retour['resultat']['182']['retenu'], "Le tableau du résultat 182 doit contenir un champ 'retenu' avec pour valeur 'true'. Voir : $url");
84
		$this->assertArrayHasKey('nom_sci', $retour['resultat']['182'], "Le tableau du résultat 182 doit contenir un champ 'nom_sci'. Voir : $url");
85
		$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");
86
	}
87
 
88
	public function testMasqueSg() {
89
		$ressources = array('v1.01');
90
		$parametres = array(
7 jpm 91
					'recherche' => 'stricte',
92
					'masque.sg' => 'Asteraceae');
3 jpm 93
		$url = $this->creerUrl($ressources, $parametres);
94
 
7 jpm 95
		$retour = $this->consulterJson($ressources, $parametres);
3 jpm 96
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
97
		$this->assertEquals('nom_supra_generique=Asteraceae', $retour['entete']['masque'], "L'attribut 'masque' de l'entête devrait valoir 'nom_supra_generique=Asteraceae'. Voir : $url");
98
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
99
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
100
		$this->assertEquals(1, count($retour['resultat']), "Le résultat devrait contenir une seule donnée. Voir : $url");
101
	}
102
 
103
	public function testMasqueGenSpSspAuAn() {
104
		$ressources = array('v1.01');
105
		$parametres = array(
7 jpm 106
				'recherche' => 'stricte',
107
				'masque.gen' => 'Allium',
108
				'masque.sp' => 'carinatum',
109
				'masque.ssp' => 'consimile',
110
				'masque.au' => 'Gren.',
111
				'masque.an' => '1855');
3 jpm 112
		$url = $this->creerUrl($ressources, $parametres);
113
 
7 jpm 114
		$retour = $this->consulterJson($ressources, $parametres);
115
 
3 jpm 116
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
117
 
118
		$masque = 'genre=Allium&epithete_sp=carinatum&epithete_infra_sp=consimile&auteur=Gren.&annee=1855';
119
		$message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url";
120
		$this->assertEquals($masque, $retour['entete']['masque'], $message);
121
 
122
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
123
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
124
		$this->assertEquals(1, count($retour['resultat']), "Le résultat devrait contenir une seule donnée. Voir : $url");
125
	}
126
 
127
	public function testMasqueNn() {
128
		$ressources = array('v1.01');
129
		$parametres = array(
7 jpm 130
					'recherche' => 'stricte',
131
					'masque.nn' => '182');
3 jpm 132
		$url = $this->creerUrl($ressources, $parametres);
133
 
7 jpm 134
		$retour = $this->consulterJson($ressources, $parametres);
3 jpm 135
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
136
		$masque = 'num_nom=182';
137
		$message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url";
138
		$this->assertEquals($masque, $retour['entete']['masque'], $message);
139
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
140
 
141
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
142
		$this->assertEquals(1, count($retour['resultat']), "Le résultat devrait contenir une seule donnée. Voir : $url");
143
		$this->assertArrayHasKey('id', $retour['resultat']['182'], "Le tableau du résultat 182 doit contenir un champ 'id'. Voir : $url");
144
		$this->assertEquals('182', $retour['resultat']['182']['id'], "Le tableau du résultat 182 doit contenir un champ 'id' avec pour valeur '182'. Voir : $url");
145
	}
146
 
147
	public function testMasqueRg() {
148
		$ressources = array('v1.01');
149
		$parametres = array(
150
					'recherche' => 'stricte',
151
					'masque.rg' => '180');
152
		$url = $this->creerUrl($ressources, $parametres);
153
 
7 jpm 154
		$retour = $this->consulterJson($ressources, $parametres);
3 jpm 155
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
156
		$masque = 'rang=180';
157
		$message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url";
158
		$this->assertEquals($masque, $retour['entete']['masque'], $message);
159
		$this->assertEquals('210', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 210. Voir : $url");
160
	}
161
 
162
	public function testNsStructureTxt() {
163
		$ressources = array('v1.01');
164
		$parametres = array(
165
			'recherche' => 'stricte',
166
			'masque.nn' => '182',
167
			'ns.format' => 'txt',
168
			'ns.structure' => 'au,an,bib,ad');
169
		$url = $this->creerUrl($ressources, $parametres);
170
 
7 jpm 171
		$retour = $this->consulterJson($ressources, $parametres);
3 jpm 172
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
173
		$masque = 'num_nom=182';
174
		$message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url";
175
		$this->assertEquals($masque, $retour['entete']['masque'], $message);
176
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
177
 
178
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
179
		$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");
180
	}
181
 
182
	public function testNsStructureHtml() {
183
		$ressources = array('v1.01');
184
		$parametres = array(
185
				'recherche' => 'stricte',
186
				'masque.nn' => '182',
187
				'ns.format' => 'htm',
188
				'ns.structure' => 'au,an,bib,ad');
189
		$url = $this->creerUrl($ressources, $parametres);
190
 
7 jpm 191
		$retour = $this->consulterJson($ressources, $parametres);
3 jpm 192
		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
193
		$masque = 'num_nom=182';
194
		$message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url";
195
		$this->assertEquals($masque, $retour['entete']['masque'], $message);
196
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
197
 
198
		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat.\nVoir : $url");
199
		$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>]';
200
		$message = "Le tableau du résultat 182 doit contenir un champ 'nom_sci' avec pour valeur '$attendu'. Voir : $url";
201
		$this->assertEquals($attendu, $retour['resultat']['182']['nom_sci'], $message);
202
	}
203
}
204
?>