| 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');
 | 
        
           | 790 | raphael | 14 | 		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
 | 
        
           |  |  | 15 | 		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
 | 
        
           | 159 | delphine | 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');
 | 
        
           | 790 | raphael | 25 | 		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
 | 
        
           | 159 | delphine | 26 |   | 
        
           | 790 | raphael | 27 | 		$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
 | 
        
           | 159 | delphine | 28 |   | 
        
           | 947 | raphael | 29 | 		$attendu = "La table recherchée n'existe pas";
 | 
        
           | 159 | delphine | 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');
 | 
        
           | 790 | raphael | 40 | 		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
 | 
        
           |  |  | 41 | 		$url_attendu = ServiceEflorePhpUnit::creerUrl($this->service, array('111'), array('version.projet' => '2007'));
 | 
        
           | 159 | delphine | 42 |   | 
        
           | 790 | raphael | 43 | 		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
 | 
        
           | 159 | delphine | 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");
 | 
        
           | 897 | raphael | 47 | 		$this->assertCount(1, $retour['resultat'], "Le résultat devrait contenir une seule donnée. Voir : $url");
 | 
        
           | 159 | delphine | 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');
 | 
        
           | 790 | raphael | 62 | 		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
 | 
        
           |  |  | 63 | 		$url_attendu = ServiceEflorePhpUnit::creerUrl($this->service, array('502'), array('version.projet' => '2007'));
 | 
        
           |  |  | 64 | 		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
 | 
        
           | 159 | delphine | 65 |   | 
        
           |  |  | 66 | 		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
 | 
        
           | 897 | raphael | 67 | 		$this->assertCount(2, $retour['resultat'], "Le résultat devrait contenir une seule donnée. Voir : $url");
 | 
        
           | 159 | delphine | 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');
 | 
        
           | 790 | raphael | 82 | 		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
 | 
        
           | 159 | delphine | 83 |   | 
        
           | 790 | raphael | 84 | 		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
 | 
        
           | 159 | delphine | 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");
 | 
        
           | 897 | raphael | 89 | 		$this->assertCount(100, $retour['resultat'], "Le résultat devrait contenir 100 données. Voir : $url");
 | 
        
           | 159 | delphine | 90 | 	}
 | 
        
           |  |  | 91 |   | 
        
           |  |  | 92 | 	public function testRechercheFloue() {
 | 
        
           |  |  | 93 | 		$ressources = array();
 | 
        
           |  |  | 94 | 		$parametres = array(
 | 
        
           |  |  | 95 | 					'version.projet' => '2007',
 | 
        
           |  |  | 96 | 					'recherche' => 'floue',
 | 
        
           |  |  | 97 | 					'masque' => 'Abrict');
 | 
        
           | 790 | raphael | 98 | 		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
 | 
        
           | 834 | raphael | 99 | 		$url_attendu_pattern = ServiceEflorePhpUnit::creerUrl($this->service, ['%d'], array('version.projet' => '2007'));
 | 
        
           | 159 | delphine | 100 |   | 
        
           | 790 | raphael | 101 | 		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
 | 
        
           | 159 | delphine | 102 | 		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
 | 
        
           |  |  | 103 | 		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
 | 
        
           |  |  | 104 | 		$this->assertEquals('5', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
 | 
        
           | 897 | raphael | 105 | 		$this->assertCount(5, $retour['resultat'], "Le résultat devrait contenir une seule donnée. Voir : $url");
 | 
        
           | 159 | delphine | 106 |   | 
        
           |  |  | 107 | 		$resultat_attendu = array(
 | 
        
           | 834 | raphael | 108 | 			"2611" => array("nom" => "Apricot", "href" => sprintf($url_attendu_pattern, 2611)),
 | 
        
           |  |  | 109 | 			"15868" => array("nom" => "Eyebright", "href" => sprintf($url_attendu_pattern, 15868)),
 | 
        
           |  |  | 110 | 			"4857" => array("nom" => "Berg-Ziest", "href" => sprintf($url_attendu_pattern, 4857)),
 | 
        
           |  |  | 111 | 			"33750" => array("nom" => "Periquet", "href" => sprintf($url_attendu_pattern, 33750)),
 | 
        
           |  |  | 112 | 			"17614" => array("nom" => "Frare cugot", "href"=> sprintf($url_attendu_pattern, 17614)));
 | 
        
           |  |  | 113 | 		$this->assertEquals($resultat_attendu, $retour['resultat'], "Le tableau de résultats est inattendu. Voir : $url");
 | 
        
           | 159 | delphine | 114 | 	}
 | 
        
           |  |  | 115 |   | 
        
           |  |  | 116 | 	public function testRechercheAttributions() {
 | 
        
           |  |  | 117 | 		$ressources = array('attributions');
 | 
        
           |  |  | 118 | 		$parametres = array(
 | 
        
           |  |  | 119 | 			'version.projet' => '2007',
 | 
        
           |  |  | 120 | 			'recherche' => 'stricte',
 | 
        
           |  |  | 121 | 			'masque.nv' => 'Acacia',
 | 
        
           |  |  | 122 | 			'retour.format' => 'min');
 | 
        
           | 790 | raphael | 123 | 		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
 | 
        
           | 159 | delphine | 124 |   | 
        
           | 790 | raphael | 125 | 		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
 | 
        
           | 159 | delphine | 126 | 		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
 | 
        
           |  |  | 127 | 		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
 | 
        
           | 834 | raphael | 128 | 		$this->assertEquals('4', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 4. Voir : $url");
 | 
        
           | 897 | raphael | 129 | 		$this->assertCount(4, $retour['resultat'], "Le résultat devrait contenir une seule donnée. Voir : $url");
 | 
        
           | 159 | delphine | 130 |   | 
        
           |  |  | 131 | 		$this->assertArrayHasKey('id', $retour['resultat']['-880871632'], "Le tableau du résultat -880871632 ne doit pas contenir un champ 'id'. Voir : $url");
 | 
        
           |  |  | 132 | 		$this->assertEquals('140', $retour['resultat']['-880871632']['id'], "Le tableau du résultat -880871632 doit contenir un champ 'id' avec pour valeur 140. Voir : $url");
 | 
        
           |  |  | 133 | 		$this->assertArrayNotHasKey('href', $retour['resultat']['-880871632'], "Le tableau du résultat -880871632 doit contenir un champ 'href'. Voir : $url");
 | 
        
           |  |  | 134 | 		$this->assertArrayHasKey('nom_vernaculaire', $retour['resultat']['-880871632'], "Le tableau du résultat -880871632 doit contenir un champ 'nom'. Voir : $url");
 | 
        
           |  |  | 135 | 		$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");
 | 
        
           |  |  | 136 | 		$this->assertArrayHasKey('langue.code', $retour['resultat']['-880871632'], "Le tableau du résultat -880871632 doit contenir un champ 'langue.code'. Voir : $url");
 | 
        
           |  |  | 137 | 		$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");
 | 
        
           | 889 | raphael | 138 | 		$this->assertArrayHasKey('code_langue', $retour['resultat']['-880871632'], "Le tableau du résultat -880871632 doit contenir un champ 'code_langue'. Voir : $url");
 | 
        
           |  |  | 139 | 		$this->assertEquals('spa', $retour['resultat']['-880871632']['code_langue'], "Le tableau du résultat -880871632 doit contenir un champ 'code_langue' avec pour valeur 'spa'. Voir : $url");
 | 
        
           | 159 | delphine | 140 | 		$this->assertArrayHasKey('taxon.code', $retour['resultat']['-880871632'], "Le tableau du résultat -880871632 doit contenir un champ 'taxon.code'. Voir : $url");
 | 
        
           |  |  | 141 | 		$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");
 | 
        
           |  |  | 142 |   | 
        
           |  |  | 143 | 	}
 | 
        
           |  |  | 144 |   | 
        
           |  |  | 145 | 	public function testerIdAvecOntologies() {
 | 
        
           |  |  | 146 | 		$ressources = array('140');
 | 
        
           |  |  | 147 | 		$parametres = array('version.projet' => '2007');
 | 
        
           | 790 | raphael | 148 | 		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
 | 
        
           | 159 | delphine | 149 |   | 
        
           | 790 | raphael | 150 | 		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
 | 
        
           | 159 | delphine | 151 | 		$this->assertArrayNotHasKey('entete', $retour, "Le json contient un attribut : entete. Voir : $url");
 | 
        
           |  |  | 152 | 		$this->assertArrayNotHasKey('resultat', $retour, "Le json contient un attribut : resultat. Voir : $url");
 | 
        
           |  |  | 153 | 		$this->assertArrayHasKey('id', $retour, "Le json doit contenir un attribut : 'id' . Voir : $url");
 | 
        
           |  |  | 154 | 		$this->assertEquals('140', $retour['id'], "Le json doit contenir un attribut 'id' avec pour valeur 140. Voir : $url");
 | 
        
           |  |  | 155 | 		$this->assertArrayHasKey('nom_vernaculaire', $retour, "Le json doit contenir un attribut 'nom'. Voir : $url");
 | 
        
           |  |  | 156 | 		$this->assertEquals('Acacia', $retour['nom_vernaculaire'], "Le json doit contenir un attribut 'nom' avec pour valeur 'Acacia'. Voir : $url");
 | 
        
           |  |  | 157 | 		$this->assertArrayHasKey('attributions', $retour, "Le json doit contenir un attribut 'attributions'. Voir : $url");
 | 
        
           | 897 | raphael | 158 | 		$this->assertCount(2, $retour['attributions'], "Le résultat devrait contenir deux langues d'attributions. Voir : $url");
 | 
        
           |  |  | 159 | 		$this->assertCount(1, $retour['attributions']['fra'], "Le résultat devrait contenir une attribution à un taxon en français. Voir : $url");
 | 
        
           | 159 | delphine | 160 | 		$this->assertArrayHasKey('taxon', $retour['attributions']['fra']['-1617415758'], "Le json doit contenir un attribut : 'taxon' . Voir : $url");
 | 
        
           | 784 | raphael | 161 | 		$this->assertEquals('Robinia pseudoacacia L.', $retour['attributions']['fra']['-1617415758']['taxon'], "Le json doit contenir un attribut 'taxon' avec pour valeur Robinia pseudoacacia. Voir : $url");
 | 
        
           | 159 | delphine | 162 | 		$this->assertArrayHasKey('genre', $retour['attributions']['fra']['-1617415758'], "Le json doit contenir un attribut : 'genre' . Voir : $url");
 | 
        
           |  |  | 163 | 		$this->assertEquals('Masculin singulier', $retour['attributions']['fra']['-1617415758']['genre'], "Le json doit contenir un attribut 'genre' avec pour valeur Masculin singulier. Voir : $url");
 | 
        
           |  |  | 164 | 		$this->assertArrayHasKey('conseil_emploi', $retour['attributions']['fra']['-1617415758'], "Le json doit contenir un attribut : 'conseil_emploi' . Voir : $url");
 | 
        
           | 275 | aurelien | 165 | 		$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");
 | 
        
           |  |  | 166 | 	}
 | 
        
           |  |  | 167 |   | 
        
           | 276 | aurelien | 168 | 	public function testerAttributionsAvecRechercheMasqueEtOntologies() {
 | 
        
           |  |  | 169 | 		$ressources = array('attributions');
 | 
        
           |  |  | 170 | 		$parametres = array(
 | 
        
           |  |  | 171 | 			'retour.format' => 'max',
 | 
        
           |  |  | 172 | 			'navigation.limite' => '50',
 | 
        
           |  |  | 173 | 			'masque.nt' => '8523');
 | 
        
           | 790 | raphael | 174 | 		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
 | 
        
           | 276 | aurelien | 175 |   | 
        
           | 790 | raphael | 176 | 		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
 | 
        
           | 276 | aurelien | 177 | 		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
 | 
        
           |  |  | 178 | 		$this->assertArrayHasKey('resultat', $retour, "Le json contient pas d'attribut : resultat. Voir : $url");
 | 
        
           |  |  | 179 |   | 
        
           |  |  | 180 | 		$this->assertEquals('21', $retour['entete']['total'], "Le json ne contient pas le nombre de valeurs attendues. Voir : $url");
 | 
        
           | 949 | raphael | 181 | 		$this->assertArrayHasKey(2081013327, $retour['resultat'], "[resultat] ne contient pas l'élément 2081013327. Voir : $url");
 | 
        
           |  |  | 182 | 		$this->assertArrayHasKeys(['taxon', 'genre', 'conseil_emploi'], $retour['resultat'][2081013327], "[resultat][2081013327] ne contient pas tous les éléments. Voir : $url");
 | 
        
           | 783 | raphael | 183 | 		$this->assertEquals('Acer monspessulanum L.', $retour['resultat']['2081013327']['taxon'], "Le json ne contient pas le taxon attendu. Voir : $url");
 | 
        
           | 276 | aurelien | 184 | 		$this->assertEquals('Masculin singulier', $retour['resultat']['2081013327']['genre'], "Le json ne contient pas le genre attendu pour ce taxon. Voir : $url");
 | 
        
           |  |  | 185 | 		$this->assertEquals('Recommandé ou typique', $retour['resultat']['2081013327']['conseil_emploi'], "Le json ne contient pas le conseil emploi attendu pour ce taxon. Voir : $url");
 | 
        
           |  |  | 186 | 	}
 | 
        
           |  |  | 187 |   | 
        
           | 275 | aurelien | 188 | 	public function testerAvecLangueFrMasqueEtRetourOss() {
 | 
        
           |  |  | 189 | 		$ressources = array();
 | 
        
           |  |  | 190 | 		$parametres = array(
 | 
        
           |  |  | 191 | 					'recherche' => 'etendue',
 | 
        
           |  |  | 192 | 					'retour.format' => 'oss',
 | 
        
           |  |  | 193 | 					'navigation.limite' => '50',
 | 
        
           |  |  | 194 | 					'masque.lg' => 'fra',
 | 
        
           |  |  | 195 | 					'masque' => 'Abr');
 | 
        
           | 790 | raphael | 196 | 		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
 | 
        
           | 834 | raphael | 197 | 		// Raphaël, le 28/08/2013: pourquoi double-requête ? dans le doute: commentée
 | 
        
           |  |  | 198 | 		// $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
 | 
        
           | 790 | raphael | 199 | 		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
 | 
        
           | 275 | aurelien | 200 | 		$this->assertArrayNotHasKey('entete', $retour, "Le json ne doit pas contenir d'attribut : entete. Voir : $url");
 | 
        
           |  |  | 201 | 		$this->assertEquals('Pas de masque', $retour['0'], "L'attribut 0 du retour devrait valoir 'Pas de masque'. Voir : $url");
 | 
        
           |  |  | 202 | 		$this->assertArrayNotHasKey('resultat', $retour, "Le json ne doit pas contenir d'attribut : resultat. Voir : $url");
 | 
        
           | 897 | raphael | 203 | 		$this->assertCount(50, $retour[1], "Le résultat devrait contenir 50 données. Voir : $url");
 | 
        
           | 159 | delphine | 204 | 	}
 | 
        
           | 834 | raphael | 205 |   | 
        
           |  |  | 206 | 	// L'utilisation de retour.champs=conseil_emploi sur l'Héliotrope commun induit un requêtage à
 | 
        
           |  |  | 207 | 	// de multiple ontologies. Celles-ci devraient être factorisées sous la forme d'une requête et le
 | 
        
           |  |  | 208 | 	// résultat renvoyé correct.
 | 
        
           |  |  | 209 | 	// nvjfl/noms-vernaculaires/attributions?masque.nt=1382&retour.champs=conseil_emploi
 | 
        
           |  |  | 210 | 	// masque.lg=fra (pour simplement réduire la lourdeur)
 | 
        
           |  |  | 211 | 	public function testAttributionsOntologiesMultiples() {
 | 
        
           |  |  | 212 | 		$parametres = [ 'masque.nt' => 1382, 'retour.champs' => 'conseil_emploi,genre', 'masque.lg' => 'fra' ];
 | 
        
           | 889 | raphael | 213 | 		$url = ServiceEflorePhpUnit::creerUrl('noms-vernaculaires', ['attributions'], $parametres);
 | 
        
           | 834 | raphael | 214 | 		$retour = $this->consulterJson('noms-vernaculaires', 'nvjfl', ['attributions'], $parametres);
 | 
        
           |  |  | 215 |   | 
        
           |  |  | 216 | 		// basique:
 | 
        
           |  |  | 217 | 		$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url");
 | 
        
           |  |  | 218 | 		$this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url");
 | 
        
           |  |  | 219 | 		$this->assertEquals('4', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url");
 | 
        
           | 897 | raphael | 220 | 		$this->assertCount(4, $retour['resultat'], "Le résultat devrait contenir une seule donnée. Voir : $url");
 | 
        
           | 834 | raphael | 221 |   | 
        
           |  |  | 222 | 		// présence champs standards:
 | 
        
           |  |  | 223 | 		foreach($retour['resultat'] as $k => $e) {
 | 
        
           | 889 | raphael | 224 | 			foreach([ 'id', 'nom_vernaculaire', 'taxon', 'code_langue', /* 'langue.code', 'taxon.code', 'href', */ 'nom_retenu.code', 'num_taxon' ] as $v) {
 | 
        
           | 834 | raphael | 225 | 				$this->assertArrayHasKey($v, $e, "Le json ne contient pas l'attribut \"$v\" pour l'élément \"$k\". Voir : $url");
 | 
        
           |  |  | 226 | 			}
 | 
        
           |  |  | 227 | 		}
 | 
        
           |  |  | 228 |   | 
        
           |  |  | 229 | 		// présence champs additionnels:
 | 
        
           |  |  | 230 | 		foreach($retour['resultat'] as $k => $e) {
 | 
        
           |  |  | 231 | 			foreach([ 'is_null', 'zone_usage', 'num_genre', 'notes', 'num_statut', 'num_nom_vernaculaire' ] as $v) {
 | 
        
           |  |  | 232 | 				$this->assertArrayHasKey($v, $e, "Le json ne contient pas l'attribut \"$v\" pour l'élément \"$k\". Voir : $url");
 | 
        
           |  |  | 233 | 			}
 | 
        
           |  |  | 234 | 		}
 | 
        
           |  |  | 235 |   | 
        
           |  |  | 236 | 		// -1311256838
 | 
        
           |  |  | 237 | 		$this->assertArrayHasKey('-1311256838', $retour['resultat'], "Le json ne contient pas l'élément -1311256838. Voir : $url");
 | 
        
           |  |  | 238 | 		$this->assertEquals('Recommandé ou typique', $retour['resultat']['-1311256838']['conseil_emploi'], "L'élément '-1311256838' contient une valeur erronée pour l'attribut 'conseil_emploi'. Voir : $url");
 | 
        
           |  |  | 239 | 		$this->assertEquals('Héliotrope commun', $retour['resultat']['-1311256838']['nom_vernaculaire'], "L'élément '-1311256838' contient une valeur erronée pour l'attribut 'nom_vernaculaire'. Voir : $url");
 | 
        
           |  |  | 240 | 		$this->assertEquals('1', $retour['resultat']['-1311256838']['num_statut'], "L'élément '-1311256838' contient une valeur erronée pour l'attribut 'num_statut'. Voir : $url");
 | 
        
           |  |  | 241 |   | 
        
           |  |  | 242 | 		$this->assertEquals('Secondaire ou régional', $retour['resultat']['-516239805']['conseil_emploi'], "L'élément '-516239805' contient une valeur erronée pour l'attribut 'conseil_emploi'. Voir : $url");
 | 
        
           |  |  | 243 | 		$this->assertEquals('Girasol', $retour['resultat']['-516239805']['nom_vernaculaire'], "L'élément '-516239805' contient une valeur erronée pour l'attribut 'nom_vernaculaire'. Voir : $url");
 | 
        
           |  |  | 244 | 		$this->assertEquals('2', $retour['resultat']['-516239805']['num_statut'], "L'élément '-516239805' contient une valeur erronée pour l'attribut 'num_statut'. Voir : $url");
 | 
        
           |  |  | 245 |   | 
        
           | 889 | raphael | 246 | 		// TODO: num_taxon => taxon.code ?
 | 
        
           | 834 | raphael | 247 | 		// absence champs "pseudo"-inattendus
 | 
        
           |  |  | 248 | 		foreach($retour['resultat'] as $k => $e) {
 | 
        
           |  |  | 249 | 			foreach([ '_result_ontologies@nvjfl'] as $v) {
 | 
        
           |  |  | 250 | 				$this->assertArrayNotHasKey($v, $e, "Le json contient l'attribut \"$v\" pour l'élément \"$k\". Voir : $url");
 | 
        
           |  |  | 251 | 			}
 | 
        
           |  |  | 252 | 		}
 | 
        
           |  |  | 253 | 	}
 | 
        
           |  |  | 254 |   | 
        
           | 159 | delphine | 255 | }
 |