Subversion Repositories eFlore/Applications.eflore-consultation

Compare Revisions

Ignore whitespace Rev 1140 → Rev 1141

/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/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