Rev 520 | Rev 790 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php
require_once dirname(__FILE__).'/../ServiceEflorePhpUnit.php';
class GraphiquesBaseflorTest extends ServiceEflorePhpUnit {
private $svg;
public function __construct() {
$this->projet = 'baseflor';
$this->service = 'graphiques';
}
//++ ------------------------------------Test des ressources -----------------------------++
public function testRessourceTypeGraphiqueInexistante() {
$ressources = array('','bdtfx.nn:73256');
$parametres = array();
$retour = $this->consulterBrut($ressources, $parametres);
$messageAttendu = "Erreur dans l'url de votre requête :".
"</br> precisez le graphique -> \"sol\" ou \"climat\".";
$this->assertEquals($messageAttendu, $retour,
"Il faut indiquer l'absence de la ressource 'sol' ou 'climat'.");
}
public function testRessourceReferentielNnInexistante() {
$ressources = array('sol','');
$parametres = array();
$retour = $this->consulterBrut($ressources, $parametres);
$messageAttendu =
"Erreur dans l'url de votre requête : précisez le référentiel et le numéro nomenclatural sous la forme {bdnt}.nn:{nn}.";
$this->assertEquals($messageAttendu, $retour,
"Il faut indiquer l'absence de la ressource {bdnt}.nn:{nn}.");
}
public function testRessourceReferentielTypeGraphiqueErronee() {
$ressources = array('humdite','bdtfx.nn:73256');
$parametres = array();
$retour = $this->consulterBrut($ressources, $parametres);
$messageAttendu = "Erreur dans l'url de votre requête :".
"</br> precisez le graphique -> \"sol\" ou \"climat\".";
$this->assertEquals($messageAttendu, $retour,
"Il faut indiquer si la ressource type de graphique n'est ni sol' ni 'climat'.");
}
public function testRessourceReferentielNnEronne() {
$ressources = array('sol','gnnyh');
$parametres = array();
$retour = $this->consulterBrut($ressources, $parametres);
$messageAttendu =
"Erreur dans l'url de votre requête : précisez le référentiel et le numéro nomenclatural sous la forme {bdnt}.nn:{nn}.";
$this->assertEquals($messageAttendu, $retour,
"Il faut indiquer si la ressource {bdnt}.nn:{nn} est erronée.");
}
public function testRessourceReferentielInconnu() {
$ressources = array('climat','btdjv.nn:73256');
$parametres = array();
$retour = $this->consulterBrut($ressources, $parametres);
$messageAttendu = "Le référentiel btdjv n'existe pas.";
$this->assertEquals($messageAttendu, $retour,
"Il faut indiquer si le référentiel est inconnu.");
}
public function testRessourceNNInconnu() {
$ressources = array('sol','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() {
$ressources = array('sol','bdtfx.nn:73256');
$parametres = array('paramatre' => 'image/jpeg');
$retour = $this->consulterBrut($ressources, $parametres);
$messageAttendu = "Erreur : Le paramètre paramatre est inconnu.";
$this->assertEquals($messageAttendu, $retour,
"Il faut indiquer si un paramètre est inconnu.");
}
public function testParametreRetourInconnu() {
$ressources = array('sol','bdtfx.nn:73256');
$parametres = array('retour' => 'image/jpeg');
$retour = $this->consulterBrut($ressources, $parametres);
$messageAttendu =
"Erreur : valeur inconnue. Choisissez le format de retour pour le paramètre retour : image/svg%2Bxml ou image/png.";
$this->assertEquals($messageAttendu, $retour,
"Il faut indiquer si la valeur du paramètre retour est inconnue.");
}
public function testParametreRetourAbsent() {
$ressources = array('sol','bdtfx.nn:73256');
$parametres = array('retour' => '');
$retour = $this->consulterBrut($ressources, $parametres);
$messageAttendu =
"Erreur : valeur inconnue. Choisissez le format de retour pour le paramètre retour : image/svg%2Bxml ou image/png.";
$this->assertEquals($messageAttendu, $retour,
"Il faut indiquer si la valeur du paramètre retour est absente.");
}
public function testParametreRetourFormatAbsent() {
$ressources = array('sol','bdtfx.nn:73256');
$parametres = array('retour.format' => '');
$retour = $this->consulterBrut($ressources, $parametres);
$messageAttendu = "Erreur : valeur inconnue. Entrez la largeur voulue (en pixels) pour le paramètre retour.format.";
$this->assertEquals($messageAttendu, $retour,
"Il faut indiquer si la valeur du paramètre retour.format est absente.");
}
public function testParametreRetourFormatInconnu() {
$ressources = array('sol','bdtfx.nn:73256');
$parametres = array('retour.format' => 'dhgkg22');
$retour = $this->consulterBrut($ressources, $parametres);
$messageAttendu = "Erreur : valeur inconnue. Entrez la largeur voulue (en pixels) pour le paramètre retour.format.";
$this->assertEquals($messageAttendu, $retour,
"Il faut indiquer si la valeur du paramètre retour.format est inconnue.");
}
public function testParametreVersionProjetInconnu() {
$ressources = array('sol','bdtfx.nn:73256');
$parametres = array('version.projet' => 'dhgkg22');
$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.");
}
public function testParametreVersionProjetAbsent() {
$ressources = array('sol','bdtfx.nn:73256');
$parametres = array('version.projet' => '');
$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 absente.");
}
//++------------------------------------------test des fichiers -------------------------++
public function testRetourEstUnSVG(){
$ressourcesListe = array(
array('sol','bdtfx.nn:73256'),
array('climat','bdtfx.nn:73256'),
array('climat','bdtfx.nn:101128'),
array('sol','bdtfx.nn:101128')
);
$parametresListe = array(
array('retour' => 'image/svg+xml'),
array()
);
foreach ($ressourcesListe as $ressources) {
foreach ($parametresListe as $parametres) {
$retour = $this->consulterBrut($ressources, $parametres);
$this->chargerXml($retour);
$this->etreSvg($retour);
}
}
}
public function testSVGPresenceValeursEcolo_baseflor(){
$ressourcesListe = array(
array('sol','bdtfx.nn:73256'),
array('climat','bdtfx.nn:73256'),
);
$parametresListe = array();
foreach ($ressourcesListe as $ressources) {
$retour = $this->consulterBrut($ressources, $parametres);
$this->chargerXml($retour);
$this->etreSvg($retour);
$test = false;
$curseurs = $this->svg->getElementsByTagName('circle');
foreach ($curseurs as $curseur){
$classe = $curseur->getAttribute('class');
if ($classe == 'curseur') {
$test = true;
break;
}
}
}
$this->assertTrue($test,"Le graphique renvoyé par $retour est vide de données écologiques.");
}
public function testSVGPresenceValeursEcolo_rangSup(){
$ressourcesListe = array(
array('climat','bdtfx.nn:101128'),
array('sol','bdtfx.nn:101128')
);
$parametresListe = array();
foreach ($ressourcesListe as $ressources) {
$retour = $this->consulterBrut($ressources, $parametres);
$this->chargerXml($retour);
$this->etreSvg($retour);
$test = false;
$cases = $this->svg->getElementsByTagName('rect');
// ne fonctionne pas :
/*$dompath = new DOMXPath($this->svg);
$dompath->registerNamespace("svg", "http://www.w3.org/2000/svg");
$cases = $dompath->query('svg:rect[@fill and not(@id="fond" or @id="cache")]');*/
foreach ($cases as $case){
$classe = $case->getAttribute('class');
if ($classe != 'fond' and $classe != 'cache' and $case->getAttribute('fill') != 'none') {
$test = true;
break;
}
}
}
$this->assertTrue($test,"Le graphique renvoyé par $retour est vide de données écologiques.");
}
public function testExistenceDesSvgDeBase(){
$this->assertFileExists(config::get('chemin')."sol.svg","le svg de base sol.svg n'existe pas.");
$this->assertFileExists(config::get('chemin')."climat.svg","le svg de base climat.svg n'existe pas.");
$this->assertFileExists(config::get('chemin')."sol_min_max.svg","le svg de base sol_min_max.svg n'existe pas.");
$this->assertFileExists(config::get('chemin')."climat_min_max.svg","le svg de base climat_min_max.svg n'existe pas.");
}
public function testCreationSvgEtPngDansCache(){
$convertisseur = config::get('convertisseur');
if ($convertisseur == 'rsvg') {
$ressourcesListe = array(
array('sol','bdtfx.nn:73256'),
array('climat','bdtfx.nn:73256'),
array('climat','bdtfx.nn:101128'),
array('sol','bdtfx.nn:101128'));
$parametresListe = array('retour' => 'image/png');
foreach ($ressourcesListe as $ressources) {
$this->consulterBrut($ressources, $parametres);
$fichier = config::get('cache.stockageChemin')."".$this->getFichier($ressources);
$this->assertFileExists($fichier.".svg"," {$fichier}.svg n'existe pas.");
$this->assertFileExists($fichier.".png"," {$fichier}.png n'existe pas.");
}
}
}
//++------------------------------------------fonctions utiles-------------------------++
private function chargerXml($retour) {
$this->svg = new DOMDocument();
$chargement = $this->svg->loadXML($retour);
$this->assertTrue($chargement,"le fichier ne s'est pas chargé.");
}
private function etreSvg($retour) {
$racineElement = $this->svg->documentElement;
$this->assertEquals('svg', $racineElement->tagName,"$retour ne renvoie pas un svg." );
}
private function getFichier($ressources) {
$idfichier = str_replace(".","-",$ressources[1]);
$idfichier = str_replace(':','-',$idfichier);
$idfichier .= "-".$ressources[0];
return $idfichier;
}
}
?>