| 159 | delphine | 1 | <?php
 | 
        
           |  |  | 2 | require_once dirname(__FILE__).'/../ServiceEflorePhpUnit.php';
 | 
        
           |  |  | 3 |   | 
        
           |  |  | 4 | class NvjflNomsVernaTest extends ServiceEflorePhpUnit {
 | 
        
           |  |  | 5 |   | 
        
           |  |  | 6 | 	public function __construct() {
 | 
        
           |  |  | 7 | 		$this->projet = 'nvjfl';
 | 
        
           |  |  | 8 | 		$this->service = 'noms-vernaculaires';
 | 
        
           |  |  | 9 | 	}
 | 
        
           |  |  | 10 |   | 
        
           |  |  | 11 | 	public function testVersionPrecise() {
 | 
        
           |  |  | 12 | 		$ressources = array();
 | 
        
           |  |  | 13 | 		$parametres = array('version.projet' => '2007');
 | 
        
           |  |  | 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 |   | 
        
           |  |  | 22 | 	public function testVersionInexistante() {
 | 
        
           |  |  | 23 | 		$ressources = array();
 | 
        
           |  |  | 24 | 		$parametres = array('version.projet' => '2011');
 | 
        
           |  |  | 25 | 		$url = $this->creerUrl($ressources, $parametres);
 | 
        
           |  |  | 26 |   | 
        
           |  |  | 27 | 		$retour = $this->consulterBrut($ressources, $parametres);
 | 
        
           |  |  | 28 |   | 
        
           |  |  | 29 | 		$attendu = 'La requête SQL formée comporte une erreur!';
 | 
        
           |  |  | 30 | 		$message = "L'url :\n'$url'\n doit retourner un résultat de la forme :\n $attendu";
 | 
        
           |  |  | 31 | 		$this->assertEquals($attendu, $retour, $message);
 | 
        
           |  |  | 32 | 	}
 | 
        
           |  |  | 33 |   | 
        
           |  |  | 34 | 	public function testRechercheStricte() {
 | 
        
           |  |  | 35 | 		$ressources = array();
 | 
        
           |  |  | 36 | 		$parametres = array(
 | 
        
           |  |  | 37 | 			'version.projet' => '2007',
 | 
        
           |  |  | 38 | 			'recherche' => 'stricte',
 | 
        
           |  |  | 39 | 			'masque' => 'Abricotier');
 | 
        
           |  |  | 40 | 		$url = $this->creerUrl($ressources, $parametres);
 | 
        
           |  |  | 41 | 		$url_attendu = $this->creerUrl(array('111'), array('version.projet' => '2007'));
 | 
        
           |  |  | 42 |   | 
        
           |  |  | 43 | 		$retour = $this->consulterJson($ressources, $parametres);
 | 
        
           |  |  | 44 | 		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
 | 
        
           |  |  | 45 | 		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
 | 
        
           |  |  | 46 | 		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
 | 
        
           |  |  | 47 | 		$this->assertEquals(1, count($retour['resultat']), "Le résultat devrait contenir une seule donnée. Voir : $url");
 | 
        
           |  |  | 48 |   | 
        
           |  |  | 49 | 		$this->assertArrayNotHasKey('id', $retour['resultat']['111'], "Le tableau du résultat 111 ne doit pas contenir un champ 'id'. Voir : $url");
 | 
        
           |  |  | 50 | 		$this->assertArrayHasKey('href', $retour['resultat']['111'], "Le tableau du résultat 111 doit contenir un champ 'href'. Voir : $url");
 | 
        
           |  |  | 51 | 		$this->assertEquals($url_attendu, $retour['resultat']['111']['href'], "Le tableau du résultat 111 doit contenir un champ 'href' avec pour valeur $url_attendu . Voir : $url");
 | 
        
           |  |  | 52 | 		$this->assertArrayHasKey('nom', $retour['resultat']['111'], "Le tableau du résultat 111 doit contenir un champ 'nom'. Voir : $url");
 | 
        
           |  |  | 53 | 		$this->assertEquals('Abricotier', $retour['resultat']['111']['nom'], "Le tableau du résultat 111 doit contenir un champ 'nom' avec pour valeur 'Abricotier'. Voir : $url");
 | 
        
           |  |  | 54 | 	}
 | 
        
           |  |  | 55 |   | 
        
           |  |  | 56 | 	public function testMasqueNt() {
 | 
        
           |  |  | 57 | 		$ressources = array();
 | 
        
           |  |  | 58 | 		$parametres = array(
 | 
        
           |  |  | 59 | 			'version.projet' => '2007',
 | 
        
           |  |  | 60 | 			'recherche' => 'stricte',
 | 
        
           |  |  | 61 | 			'masque.nt' => '379');
 | 
        
           |  |  | 62 | 		$url = $this->creerUrl($ressources, $parametres);
 | 
        
           |  |  | 63 | 		$url_attendu = $this->creerUrl(array('502'), array('version.projet' => '2007'));
 | 
        
           |  |  | 64 | 		$retour = $this->consulterJson($ressources, $parametres);
 | 
        
           |  |  | 65 |   | 
        
           |  |  | 66 | 		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
 | 
        
           |  |  | 67 | 		$this->assertEquals(2, count($retour['resultat']), "Le résultat devrait contenir une seule donnée. Voir : $url");
 | 
        
           |  |  | 68 | 		$this->assertArrayNotHasKey('id', $retour['resultat']['502'], "Le tableau du résultat 502 ne doit pas contenir un champ 'id'. Voir : $url");
 | 
        
           |  |  | 69 | 		$this->assertArrayHasKey('href', $retour['resultat']['502'], "Le tableau du résultat 502 doit contenir un champ 'href'. Voir : $url");
 | 
        
           |  |  | 70 | 		$this->assertEquals($url_attendu, $retour['resultat']['502']['href'], "Le tableau du résultat 502 doit contenir un champ 'href' avec pour valeur $url_attendu. Voir : $url");
 | 
        
           |  |  | 71 | 		$this->assertArrayHasKey('nom', $retour['resultat']['502'], "Le tableau du résultat 502 doit contenir un champ 'nom'. Voir : $url");
 | 
        
           |  |  | 72 | 		$this->assertEquals('Adénostyle de Briquet', $retour['resultat']['502']['nom'], "Le tableau du résultat 502 doit contenir un champ 'nom' avec pour valeur 'Adénostyle de Briquet'. Voir : $url");
 | 
        
           |  |  | 73 | 	}
 | 
        
           |  |  | 74 |   | 
        
           |  |  | 75 | 	public function testMasqueLg() {
 | 
        
           |  |  | 76 | 		$ressources = array();
 | 
        
           |  |  | 77 | 		$parametres = array(
 | 
        
           |  |  | 78 | 			'version.projet' => '2007',
 | 
        
           |  |  | 79 | 			'recherche' => 'stricte',
 | 
        
           |  |  | 80 | 			'masque.lg' => 'fra',
 | 
        
           |  |  | 81 | 			'navigation.limite' => '100');
 | 
        
           |  |  | 82 | 		$url = $this->creerUrl($ressources, $parametres);
 | 
        
           |  |  | 83 |   | 
        
           |  |  | 84 | 		$retour = $this->consulterJson($ressources, $parametres);
 | 
        
           |  |  | 85 | 		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
 | 
        
           |  |  | 86 | 		$this->assertEquals('masque.lg=fra', $retour['entete']['masque'], "L'attribut 'masque' de l'entête devrait valoir 'masque.lg=fra'. Voir : $url");
 | 
        
           |  |  | 87 | 		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
 | 
        
           |  |  | 88 | 		$this->assertEquals('16411', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 16411. Voir : $url");
 | 
        
           |  |  | 89 | 		$this->assertEquals(100, count($retour['resultat']), "Le résultat devrait contenir 100 données. Voir : $url");
 | 
        
           |  |  | 90 | 	}
 | 
        
           |  |  | 91 |   | 
        
           |  |  | 92 | 	public function testRechercheFloue() {
 | 
        
           |  |  | 93 | 		$ressources = array();
 | 
        
           |  |  | 94 | 		$parametres = array(
 | 
        
           |  |  | 95 | 					'version.projet' => '2007',
 | 
        
           |  |  | 96 | 					'recherche' => 'floue',
 | 
        
           |  |  | 97 | 					'masque' => 'Abrict');
 | 
        
           |  |  | 98 | 		$url = $this->creerUrl($ressources, $parametres);
 | 
        
           |  |  | 99 |   | 
        
           |  |  | 100 | 		$retour = $this->consulterJson($ressources, $parametres);
 | 
        
           |  |  | 101 | 		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
 | 
        
           |  |  | 102 | 		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
 | 
        
           |  |  | 103 | 		$this->assertEquals('5', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
 | 
        
           |  |  | 104 | 		$this->assertEquals(5, count($retour['resultat']), "Le résultat devrait contenir une seule donnée. Voir : $url");
 | 
        
           |  |  | 105 |   | 
        
           |  |  | 106 | 		$resultat_attendu = array(
 | 
        
           |  |  | 107 | 			"2611" => array("nom" => "Apricot", "href" => "http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/2611?version.projet=2007"),
 | 
        
           |  |  | 108 | 			"15868" => array("nom" => "Eyebright", "href" => "http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/15868?version.projet=2007"),
 | 
        
           |  |  | 109 | 			"4857" => array("nom" => "Berg-Ziest", "href" => "http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/4857?version.projet=2007"),
 | 
        
           |  |  | 110 | 			"33750" => array("nom" => "Periquet", "href" => "http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/33750?version.projet=2007"),
 | 
        
           |  |  | 111 | 			"17614" => array("nom" => "Frare cugot", "href"=> "http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/17614?version.projet=2007"));
 | 
        
           |  |  | 112 | 		$this->assertEquals($resultat_attendu, $retour['resultat'], "Le tableau du résultat 111 doit contenir un champ 'href' avec pour valeur $url_attendu . Voir : $url");
 | 
        
           |  |  | 113 | 	}
 | 
        
           |  |  | 114 |   | 
        
           |  |  | 115 | 	public function testRechercheAttributions() {
 | 
        
           |  |  | 116 | 		$ressources = array('attributions');
 | 
        
           |  |  | 117 | 		$parametres = array(
 | 
        
           |  |  | 118 | 			'version.projet' => '2007',
 | 
        
           |  |  | 119 | 			'recherche' => 'stricte',
 | 
        
           |  |  | 120 | 			'masque.nv' => 'Acacia',
 | 
        
           |  |  | 121 | 			'retour.format' => 'min');
 | 
        
           |  |  | 122 | 		$url = $this->creerUrl($ressources, $parametres);
 | 
        
           |  |  | 123 |   | 
        
           |  |  | 124 | 		$retour = $this->consulterJson($ressources, $parametres);
 | 
        
           |  |  | 125 | 		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
 | 
        
           |  |  | 126 | 		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
 | 
        
           |  |  | 127 | 		$this->assertEquals('4', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
 | 
        
           |  |  | 128 | 		$this->assertEquals(4, count($retour['resultat']), "Le résultat devrait contenir une seule donnée. Voir : $url");
 | 
        
           |  |  | 129 |   | 
        
           |  |  | 130 | 		$this->assertArrayHasKey('id', $retour['resultat']['-880871632'], "Le tableau du résultat -880871632 ne doit pas contenir un champ 'id'. Voir : $url");
 | 
        
           |  |  | 131 | 		$this->assertEquals('140', $retour['resultat']['-880871632']['id'], "Le tableau du résultat -880871632 doit contenir un champ 'id' avec pour valeur 140. Voir : $url");
 | 
        
           |  |  | 132 | 		$this->assertArrayNotHasKey('href', $retour['resultat']['-880871632'], "Le tableau du résultat -880871632 doit contenir un champ 'href'. Voir : $url");
 | 
        
           |  |  | 133 | 		$this->assertArrayHasKey('nom_vernaculaire', $retour['resultat']['-880871632'], "Le tableau du résultat -880871632 doit contenir un champ 'nom'. Voir : $url");
 | 
        
           |  |  | 134 | 		$this->assertEquals('Acacia', $retour['resultat']['-880871632']['nom_vernaculaire'], "Le tableau du résultat -880871632 doit contenir un champ 'nom' avec pour valeur 'Acacia'. Voir : $url");
 | 
        
           |  |  | 135 | 		$this->assertArrayHasKey('langue.code', $retour['resultat']['-880871632'], "Le tableau du résultat -880871632 doit contenir un champ 'langue.code'. Voir : $url");
 | 
        
           |  |  | 136 | 		$this->assertEquals('spa', $retour['resultat']['-880871632']['langue.code'], "Le tableau du résultat -880871632 doit contenir un champ 'langue.code' avec pour valeur 'spa'. Voir : $url");
 | 
        
           |  |  | 137 | 		$this->assertArrayHasKey('taxon.code', $retour['resultat']['-880871632'], "Le tableau du résultat -880871632 doit contenir un champ 'taxon.code'. Voir : $url");
 | 
        
           |  |  | 138 | 		$this->assertEquals('bdtfx.nt:30746', $retour['resultat']['-880871632']['taxon.code'], "Le tableau du résultat -880871632 doit contenir un champ 'taxon.code' avec pour valeur 'bdtfx.nt:30746'. Voir : $url");
 | 
        
           |  |  | 139 |   | 
        
           |  |  | 140 | 	}
 | 
        
           |  |  | 141 |   | 
        
           |  |  | 142 | 	public function testerIdAvecOntologies() {
 | 
        
           |  |  | 143 | 		$ressources = array('140');
 | 
        
           |  |  | 144 | 		$parametres = array('version.projet' => '2007');
 | 
        
           |  |  | 145 | 		$url = $this->creerUrl($ressources, $parametres);
 | 
        
           |  |  | 146 |   | 
        
           |  |  | 147 | 		$retour = $this->consulterJson($ressources, $parametres);
 | 
        
           |  |  | 148 | 		$this->assertArrayNotHasKey('entete', $retour, "Le json contient un attribut : entete. Voir : $url");
 | 
        
           |  |  | 149 | 		$this->assertArrayNotHasKey('resultat', $retour, "Le json contient un attribut : resultat. Voir : $url");
 | 
        
           |  |  | 150 | 		$this->assertArrayHasKey('id', $retour, "Le json doit contenir un attribut : 'id' . Voir : $url");
 | 
        
           |  |  | 151 | 		$this->assertEquals('140', $retour['id'], "Le json doit contenir un attribut 'id' avec pour valeur 140. Voir : $url");
 | 
        
           |  |  | 152 | 		$this->assertArrayHasKey('nom_vernaculaire', $retour, "Le json doit contenir un attribut 'nom'. Voir : $url");
 | 
        
           |  |  | 153 | 		$this->assertEquals('Acacia', $retour['nom_vernaculaire'], "Le json doit contenir un attribut 'nom' avec pour valeur 'Acacia'. Voir : $url");
 | 
        
           |  |  | 154 | 		$this->assertArrayHasKey('attributions', $retour, "Le json doit contenir un attribut 'attributions'. Voir : $url");
 | 
        
           |  |  | 155 | 		$this->assertEquals(2, count($retour['attributions']), "Le résultat devrait contenir deux langues d'attributions. Voir : $url");
 | 
        
           |  |  | 156 | 		$this->assertEquals(1, count($retour['attributions']['fra']), "Le résultat devrait contenir une attribution à un taxon en français. Voir : $url");
 | 
        
           |  |  | 157 | 		$this->assertArrayHasKey('taxon', $retour['attributions']['fra']['-1617415758'], "Le json doit contenir un attribut : 'taxon' . Voir : $url");
 | 
        
           |  |  | 158 | 		$this->assertEquals('Robinia pseudoacacia', $retour['attributions']['fra']['-1617415758']['taxon'], "Le json doit contenir un attribut 'taxon' avec pour valeur Robinia pseudoacacia. Voir : $url");
 | 
        
           |  |  | 159 | 		$this->assertArrayHasKey('genre', $retour['attributions']['fra']['-1617415758'], "Le json doit contenir un attribut : 'genre' . Voir : $url");
 | 
        
           |  |  | 160 | 		$this->assertEquals('Masculin singulier', $retour['attributions']['fra']['-1617415758']['genre'], "Le json doit contenir un attribut 'genre' avec pour valeur Masculin singulier. Voir : $url");
 | 
        
           |  |  | 161 | 		$this->assertArrayHasKey('conseil_emploi', $retour['attributions']['fra']['-1617415758'], "Le json doit contenir un attribut : 'conseil_emploi' . Voir : $url");
 | 
        
           | 275 | aurelien | 162 | 		$this->assertEquals('Recommandé ou typique', $retour['attributions']['fra']['-1617415758']['conseil_emploi'], "Le json doit contenir un attribut 'conseil_emploi' avec pour valeur Recommandé ou typique. Voir : $url");
 | 
        
           |  |  | 163 | 	}
 | 
        
           |  |  | 164 |   | 
        
           | 276 | aurelien | 165 | 	public function testerAttributionsAvecRechercheMasqueEtOntologies() {
 | 
        
           |  |  | 166 | 		$ressources = array('attributions');
 | 
        
           |  |  | 167 | 		$parametres = array(
 | 
        
           |  |  | 168 | 			'retour.format' => 'max',
 | 
        
           |  |  | 169 | 			'navigation.limite' => '50',
 | 
        
           |  |  | 170 | 			'masque.nt' => '8523');
 | 
        
           |  |  | 171 | 		$url = $this->creerUrl($ressources, $parametres);
 | 
        
           |  |  | 172 |   | 
        
           |  |  | 173 | 		$retour = $this->consulterJson($ressources, $parametres);
 | 
        
           |  |  | 174 | 		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
 | 
        
           |  |  | 175 | 		$this->assertArrayHasKey('resultat', $retour, "Le json contient pas d'attribut : resultat. Voir : $url");
 | 
        
           |  |  | 176 |   | 
        
           |  |  | 177 | 		$this->assertEquals('21', $retour['entete']['total'], "Le json ne contient pas le nombre de valeurs attendues. Voir : $url");
 | 
        
           |  |  | 178 | 		$this->assertEquals('Acer monspessulanum', $retour['resultat']['2081013327']['taxon'], "Le json ne contient pas le taxon attendu. Voir : $url");
 | 
        
           |  |  | 179 | 		$this->assertEquals('Masculin singulier', $retour['resultat']['2081013327']['genre'], "Le json ne contient pas le genre attendu pour ce taxon. Voir : $url");
 | 
        
           |  |  | 180 | 		$this->assertEquals('Recommandé ou typique', $retour['resultat']['2081013327']['conseil_emploi'], "Le json ne contient pas le conseil emploi attendu pour ce taxon. Voir : $url");
 | 
        
           |  |  | 181 | 	}
 | 
        
           |  |  | 182 |   | 
        
           | 275 | aurelien | 183 | 	public function testerAvecLangueFrMasqueEtRetourOss() {
 | 
        
           |  |  | 184 | 		$ressources = array();
 | 
        
           |  |  | 185 | 		$parametres = array(
 | 
        
           |  |  | 186 | 					'recherche' => 'etendue',
 | 
        
           |  |  | 187 | 					'retour.format' => 'oss',
 | 
        
           |  |  | 188 | 					'navigation.limite' => '50',
 | 
        
           |  |  | 189 | 					'masque.lg' => 'fra',
 | 
        
           |  |  | 190 | 					'masque' => 'Abr');
 | 
        
           |  |  | 191 | 		$url = $this->creerUrl($ressources, $parametres);
 | 
        
           |  |  | 192 | 		$retour = $this->consulterJson($ressources, $parametres);
 | 
        
           | 159 | delphine | 193 |   | 
        
           | 275 | aurelien | 194 | 		$retour = $this->consulterJson($ressources, $parametres);
 | 
        
           |  |  | 195 | 		$this->assertArrayNotHasKey('entete', $retour, "Le json ne doit pas contenir d'attribut : entete. Voir : $url");
 | 
        
           |  |  | 196 | 		$this->assertEquals('Pas de masque', $retour['0'], "L'attribut 0 du retour devrait valoir 'Pas de masque'. Voir : $url");
 | 
        
           |  |  | 197 | 		$this->assertArrayNotHasKey('resultat', $retour, "Le json ne doit pas contenir d'attribut : resultat. Voir : $url");
 | 
        
           |  |  | 198 | 		$this->assertEquals(50, count($retour[1]), "Le résultat devrait contenir 100 données. Voir : $url");
 | 
        
           | 159 | delphine | 199 | 	}
 | 
        
           |  |  | 200 | }
 | 
        
           |  |  | 201 | ?>
 |