Subversion Repositories Applications.referentiel

Compare Revisions

Ignore whitespace Rev 286 → Rev 287

/tags/v1.1/trunk/tests/ReferentielPhpUnit.php
New file
0,0 → 1,149
<?php
// declare(encoding='UTF-8');
/**
* Classe contenant des méthodes :
* - d'intialisation des tests,
* - refactorisant le code des tests,
* - facilitant les 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 ReferentielPhpUnit extends PHPUnit_Framework_TestCase {
 
//+------------------------------------------------------------------------------------------------------+
// Intialisation
 
public static function setUpBeforeClass() {
error_reporting(E_ALL);
self::chargerFramework();
 
// Enregistrement en première position des autoload de la méthode gérant les classes des services
spl_autoload_register(array(get_class(), 'chargerClasseAuto'));
}
 
public static function chargerClasseAuto($classe) {
if (class_exists($classe)) {
return null;
}
$cheminsTests = __DIR__.'/';
$cheminControleurs = realpath(__DIR__.'/../interfaces/controleurs').'/';
$cheminBiblioDao = realpath(__DIR__.'/../bibliotheque/dao').'/';
$cheminService = realpath(__DIR__.'/../services/modules').'/';
$chemins = array($cheminsTests, $cheminBiblioDao, $cheminService);
foreach ($chemins as $chemin) {
$cheminCourt = $chemin.$classe.'.php';
if (file_exists($cheminCourt)) {
require_once $cheminCourt;
}
}
}
 
private static function chargerFramework() {
$cheminRacine = realpath(dirname(__FILE__).'/..').'/interfaces/';
$framework = $cheminRacine.'framework.php';
if (!file_exists($framework)) {
$e = "Veuillez paramétrer l'emplacement et la version du Framework dans le fichier $framework";
trigger_error($e, E_USER_ERROR);
} else {
// Inclusion du Framework
require_once $framework;
}
}
 
//+------------------------------------------------------------------------------------------------------+
// 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) {
$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 = 'http://localhost/service:eflore:0.1'.$ressourcesUrl.$parametresUrl;
return $url;
}
 
//+------------------------------------------------------------------------------------------------------+
// Méthodes facilitant les tests
/**
* Récupère un bouchon de classe abstraite.
* Comment l'utiliser :
* $classeAstraite = $this->getClasseAbstraite('MaClasse', array('param1', 'param2'));
* $foo = $classeAstraite->methodeConcretePublique();
*
* @param String $classeNom Le nom de la classe
* @param Array $parametres Les paramètres à passer au constructeur.
* @return Object Le bouchon de la classe abstraite
*/
public function getClasseAbstraite($classeNom, Array $parametres) {
$efloreScript = $this->getMockForAbstractClass($classeNom, $parametres);
return $efloreScript;
}
 
/**
* Récupère une méthode privée d'une classe pour tester/documenter.
* Comment l'utiliser :
* MyClass->foo():
* $cls = new MyClass();
* $foo = self::getPrivateMethode($cls, 'foo');
* $foo->invoke($cls, $...);
*
* @param object $objet Une instance de votre classe
* @param string $methode Le nom de la méthode private
* @return ReflectionMethod La méthode demandée
*/
public static function getMethodePrivee($objet, $nomMethode) {
$classe = new ReflectionClass($objet);
$methode = $classe->getMethod($nomMethode);
$methode->setAccessible(true);
return $methode;
}
 
/**
* Récupère une méthode protégée d'une classe pour tester/documenter.
* Comment l'utiliser :
* MyClass->foo():
* $cls = new MyClass();
* $foo = self::getProtectedMethode($cls, 'foo');
* $foo->invoke($cls, $...);
* @param object $objet Une instance de votre classe
* @param string $methode Le nom de la méthode protected
* @return ReflectionMethod La méthode demandée
*/
public static function getMethodeProtegee($objet, $nomMethode) {
return self::getMethodePrivee($objet, $nomMethode);
}
}
?>
/tags/v1.1/trunk/tests/services/RechercheTest.php
New file
0,0 → 1,63
<?php
require_once dirname(__FILE__).'/../ReferentielPhpUnit.php';
 
class RechercheTest extends ReferentielPhpUnit {
 
public function testElementParDefaut() {
$cheminRacine = realpath(dirname(__FILE__).'/../../').'/services/';
Config::charger($cheminRacine.'jrest.ini.php');
$config['database'] = Config::get('database');
$config['settings'] = Config::get('settings');
$recherche = new Recherche($config);
$param = Array (0 => 'bdtfx', 1 => '*', 2 => '*', 3 => 'acer', 4 => 'davidii', 5 => '*', 6 => '*',
7 => '*', 8 => '75538', 9 => '*', 10 => '*', 11 => '*', 12 => '*', 13 => '*' );
$donnees = $recherche->getElementParDefaut($param);
$this->assertNotEmpty($donnees, print_r($donnees, true));
$this->assertEquals('1', count($donnees), print_r($donnees, true));
}
public function testElementTaxon() {
$cheminRacine = realpath(dirname(__FILE__).'/../../').'/services/';
Config::charger($cheminRacine.'jrest.ini.php');
$config['database'] = Config::get('database');
$config['settings'] = Config::get('settings');
$recherche = new Recherche($config);
$param = Array (0 => 'bdtfx', 1 => '*', 2 => '*', 3 => 'acer', 4 => 'davidii', 5 => '*', 6 => '*',
7 => '*', 8 => '*', 9 => '*', 10 => '*', 11 => '1', 12 => '*', 13 => '*' );
$donnees = $recherche->getElementParTaxon($param);
$this->assertNotEmpty($donnees, print_r($donnees, true));
$this->assertEquals('5', count($donnees), print_r($donnees, true));
}
public function testElementPresentFrance() {
$cheminRacine = realpath(dirname(__FILE__).'/../../').'/services/';
Config::charger($cheminRacine.'jrest.ini.php');
$config['database'] = Config::get('database');
$config['settings'] = Config::get('settings');
$recherche = new Recherche($config);
$param = Array (0 => 'bdtfx', 1 => '*', 2 => '*', 3 => 'acer', 4 => 'davidii', 5 => '*', 6 => '*',
7 => '*', 8 => '*', 9 => '*', 10 => '*', 11 => '*', 12 => '1', 13 => '*' );
$donnees = $recherche->getElementParDefaut($param);
$this->assertNotEmpty($donnees, print_r($donnees, true));
$this->assertEquals('2', count($donnees), print_r($donnees, true));
}
public function testElementTaxref() {
$cheminRacine = realpath(dirname(__FILE__).'/../../').'/services/';
Config::charger($cheminRacine.'jrest.ini.php');
$config['database'] = Config::get('database');
$config['settings'] = Config::get('settings');
$recherche = new Recherche($config);
$param = Array (0 => 'bdtfx', 1 => '*', 2 => '*', 3 => 'acer', 4 => 'davidii', 5 => '*', 6 => '*',
7 => '*', 8 => '*', 9 => '*', 10 => '*', 11 => '*', 12 => '*', 13 => '1' );
$donnees = $recherche->getElementParDefaut($param);
$this->assertNotEmpty($donnees, print_r($donnees, true));
$this->assertEquals('3', count($donnees), print_r($donnees, true));
}
}
?>