/trunk/tests/ConsultationEflorePhpUnit.php |
---|
1,30 → 1,44 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Classe contenant des méthodes : |
* - d'intialisation des tests, |
* - refactorisant le code des tests, |
* - facilitant les tests. |
* - d'intialisation des tests, |
* - refactorisant le code des tests, |
* - facilitant les tests. |
* |
* @category php 5.3 |
* @package Tests/Services |
* @author Raphaël Droz <raphael@tela-botanica.org> |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright Copyright (c) 2011, Tela Botanica (accueil@tela-botanica.org) |
* @copyright Copyright (c) 2011, 2013 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$ |
*/ |
require_once __DIR__ . '/../framework.php'; |
abstract class ConsultationEflorePhpUnit extends PHPUnit_Framework_TestCase { |
//+------------------------------------------------------------------------------------------------------+ |
// Intialisation |
/* absolument nécessaire pour que Registre::$statics et Config::$statics soient réinitialisés lors |
de multiples tests successifs (notamment pour le moteur de recherche). |
*Et* l'annotation de setUpBeforeClass() |
*et* l'attribut $backupStaticAttributes |
*et* l'accès fictif @Registre::get(NULL); |
sont tous trois nécessaires */ |
protected $backupStaticAttributes = true; |
/** |
* @backupStaticAttributes enabled |
*/ |
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')); |
if(!Framework::getCheminAppli()) { |
Framework::setCheminAppli(__DIR__ . '/../'); |
// Enregistrement en première position des autoload de la méthode gérant les classes des services |
spl_autoload_register(array(get_class(), 'chargerClasseAuto')); |
} |
Registre::get(NULL); |
} |
public static function chargerClasseAuto($classe) { |
50,21 → 64,6 |
} |
} |
private static function chargerFramework() { |
$cheminRacine = realpath(dirname(__FILE__).'/..').'/'; |
$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; |
// Ajout d'information concernant cette application |
Framework::setCheminAppli($cheminRacine);// Obligatoire |
} |
} |
//+------------------------------------------------------------------------------------------------------+ |
// Refactorisation |
protected function consulterJson($ressources, $parametres) { |
98,8 → 97,7 |
$parametresUrl = '?'.implode('&', $parametresUrl); |
} |
$url = 'http://localhost/service:eflore:0.1'.$ressourcesUrl.$parametresUrl; |
return $url; |
return 'http://localhost/service:eflore:0.1'.$ressourcesUrl.$parametresUrl; |
} |
//+------------------------------------------------------------------------------------------------------+ |
108,8 → 106,8 |
/** |
* Récupère un bouchon de classe abstraite. |
* Comment l'utiliser : |
* $classeAstraite = $this->getClasseAbstraite('MaClasse', array('param1', 'param2')); |
* $foo = $classeAstraite->methodeConcretePublique(); |
* $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. |
116,17 → 114,16 |
* @return Object Le bouchon de la classe abstraite |
*/ |
public function getClasseAbstraite($classeNom, Array $parametres) { |
$efloreScript = $this->getMockForAbstractClass($classeNom, $parametres); |
return $efloreScript; |
return $this->getMockForAbstractClass($classeNom, $parametres); |
} |
/** |
* 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, $...); |
* 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 |
142,10 → 139,10 |
/** |
* 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, $...); |
* 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 |
/trunk/tests/modules/RechercheTest.php |
---|
1,14 → 1,17 |
<?php |
require_once dirname(__FILE__).'/../ConsultationEflorePhpUnit.php'; |
require_once __DIR__ . '/../ConsultationEflorePhpUnit.php'; |
class RechercheTest extends ConsultationEflorePhpUnit { |
/** |
* @backupGlobals # avoid $_REQUEST leaks |
*/ |
public function testExecuterRechercheSimple() { |
$_GET['type_nom'] = 'nom_scientifique'; |
$_GET['nom'] = 'acer mons'; |
$_REQUEST['type_nom'] = 'nom_scientifique'; |
$_REQUEST['nom'] = 'acer mons'; |
Registre::set('niveau', '1'); |
$cheminRacine = realpath(dirname(__FILE__).'/../configurations/').'/'; |
Registre::set('parametres.niveau', '1'); |
$cheminRacine = realpath(__DIR__ . '/../../configurations/').'/'; |
Config::charger($cheminRacine.'bdtfx.ini'); |
Registre::set('eFlore.urlBase', new Url(Config::get('base_url_application_index'))); |
Registre::set('parametres.referentiel', 'bdtfx'); |
17,71 → 20,86 |
$recherche->initialiser(); |
$recherche->executerRechercheSimple(); |
$donnees = Registre::get('donneesMoteur'); |
$resultat = Registre::get('resultats'); |
$sortie = implode('', $recherche->getSortie()); |
$this->assertEmpty($donnees, print_r($donnees, true)); |
$this->assertNotEmpty($resultat, print_r($resultat, true)); |
$this->assertNotEmpty($resultat); |
$this->assertEquals('6', $resultat['entete']['total']); |
$this->assertEquals('6', count($resultat['resultat'])); |
$this->assertArrayNotHasKey('auteur', $resultat['resultat']['182'], print_r($resultat, true)); |
$this->assertNotEmpty($sortie, print_r($sortie, true)); |
$this->assertContains('<input id="nom" name="nom" class="champ" size="30" maxlength="255" type="text" autocomplete="off" value="acer mons" />', $sortie); |
$this->assertNotEmpty($sortie); |
$this->assertContains('<input id="nom" name="nom" class="champ" size="30" maxlength="255" type="text" value="acer mons" />', $sortie); |
$this->assertContains('<strong class="nom-sci-retenu"><span class="surlignage">Acer</span> <span class="surlignage">mons</span>pessulanum</strong>', $sortie); |
} |
/** |
* @backupGlobals # avoid $_REQUEST leaks |
*/ |
public function testExecuterRechercheSimpleAlphab() { |
$_GET['type_nom'] = 'nom_scientifique'; |
$_GET['nom'] = 'acer mons'; |
$_GET['resultat'] = 'alphab'; |
$cheminRacine = realpath(dirname(__FILE__).'/../configurations/').'/'; |
$_REQUEST['type_nom'] = 'nom_scientifique'; |
$_REQUEST['nom'] = 'acer mons'; |
$_REQUEST['resultat'] = 'alphab'; |
$cheminRacine = realpath(__DIR__ . '/../../configurations/') . '/'; |
Config::charger($cheminRacine.'bdtfx.ini'); |
Registre::set('eFlore.urlBase', new Url(Config::get('base_url_application_index'))); |
Registre::set('parametres.referentiel', 'bdtfx'); |
// initialise les valeurs par défaut (notamment de "niveau") |
AppControleur::verifierCreationInstance(); |
// initialise le registre à partir des valeurs par défaut |
AppControleur::initialiserRegistre(); |
// à partir de là, par exemple Registre::get('parametres.niveau') doit retourner un entier |
// (alternative à Registre::set('niveau', 'X')) |
// et la recherche ne risque plus de manquer des paramètres nécessaires |
$recherche = new Recherche(); |
$recherche->initialiser(); |
$recherche->executerRechercheSimple(); |
$donnees = Registre::get('donneesMoteur'); |
$resultat = Registre::get('resultats'); |
$sortie = implode('', $recherche->getSortie()); |
$this->assertEmpty($donnees, print_r($donnees, true)); |
$this->assertNotEmpty($resultat, print_r($resultat, true)); |
$this->assertNotEmpty($resultat, $resultat); |
$this->assertEquals('6', $resultat['entete']['total']); |
$this->assertEquals('6', count($resultat['resultat'])); |
} |
/** |
* @backupGlobals # avoid $_REQUEST leaks |
*/ |
public function testExecuterRechercheSimpleRetenu() { |
$_GET['type_nom'] = 'nom_scientifique'; |
$_GET['nom'] = 'acer mons'; |
$_GET['resultat'] = 'retenu'; |
$cheminRacine = realpath(dirname(__FILE__).'/../configurations/').'/'; |
$_REQUEST['type_nom'] = 'nom_scientifique'; |
$_REQUEST['nom'] = 'acer mons'; |
$_REQUEST['resultat'] = 'retenu'; |
$_REQUEST['niveau'] = 2; |
Registre::set('parametres.niveau', '2'); |
$cheminRacine = realpath(__DIR__ . '/../../configurations/').'/'; |
Config::charger($cheminRacine.'bdtfx.ini'); |
Registre::set('eFlore.urlBase', new Url(Config::get('base_url_application_index'))); |
Registre::set('parametres.referentiel', 'bdtfx'); |
$recherche = new Recherche(); |
$recherche->initialiser(); |
$recherche->executerRechercheSimple(); |
$donnees = Registre::get('donneesMoteur'); |
$resultat = Registre::get('resultats'); |
$sortie = implode('', $recherche->getSortie()); |
$this->assertEmpty($donnees, print_r($donnees, true)); |
$this->assertNotEmpty($resultat, print_r($resultat, true)); |
$this->assertNotEmpty($resultat); |
$this->assertEquals('6', $resultat['entete']['total']); |
$this->assertEquals('6', count($resultat['resultat'])); |
} |
/** |
* @backupGlobals # avoid $_REQUEST leaks |
*/ |
public function testExecuterRechercheSimpleSynonyme() { |
$_GET['type_nom'] = 'nom_scientifique'; |
$_GET['nom'] = 'acer mons'; |
$_GET['resultat'] = 'retenu'; |
$cheminRacine = realpath(dirname(__FILE__).'/../configurations/').'/'; |
$_REQUEST['type_nom'] = 'nom_scientifique'; |
$_REQUEST['nom'] = 'acer mons'; |
$_REQUEST['resultat'] = 'retenu'; |
Registre::set('parametres.niveau', '2'); |
$cheminRacine = realpath(__DIR__ . '/../../configurations/').'/'; |
Config::charger($cheminRacine.'bdtfx.ini'); |
Registre::set('eFlore.urlBase', new Url(Config::get('base_url_application_index'))); |
Registre::set('parametres.referentiel', 'bdtfx'); |
90,15 → 108,11 |
$recherche->initialiser(); |
$recherche->executerRechercheSimple(); |
$donnees = Registre::get('donneesMoteur'); |
$resultat = Registre::get('resultats'); |
$sortie = implode('', $recherche->getSortie()); |
$this->assertEmpty($donnees, print_r($donnees, true)); |
$this->assertNotEmpty($resultat, print_r($resultat, true)); |
$this->assertNotEmpty($resultat); |
$this->assertEquals('6', $resultat['entete']['total']); |
$this->assertEquals('6', count($resultat['resultat'])); |
} |
} |
?> |
/trunk/controleurs/AppControleur.php |
---|
64,7 → 64,8 |
self::executerModule(); |
} |
private static function verifierCreationInstance() { |
// "public" pour pouvoir être appelée distinctememnt de "initialiser" lors des tests PHPUnit |
public static function verifierCreationInstance() { |
if (empty(self::$instance)) { |
self::$instance = new AppControleur(); |
} |
101,7 → 102,8 |
} |
} |
private static function initialiserRegistre() { |
// "public" pour pouvoir être appelée distinctememnt de "initialiser" lors des tests PHPUnit |
public static function initialiserRegistre() { |
Registre::set('eFlore.urlBase', new Url(Config::get('base_url_application_index'))); |
Registre::set('eFlore.urlBaseDossier', new Url(Config::get('base_url_application'))); |
Registre::set('eFlore.urlCourante', self::getUrlCourante()); |
247,13 → 249,13 |
return $sortie; |
} |
/** |
* Retourne les informations à placer dans la balise HEAD du HTML. |
*/ |
public static function getEntete() { |
$contenu = self::$parametres['sortie']['entete']; |
$sortie = self::convertirEncodage($contenu); |
return $sortie; |
/** |
* Retourne les informations à placer dans la balise HEAD du HTML. |
*/ |
public static function getEntete() { |
$contenu = self::$parametres['sortie']['entete']; |
$sortie = self::convertirEncodage($contenu); |
return $sortie; |
} |
/** |