Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 16 → Rev 17

/trunk/services/tests/prepare.php
1,5 → 1,19
<?php
// declare(encoding='UTF-8');
/**
* Script préparant le lancement des tests.
*
* @category php 5.3
* @package Tests/Services
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2011, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version $Id$
*/
error_reporting(E_ALL);
 
/**
* La méthode __autoload() charge dynamiquement les classes trouvées dans le code.
* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code.
*
11,7 → 25,8
return null;
}
$cheminBase = realpath(__DIR__.'/../modules/0.1').'/';
$chemins = array($cheminBase);
$cheminsTests = __DIR__.'/';
$chemins = array($cheminBase, $cheminsTests);
foreach ($chemins as $chemin) {
$chemin = $chemin.$classe.'.php';
if (file_exists($chemin)) {
/trunk/services/tests/bdtfx/BdtfxNomsTest.php
1,6 → 1,11
<?php
class BdtfxNomsTest extends PHPUnit_Framework_TestCase {
class BdtfxNomsTest extends ServicesTestsOutils {
 
public function __construct() {
$this->projet = 'bdtfx';
$this->service = 'noms';
}
 
public function testVersionPrecise() {
$ressources = array('v1.01');
$parametres = array();
195,45 → 200,5
$message = "Le tableau du résultat 182 doit contenir un champ 'nom_sci' avec pour valeur '$attendu'. Voir : $url";
$this->assertEquals($attendu, $retour['resultat']['182']['nom_sci'], $message);
}
 
//+------------------------------------------------------------------------------------------------------+
// Refactorisation
private function consulterJson($ressources, $parametres) {
$retourJson = $this->consulterBrut($ressources, $parametres);
$retour = json_decode($retourJson, true);
$this->assertEquals(JSON_ERROR_NONE, json_last_error(), "Le json contient des erreurs qui bloquent le décodage. Voir : $url");
return $retour;
}
 
private function consulterBrut($ressources, $parametres) {
array_unshift($ressources, 'noms');
array_unshift($ressources, 'bdtfx');
$projets = new Projets();
$retourJson = $projets->consulter($ressources, $parametres);
return $retourJson;
}
 
private function creerUrl($ressources, $parametres) {
$version = '';
$ressourcesUrl = array();
foreach ($ressources as $ressource) {
if (preg_match('/^(v[0-9]+\.[0-9]+|[*+])$/', $ressource)) {
$version = $ressource.'/';
} else {
$ressourcesUrl[] = $ressource;
}
}
$ressourcesUrl = count($ressourcesUrl) > 0 ? '/'.implode('/', $ressourcesUrl) : '';
 
$parametresUrl = '';
if (count($parametres) > 0) {
foreach ($parametres as $cle => $valeur) {
$parametresUrl[] = $cle.'='.rawurlencode($valeur);
}
$parametresUrl = '?'.implode('&', $parametresUrl);
}
$url = Config::get('url_service').'/'.$version.'noms'.$ressourcesUrl.$parametresUrl;
return $url;
}
}
?>
/trunk/services/tests/bdtfx/BdtfxTaxonsTest.php
1,6 → 1,11
<?php
class BdtfxTaxonsTest extends PHPUnit_Framework_TestCase {
class BdtfxTaxonsTest extends ServicesTestsOutils {
 
public function __construct() {
$this->projet = 'bdtfx';
$this->service = 'taxons';
}
 
public function testVersionPrecise() {
$ressources = array('v1.01');
$parametres = array();
90,45 → 95,5
$this->assertEquals('4', $retour['entete']['total'], "L'attribut total de l'entête devrait valoir 4. Voir : $url");
$this->assertEquals(4, count($retour['resultat']), "Le résultat devrait contenir 4 données. Voir : $url");
}
 
//+------------------------------------------------------------------------------------------------------+
// Refactorisation
private function consulterJson($ressources, $parametres) {
$retourJson = $this->consulterBrut($ressources, $parametres);
$retour = json_decode($retourJson, true);
$this->assertEquals(JSON_ERROR_NONE, json_last_error(), "Le json contient des erreurs qui bloquent le décodage. Voir : $url");
return $retour;
}
 
private function consulterBrut($ressources, $parametres) {
array_unshift($ressources, 'taxons');
array_unshift($ressources, 'bdtfx');
$projets = new Projets();
$retourJson = $projets->consulter($ressources, $parametres);
return $retourJson;
}
 
private function creerUrl($ressources, $parametres) {
$version = '';
$ressourcesUrl = array();
foreach ($ressources as $ressource) {
if (preg_match('/^(v[0-9]+\.[0-9]+|[*+])$/', $ressource)) {
$version = $ressource.'/';
} else {
$ressourcesUrl[] = $ressource;
}
}
$ressourcesUrl = count($ressourcesUrl) > 0 ? '/'.implode('/', $ressourcesUrl) : '';
 
$parametresUrl = '';
if (count($parametres) > 0) {
foreach ($parametres as $cle => $valeur) {
$parametresUrl[] = $cle.'='.rawurlencode($valeur);
}
$parametresUrl = '?'.implode('&', $parametresUrl);
}
$url = Config::get('url_service').'/'.$version.'noms'.$ressourcesUrl.$parametresUrl;
return $url;
}
}
?>
/trunk/services/tests/iso-639-1/Iso6391LanguesTest.php
New file
0,0 → 1,21
<?php
class Iso6391LanguesTest extends ServicesTestsOutils {
 
public function __construct() {
$this->projet = 'iso-639-1';
$this->service = 'langues';
}
 
public function testValeurChampPrecis() {
$ressources = array('fr', 'nom');
$parametres = array();
$url = $this->creerUrl($ressources, $parametres);
$retour = $this->consulterJson($ressources, $parametres);
 
$this->assertArrayHasKey('id', $retour, "Le json ne contient pas d'attribut : id. Voir : $url");
$this->assertEquals('fr', $retour['id'], "L'attribut 'id' devrait avoir la valeur 'fr'. Voir : $url");
$this->assertArrayHasKey('nom.fr', $retour, "Le json ne contient pas d'attribut : nom.fr. Voir : $url");
$this->assertEquals('Français', $retour['nom.fr'], "L'attribut 'nom.fr' devrait avoir la valeur 'Français'. Voir : $url");
}
}
?>
/trunk/services/tests/ServicesTestsOutils.php
New file
0,0 → 1,61
<?php
//declare(encoding='UTF-8');
/**
* Classe permettant de refactoriser du codes entres les différentes classes de Tests.
*
* @category php 5.3
* @package Tests/Services
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2011, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version $Id$
*/
abstract class ServicesTestsOutils extends PHPUnit_Framework_TestCase {
 
/** Définir la valeur de cet attribut dans le constructeur de la classe de test.*/
protected $projet = '';
/** Définir la valeur de cet attribut dans le constructeur de la classe de test.*/
protected $service = '';
 
//+------------------------------------------------------------------------------------------------------+
// Refactorisation
protected function consulterJson($ressources, $parametres) {
$retourJson = $this->consulterBrut($ressources, $parametres);
$retour = json_decode($retourJson, true);
$this->assertEquals(JSON_ERROR_NONE, json_last_error(), "Le json contient des erreurs qui bloquent le décodage. Voir : $url");
return $retour;
}
 
protected function consulterBrut($ressources, $parametres) {
array_unshift($ressources, $this->service);
array_unshift($ressources, $this->projet);
$projets = new Projets();
$retourJson = $projets->consulter($ressources, $parametres);
return $retourJson;
}
 
protected function creerUrl($ressources, $parametres) {
$version = '';
$ressourcesUrl = array();
foreach ($ressources as $ressource) {
if (preg_match('/^(v[0-9]+\.[0-9]+|[*+])$/', $ressource)) {
$version = $ressource.'/';
} else {
$ressourcesUrl[] = $ressource;
}
}
$ressourcesUrl = count($ressourcesUrl) > 0 ? '/'.implode('/', $ressourcesUrl) : '';
 
$parametresUrl = '';
if (count($parametres) > 0) {
foreach ($parametres as $cle => $valeur) {
$parametresUrl[] = $cle.'='.rawurlencode($valeur);
}
$parametresUrl = '?'.implode('&', $parametresUrl);
}
$url = Config::get('url_service').'/'.$version.'noms'.$ressourcesUrl.$parametresUrl;
return $url;
}
}
?>