New file |
0,0 → 1,319 |
<?php |
|
require_once dirname(__FILE__).'/../ServiceEflorePhpUnit.php'; |
|
class InformationsBaseflorTest extends ServiceEflorePhpUnit { |
|
public function __construct() { |
$this->projet = 'baseflor'; |
$this->service = 'informations'; |
} |
|
|
//++ ------------------------------------Test des ressources -----------------------------++ |
|
public function testRessourceReferentielInconnu() { |
$ressources = array('dgoju.nn:73256'); |
$parametres = array(); |
$retour = $this->consulterBrut($ressources, $parametres); |
$messageAttendu = |
"Erreur dans l'url de votre requête :". |
" </br> Le référentiel \" ". dgoju . " \" n'existe pas."; |
$this->assertEquals($messageAttendu, $retour, |
"Il faut indiquer un référentiel inconnu."); |
} |
|
public function testRessourceInconnue() { |
$ressources = array('inconnue'); |
$parametres = array(); |
$retour = $this->consulterBrut($ressources, $parametres); |
$messageAttendu = |
"Erreur dans l'url de votre requête : </br> La ressource demandée n'existe pas."; |
$this->assertEquals($messageAttendu, $retour, |
"Il faut indiquer si une ressource est eronnée."); |
} |
|
public function testRessourceNNInconnu() { |
$ressources = array('bdtfx.nn:3'); |
$parametres = array(); |
$retour = $this->consulterBrut($ressources, $parametres); |
$messageAttendu = "Les données recherchées sont introuvables."; |
$this->assertEquals($messageAttendu, $retour, |
"Il faut indiquer si une requête ne renvoie pas de résultats."); |
} |
|
//++ ------------------------------------Test des paramètres -----------------------------++ |
|
public function testParametreInconnu() { |
$ressourcesList = array( |
array('bdtfx.nn:73256'), |
array('bdtfx.nn:101128')); |
$parametres = array('paramatre' => 'image/jpeg'); |
foreach ($ressourcesList as $ressources) { |
$retour = $this->consulterBrut($ressources, $parametres); |
$messageAttendu = "Erreur dans les parametres de votre requête :". |
" </br> Le paramètre \" paramatre \" n'existe pas."; |
$this->assertEquals($messageAttendu, $retour, |
"Il faut indiquer si un paramètre est inconnu."); |
} |
|
} |
|
public function testParametreCategorieInconnue() { |
$ressourcesList = array( |
array('bdtfx.nn:73256'), |
array('bdtfx.nn:101128')); |
$parametres = array('categorie' => 'inventé'); |
foreach ($ressourcesList as $ressources) { |
$retour = $this->consulterBrut($ressources, $parametres); |
$messageAttendu = "Valeur de paramètre inconnue pour 'categorie'."; |
$this->assertEquals($messageAttendu, $retour, |
"Il faut indiquer si la valeur du paramètre categorie est inconnue pour $ressources . "); |
} |
} |
|
public function testParametreNavigationLimiteSansDepart() { |
$ressources = array(); |
$parametresList = array( |
array('navigation.depart' => 10), |
array('navigation.limite' => 68)); |
foreach ($parametresList as $parametres) { |
$retour = $this->consulterBrut($ressources, $parametres); |
$param = isset($parametres['navigation.limite']) ? 'navigation.depart' : 'navigation.limite'; |
$messageAttendu = "indiquez également la valeur pour le paramètre $param."; |
$this->assertEquals($messageAttendu, $retour, |
"Navigation.depart et navigation.limite doivent être présents ensemble."); |
} |
} |
|
public function testParametreDepartSuperieurTotalResultats() { |
$ressources = array(); |
$parametres = array('navigation.depart' => 20000, 'navigation.limite' => 10 ); |
$retour = $this->consulterBrut($ressources, $parametres); |
$messageAttendu = |
"Erreur : la valeur pour le paramètre navigation.départ est supérieure". |
" au nombre total de résultats."; |
$this->assertEquals($messageAttendu, $retour, |
"Il faut indiquer si la valeur de départ est supérieure au nombre de résultats."); |
} |
|
|
public function testParametreNavigationErrone() { |
$ressources = array(); |
$parametresList = array( |
array('navigation.depart' => -5, 'navigation.limite' => 10 ), |
array('navigation.depart' => 0, 'navigation.limite' => abc )); |
$cles = array('navigation.depart','navigation.limite'); |
$i = 0 ; |
foreach ($parametresList as $parametres) { |
$retour = $this->consulterBrut($ressources, $parametres); |
$messageAttendu = "Erreur : valeur erronnée pour le paramètre {$cles[$i]}."; |
$this->assertEquals($messageAttendu, $retour, |
"il faut indiquer lorsque qu'un des paramètres de navigation a une valeur impossible."); |
$i++; |
} |
} |
|
public function testParametreRetourFormatErrone() { |
$ressourcesList = array( |
array('bdtfx.nn:73256'), |
array('bdtfx.nn:101128')); |
$parametres = array('retour.format' => 'pdf'); |
foreach ($ressourcesList as $ressources) { |
$retour = $this->consulterBrut($ressources, $parametres); |
$messageAttendu = "Valeur de paramètre inconnue pour 'retour.format'."; |
$this->assertEquals($messageAttendu, $retour, |
"il faut indiquer lorsque que le paramètre retour.format a une valeur impossible."); |
} |
} |
|
public function testParametreVersionProjetInconnu() { |
$ressourcesList = array( |
array('bdtfx.nn:73256'), |
array('bdtfx.nn:101128')); |
$parametres = array('version.projet' => 'dhgkg22'); |
foreach ($ressourcesList as $ressources){ |
$retour = $this->consulterBrut($ressources, $parametres); |
$messageAttendu = "Erreur : La version est inconnue."; |
$this->assertEquals($messageAttendu, $retour, |
"Il faut indiquer si la valeur du paramètre version.projet est inconnue."); |
} |
} |
|
//++ ------------------------------------Test du retour json correct -----------------------------++ |
|
//++ ---Informations ----++ |
|
public function testJsonBienFormeInformations() { |
$ressources = array(); |
$parametres = array('navigation.depart' => 10, 'navigation.limite' => 15); |
$url = $this->creerUrl($ressources, $parametres); |
$retour = $this->consulterJson($ressources, $parametres); |
$this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url"); |
$this->assertArrayHasKey('resultats', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url"); |
$this->verifierJsonEnteteBienFormeInformations($retour, $parametres); |
} |
|
private function verifierJsonEnteteBienFormeInformations($retour, $parametres) { |
//depart |
$this->assertArrayHasKey('depart', $retour['entete'], |
"L'en-tête ne contient pas d'attribut : depart "); |
$this->assertEquals($retour['entete']['depart'], $parametres['navigation.depart'], |
"La valeur de départ est incorrecte dans l'en-tête."); |
//limite |
$this->assertArrayHasKey('limite', $retour['entete'], |
"L'en-tête ne contient pas d'attribut : limite"); |
$this->assertEquals($retour['entete']['limite'], $parametres['navigation.limite'], |
"La valeur de limite est incorrecte dans l'en-tête."); |
//total |
$this->assertArrayHasKey('total', $retour['entete'], |
"L'en-tête ne contient pas d'attribut : total "); |
$this->assertNotEquals('', $retour['entete']['total'], |
"La valeur de total est vide dans l'en-tête."); |
//href |
$this->assertArrayHasKey('href.suivant', $retour['entete'], |
"L'en-tête ne contient pas d'attribut : href.suivant "); |
$this->assertArrayHasKey('href.precedent', $retour['entete'], |
"L'en-tête ne contient pas d'attribut : href.precedent "); |
$parametres_url = |
array('navigation.depart' => ($retour['entete']['limite']+$retour['entete']['depart']), |
'navigation.limite' => $retour['entete']['limite'] ); |
$urlsuivant = $this->creerUrl($ressources, $parametres_url); |
$this->assertEquals($urlsuivant, $retour['entete']['href.suivant'], |
"L' url $urlsuivant de l'entete est incorrecte."); |
} |
|
public function testJsonResultatsHrefInformations() { |
$ressources = array(); |
$parametres = array('navigation.depart' => 370, 'navigation.limite' => 5); |
$url = $this->creerUrl($ressources, $parametres); |
$retour = $this->consulterJson($ressources, $parametres); |
foreach ($retour as $id => $valeurs) { |
if ( empty($valeurs['resultats']['num_nomen']) ) { |
$this->assertArrayNotHasKey('href', $valeurs['resultats'], |
"Il ne doit pas avoir de lien s'il n'y a pas de numéro nomenclatural (=0). Voir $url "); |
} |
} |
} |
|
public function testJsonNombreLimiteDemande() { |
$ressources = array(); |
$parametresList = array('navigation.depart' => 10, 'navigation.limite' => 15 ); |
$url = $this->creerUrl($ressources, $parametres); |
$retour = $this->consulterJson($ressources, $parametres); |
$this->assertLessThanOrEqual(15, count($retour), |
"Le json renvoie un nombre de résultats trop important : entete. Voir : $url"); |
} |
|
//++ ---Informations.nn ----++ |
|
public function testJsonInformationsNN_min() { |
$ressourcesList = array( |
array('bdtfx.nn:73256'), |
array('bdtfx.nn:101128')); |
$parametres = array('retour.format' => 'min' ); |
foreach ($ressourcesList as $ressources) { |
$retour = $this->consulterJson($ressources, $parametres); |
$this->assertArrayNotHasKey('type_bio.code',$retour, |
"Le champs 'type_bio.code' ne doit pas être présent si retour.format=min. "); |
$this->assertArrayNotHasKey('type_bio.libelle',$retour, |
"Le champs 'type_bio.libelle' ne doit pas être présent si retour.format=min."); |
$this->assertArrayNotHasKey('type_bio.detail',$retour, |
"Le champs 'type_bio.detail' ne doit pas être présent si retour.format=min."); |
$champs = array_keys(config::get('champs_ontologiques')); |
foreach ($champs as $chps) { |
$this->assertArrayNotHasKey($chps.'.libelle', $retour, |
"Le champs '{$chps}.libelle' ne doit pas être présent si retour.format=min."); |
$this->assertArrayNotHasKey($chps.'.code', $retour, |
"Le champs '{$chps}.code' ne doit pas être présent si retour.format=min."); |
$this->assertArrayNotHasKey($chps.'.href', $retour, |
"Le champs '{$chps}.href' ne doit pas être présent si retour.format=min."); |
} |
foreach ($champs as $chps) { |
$this->assertArrayNotHasKey($chps.'_min.libelle', $retour, |
"Le champs '{$chps}_min.libelle' ne doit pas être présent si retour.format=min."); |
$this->assertArrayNotHasKey($chps.'_min.code', $retour, |
"Le champs '{$chps}_min.code' ne doit pas être présent si retour.format=min."); |
$this->assertArrayNotHasKey($chps.'_min.href', $retour, |
"Le champs '{$chps}_min.href' ne doit pas être présent si retour.format=min."); |
$this->assertArrayNotHasKey($chps.'_max.libelle', $retour, |
"Le champs '{$chps}_max.libelle' ne doit pas être présent si retour.format=min."); |
$this->assertArrayNotHasKey($chps.'_max.code', $retour, |
"Le champs '{$chps}_max.code' ne doit pas être présent si retour.format=min."); |
$this->assertArrayNotHasKey($chps.'_max.href', $retour, |
"Le champs '{$chps}_max.href' ne doit pas être présent si retour.format=min."); |
} |
|
} |
} |
|
|
public function testJsonInformationsNNBasefor_max() { |
$ressources = array('bdtfx.nn:73256'); |
$parametresList = array( |
array('retour.format' => 'max', 'categorie' => 'description'), |
array('retour.format' => 'max' , 'categorie' => 'ecologie')); |
foreach ($parametresList as $parametres) { |
$retour = $this->consulterJson($ressources, $parametres); |
if ($parametres['categorie'] == 'description') { |
$this->verifierParametresDescription_max($retour); |
} else { |
$this->verifierParametresEcologie_max($retour, 'baseflor'); |
} |
} |
} |
|
public function testJsonInformationsNNRangSup_max() { |
$ressources = array('bdtfx.nn:101128'); |
$parametres = array('retour.format' => 'max' , 'categorie' => 'ecologie'); |
$retour = $this->consulterJson($ressources, $parametres); |
if ($parametres['categorie'] == 'description') { |
$this->verifierParametresDescription_max(); |
} else { |
$this->verifierParametresEcologie_max($retour, 'rangSup'); |
} |
} |
|
private function verifierParametresDescription_max($retour) { |
$this->assertArrayHasKey('type_bio.code',$retour, |
"Le champs 'type_bio.code' doit être présent si retour.format=max. "); |
$this->assertArrayHasKey('type_bio.libelle',$retour, |
"Le champs 'type_bio.libelle' doit être présent si retour.format=max."); |
$this->assertArrayHasKey('type_bio.detail',$retour, |
"Le champs 'type_bio.detail' doit être présent si retour.format=max."); |
} |
|
private function verifierParametresEcologie_max($retour,$type) { |
$champs = array_keys(config::get('champs_ontologiques')); |
if ($type == 'baseflor') { |
foreach ($champs as $chps) { |
$this->assertArrayHasKey($chps.'.libelle', $retour, |
"Le champs '{$chps}.libelle' doit être présent si retour.format=max."); |
$this->assertArrayHasKey($chps.'.code', $retour, |
"Le champs '{$chps}.code' doit être présent si retour.format=max."); |
$this->assertArrayHasKey($chps.'.href', $retour, |
"Le champs '{$chps}.href' doit être présent si retour.format=max."); |
} |
} elseif ($type == 'rangSup') { |
foreach ($champs as $chps) { |
$this->assertArrayHasKey($chps.'_min.libelle', $retour, |
"Le champs '{$chps}_min.libelle' doit être présent si retour.format=max."); |
$this->assertArrayHasKey($chps.'_min.code', $retour, |
"Le champs '{$chps}_min.code' doit être présent si retour.format=max."); |
$this->assertArrayHasKey($chps.'_min.href', $retour, |
"Le champs '{$chps}_min.href' doit être présent si retour.format=max."); |
$this->assertArrayHasKey($chps.'_max.libelle', $retour, |
"Le champs '{$chps}_max.libelle' doit être présent si retour.format=max."); |
$this->assertArrayHasKey($chps.'_max.code', $retour, |
"Le champs '{$chps}_max.code' doit être présent si retour.format=max."); |
$this->assertArrayHasKey($chps.'_max.href', $retour, |
"Le champs '{$chps}_max.href' doit être présent si retour.format=max."); |
} |
} |
|
} |
|
|
|
} |
?> |