Subversion Repositories eFlore/Applications.eflore-consultation

Compare Revisions

Ignore whitespace Rev 1149 → Rev 1394

/tags/v5.9-van-tieghem/tests/metier/EfloreTest.php
New file
0,0 → 1,20
<?php
require_once dirname(__FILE__).'/../ConsultationEflorePhpUnit.php';
 
class EfloreTest extends ConsultationEflorePhpUnit {
public function testFormulerUrl() {
$ressources = array('bdtfx', 'noms');
$parametres = array('masque' => 'acer', 'recherche' => 'stricte', 'ns.format' => 'htm');
$url = $this->creerUrl($ressources, $parametres);
$eflore = $this->getMock('Eflore');
$formaterUrl = self::getMethodeProtegee($eflore, 'formaterUrl');
$tpl = ConsultationEflorePhpUnit::URL_API . '/{projet}/noms?masque={valeur}&recherche={type}&ns.format=htm';
$param = array('projet' => 'bdtfx' ,'valeur' => 'acer', 'type' => 'stricte');
$urlf = $formaterUrl->invoke($eflore, $tpl, $param);
$this->assertEquals($url, $urlf);
}
}
?>
/tags/v5.9-van-tieghem/tests/metier/NomsTest.php
New file
0,0 → 1,60
<?php
require_once dirname(__FILE__).'/../ConsultationEflorePhpUnit.php';
 
class NomsTest extends ConsultationEflorePhpUnit {
public function testRechercheEtendue() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Noms();
$resultats = $noms->getRechercheEtendue('aceras');
$this->assertNotEmpty($resultats);
$this->assertEquals('15', $resultats['entete']['total']);
$this->assertNotEmpty($resultats['resultat']['243']);
$this->assertEquals('Aceras hircinum', $resultats['resultat']['243']['nom_sci']);
$this->assertArrayNotHasKey('nom_retenu.id', $resultats['resultat']['243']);
$this->assertArrayNotHasKey('auteur', $resultats['resultat']['243']);
$this->assertArrayNotHasKey('annee', $resultats['resultat']['243']);
$this->assertArrayNotHasKey('biblio_origine', $resultats['resultat']['243']);
}
public function testRechercheEtendueDetermination() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Noms();
$resultats = $noms->getRechercheEtendue('aceras', 'determination');
$this->assertNotEmpty($resultats);
$this->assertEquals('15', $resultats['entete']['total']);
$this->assertNotEmpty($resultats['resultat']['243']);
$this->assertEquals('Aceras hircinum', $resultats['resultat']['243']['nom_sci']);
$this->assertEquals('75170', $resultats['resultat']['243']['nom_retenu.id']);
$this->assertArrayNotHasKey('auteur', $resultats['resultat']['243']);
$this->assertArrayNotHasKey('annee', $resultats['resultat']['243']);
$this->assertArrayNotHasKey('biblio_origine', $resultats['resultat']['243']);
}
public function testRechercheEtendueDecompo() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Noms();
$resultats = $noms->getRechercheEtendue('aceras', 'decompo');
$this->assertNotEmpty($resultats);
$this->assertEquals('15', $resultats['entete']['total']);
$this->assertNotEmpty($resultats['resultat']['243']);
$this->assertEquals('Aceras hircinum', $resultats['resultat']['243']['nom_sci']);
$this->assertArrayNotHasKey('nom_retenu.id', $resultats['resultat']['243']);
$this->assertArrayHasKey('auteur', $resultats['resultat']['243']);
$this->assertArrayHasKey('annee', $resultats['resultat']['243']);
$this->assertArrayHasKey('biblio_origine', $resultats['resultat']['243']);
}
public function testRechercheFloue() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Noms();
$resultats = $noms->getRechercheFloue('aceras');
$this->assertNotEmpty($resultats);
$this->assertEquals('27', $resultats['entete']['total']);
}
}
?>
/tags/v5.9-van-tieghem/tests/metier/TaxonsTest.php
New file
0,0 → 1,68
<?php
require_once dirname(__FILE__).'/../ConsultationEflorePhpUnit.php';
 
class TaxonsTest extends ConsultationEflorePhpUnit {
public function testStatsInitialesFamille() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Taxons();
$resultats = $noms->getStatsInitialesFamille();
$this->assertNotEmpty($resultats);
// bdtfx v2
$this->assertEquals('25', $resultats['A']);
}
public function testStatsInitialesGenre() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Taxons();
$resultats = $noms->getStatsInitialesGenre();
$this->assertNotEmpty($resultats);
$this->assertEquals('9', $resultats['U']);
}
public function testListeFamilleParInitiale() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Taxons();
$resultats = $noms->getListeFamilleParInitiale('U');
$this->assertNotEmpty($resultats);
$this->assertCount(2, $resultats);
}
public function testListeGenreParInitiale() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Taxons();
$resultats = $noms->getListeGenreParInitiale('U');
$this->assertNotEmpty($resultats);
$this->assertNotEmpty($resultats[84640]);
$this->assertCount(9, $resultats);
}
public function testRechercheEtendue() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Taxons();
$resultats = $noms->getRechercheEtendue('acer');
$this->assertNotEmpty($resultats);
$this->assertEquals('49', $resultats['entete']['total']);
}
 
/*
équivalent de:
SELECT count(num_nom) FROM bdtfx_v1_01 WHERE num_nom = num_nom_retenu AND (( SOUNDEX(nom_sci) = SOUNDEX('aceras')) OR ( SOUNDEX(REVERSE(nom_sci)) = SOUNDEX(REVERSE('aceras')))) LIMIT 0, 100;
~/projets/services/modules/0.1/bdtfx/Taxons.php:275
*/
public function testRechercheFloue() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Taxons();
$resultats = $noms->getRechercheFloue('aceras');
$this->assertNotEmpty($resultats);
$this->assertEquals('15', $resultats['entete']['total']);
}
}
?>
/tags/v5.9-van-tieghem/tests/metier/NomsVernaculairesTest.php
New file
0,0 → 1,33
<?php
require_once dirname(__FILE__).'/../ConsultationEflorePhpUnit.php';
 
class NomsVernaculairesTest extends ConsultationEflorePhpUnit {
public function testRechercheEtendue() {
Registre::set('parametres.referentiel', 'nvjfl');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new NomsVernaculaires();
$resultats = $noms->getRechercheEtendue('abricotier');
$this->assertNotEmpty($resultats);
$this->assertEquals('3', $resultats['entete']['total']);
}
public function testRechercheEtendueDetermination() {
Registre::set('parametres.referentiel', 'nvjfl');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new NomsVernaculaires();
$resultats = $noms->getRechercheEtendue('abricotier', 'determination');
$this->assertNotEmpty($resultats);
$this->assertEquals('3', $resultats['entete']['total']);
}
public function testRechercheFloue() {
Registre::set('parametres.referentiel', 'nvjfl');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new NomsVernaculaires();
$resultats = $noms->getRechercheFloue('abricotier');
$this->assertNotEmpty($resultats);
$this->assertEquals('1', $resultats['entete']['total']);
}
}
?>
/tags/v5.9-van-tieghem/tests/modules/resultat/resultats.json
New file
0,0 → 1,130
{"eritrichium":{
"entete":
{"masque":"nom_sci=%eritrichium%","depart":0,"limite":"3000","total":"8"},
"resultat":{
"86402":
{"nom_sci":"Eritrichium Gaudin [1828]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/86402",
"retenu":"true",
"nom_retenu":"Eritrichium Gaudin [1828]",
"nom_retenu.id":"86402",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/86402",
"auteur":"Gaudin",
"annee":"1828",
"biblio_origine":null,"nom_addendum":null},
"75113":{
"nom_sci":"Eritrichium nanum (L.) Schrad. ex Gaudin [1828]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/75113",
"retenu":"true",
"nom_retenu":"Eritrichium nanum (L.) Schrad. ex Gaudin [1828]",
"nom_retenu.id":"75113",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/75113",
"auteur":"(L.) Schrad. ex Gaudin",
"annee":"1828",
"biblio_origine":"Fl. Helv., 2 : 57",
"nom_addendum":null},
"25025":{
"nom_sci":"Eritrichium mandonii Ball [1885]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25025",
"retenu":"false",
"nom_retenu":"Amsinckia micrantha Suksd. [1900]",
"nom_retenu.id":"4208",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/4208",
"auteur":"Ball",
"annee":"1885",
"biblio_origine":"J. Linn. Soc., Bot., 22 : 51",
"nom_addendum":null},
"25024":{
"nom_sci":"Eritrichium hacquetii W.D.J.Koch [1838]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25024",
"retenu":"false",
"nom_retenu":"Eritrichium nanum subsp. nanum",
"nom_retenu.id":"25026",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25026",
"auteur":"W.D.J.Koch",
"annee":"1838",
"biblio_origine":"Syn. Fl. Germ. Helv., \u00e9d. 1 : 507",
"nom_addendum":null},
"25028":{
"nom_sci":"Eritrichium tergloviense (Hacq.) Putt. & Endl. [1843]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25028",
"retenu":"false",
"nom_retenu":"Eritrichium nanum subsp. nanum",
"nom_retenu.id":"25026",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25026",
"auteur":"(Hacq.) Putt. & Endl.",
"annee":"1843",
"biblio_origine":"in T.Nees ; Gen. Pl. Fl. Germ., tab. 429 fig. 27, 32",
"nom_addendum":null},
"25026":{
"nom_sci":"Eritrichium nanum subsp. nanum",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25026",
"retenu":"true",
"nom_retenu":"Eritrichium nanum subsp. nanum",
"nom_retenu.id":"25026",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25026",
"auteur":null,"annee":null,"biblio_origine":null,"nom_addendum":null},
"103076":{
"nom_sci":"Eritrichium nanum subsp. jankae (Simonk.) J\u00e1v. [1887]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/103076",
"retenu":"true",
"nom_retenu":"Eritrichium nanum subsp. jankae (Simonk.) J\u00e1v. [1887]",
"nom_retenu.id":"103076",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/103076",
"auteur":"(Simonk.) J\u00e1v.",
"annee":"1887",
"biblio_origine":"Enum. Fl. Transsilv., 408",
"nom_addendum":null},
"25027":{
"nom_sci":"Eritrichium nanum var. leiospermum Rouy [1908]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25027",
"retenu":"false",
"nom_retenu":"Eritrichium nanum subsp. nanum",
"nom_retenu.id":"25026",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25026",
"auteur":"Rouy",
"annee":"1908",
"biblio_origine":"Fl. Fr., 10 : 582",
"nom_addendum":null}
}
},
"viola his":{
"entete":
{"masque":"nom_sci=%viola% his%","depart":0,"limite":"3000","total":"5"},
"resultat":{
"72291":{
"nom_sci":"Viola hispida Lapeyr. [1813]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72291",
"retenu":"false",
"nom_retenu":"Viola bubanii Timb.-Lagr. [1852]",
"nom_retenu.id":"72117",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72117"},
"72288":{
"nom_sci":"Viola hispida Lam. [1779]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72288",
"retenu":"true",
"nom_retenu":"Viola hispida Lam. [1779]",
"nom_retenu.id":"72288",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72288"},
"72341":{
"nom_sci":"Viola lutea var. hispida Nyman [1878]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72341",
"retenu":"false",
"nom_retenu":"Viola bubanii Timb.-Lagr. [1852]",
"nom_retenu.id":"72117",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72117"},
"72289":{"nom_sci":"Viola hispida subsp. cryana (Gillot) P.Fourn. [1928]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72289",
"retenu":"false",
"nom_retenu":"Viola cryana Gillot [1878]",
"nom_retenu.id":"72201",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72201"},
"72290":{"nom_sci":"Viola hispida subsp. rothomagensis P.Fourn. [1928]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72290",
"retenu":"false",
"nom_retenu":"Viola hispida Lam. [1779]",
"nom_retenu.id":"72288",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72288"}
}
}
}
/tags/v5.9-van-tieghem/tests/modules/resultat/ResultatFormateurInitialisation.php
New file
0,0 → 1,65
<?php
 
class ResultatFormateurInitialisation extends PHPUnit_Framework_TestCase {
 
public static function setUpBeforeClass() {
error_reporting(E_ALL);
 
// 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) {
$cheminBase = dirname(__FILE__).'/../../../';
$cheminBiblio = $cheminBase.'bibliotheque/';
$cheminModule = $cheminBase.'modules/resultat/';
$cheminModuleFormateurs = $cheminModule.'formateurs/';
$cheminModuleFormateursNs = $cheminModuleFormateurs.'nom_scientifique/';
$cheminModuleFormateursNv = $cheminModuleFormateurs.'nom_vernaculaire/';
$chemins = array($cheminBiblio, $cheminModule, $cheminModuleFormateurs,
$cheminModuleFormateursNs, $cheminModuleFormateursNv);
foreach ($chemins as $chemin) {
$chemin = $chemin.$classe.'.php';
if (file_exists($chemin)) {
require_once $chemin;
}
}
}
 
protected function getParametres($type, $masque) {
$parametres = new ParametresResultats();
$parametres->type = $type;
$parametres->masqueRecherche = $masque;
return $parametres;
}
 
protected function getResultatsPourMasque($masque) {
$resultatsJson = file_get_contents(dirname(__FILE__).'/resultats.json');
$resultats = json_decode($resultatsJson, true);
return $resultats[$masque];
}
 
protected function getSurligneur() {
return new Surligneur();
}
 
protected function getTrieur() {
return new Trieur();
}
 
protected function getAppUrls() {
$AppUrls = $this->getMock('AppUrls', array('obtenirUrlFiche', 'obtenirUrlBaseDossier'), array(), '', false);
$AppUrls->expects($this->any())
->method('obtenirUrlFiche')
->will($this->returnCallback(array($this, 'genererUrlFiche')));
$AppUrls->expects($this->any())
->method('obtenirUrlBaseDossier')
->will($this->returnValue(ConsultationEflorePhpUnit::TPL_URL_BASE_DOSSIER));
return $AppUrls;
}
 
public function genererUrlFiche($id) {
return sprintf(ConsultationEflorePhpUnit::TPL_URL_FICHE, $id);
}
}
?>
/tags/v5.9-van-tieghem/tests/modules/resultat/formateurs/DecompoFormateurTest.php
New file
0,0 → 1,68
<?php
include_once dirname(__FILE__).'/../ResultatFormateurInitialisation.php';
 
class DecompoFormateurTest extends ResultatFormateurInitialisation {
 
public function testerFormater() {
$formateur = $this->initialiserDecompoFormateur();
 
$formateur->formater();
$infos = $formateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
foreach ($infos['noms'] as $id => $nom) {
$this->assertTrue(is_int($id), "L'id '$id' doit être un nombre entier.");
$this->assertCount(8, $nom);
$this->assertArrayHasKey('nomSci', $nom, print_r($infos, true));
$this->assertFalse(empty($nom['nomSci']), print_r($infos, true));
$this->assertArrayHasKey('retenu', $nom, print_r($infos, true));
$this->assertArrayHasKey('auteur', $nom, print_r($infos, true));
$this->assertArrayHasKey('annee', $nom, print_r($infos, true));
$this->assertArrayHasKey('biblio', $nom, print_r($infos, true));
$this->assertArrayHasKey('addendum', $nom, print_r($infos, true));
$this->assertArrayHasKey('nn', $nom, print_r($infos, true));
$this->assertTrue(is_int($nom['nn']), "nn '{$nom['nn']}' doit être un nombre entier.");
$this->assertArrayHasKey('urlFiche', $nom, print_r($infos, true));
$urlFicheAttendue = sprintf(ConsultationEflorePhpUnit::TPL_URL_FICHE, $id);
$this->assertEquals($urlFicheAttendue, $nom['urlFiche'], print_r($infos, true));
}
}
 
public function testerTrier() {
$formateur = $this->initialiserDecompoFormateur();
 
$formateur->formater();
$formateur->trier();
$infos = $formateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
$ordreClesAttendu = array(86402, 25024, 25025, 75113, 103076, 25026, 25027, 25028);
$ordreClesTriees = array_keys($infos['noms']);
$this->assertEquals($ordreClesAttendu, $ordreClesTriees, print_r($ordreClesTriees, true));
}
 
public function testerSurligner() {
$formateur = $this->initialiserDecompoFormateur();
 
$formateur->formater();
$formateur->surligner();
$infos = $formateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
foreach ($infos['noms'] as $id => $nom) {
$this->assertArrayHasKey($id, $infos['noms'], print_r($infos, true));
$this->assertArrayHasKey('nomSci', $infos['noms'][$id], print_r($infos, true));
$this->assertContains('<span class="surlignage">Eritrichium</span>', $infos['noms'][$id]['nomSci'], print_r($infos, true));
}
}
 
private function initialiserDecompoFormateur($masque = 'eritrichium') {
$parametres = $this->getParametres('decompo', $masque);
$resultats = $this->getResultatsPourMasque($masque);
$surligneur = $this->getSurligneur();
$trieur = $this->getTrieur();
$appsUrls = $this->getAppUrls();
return new DecompoFormateur($parametres, $resultats, $surligneur, $trieur, $appsUrls);
}
}
?>
/tags/v5.9-van-tieghem/tests/modules/resultat/formateurs/AlphabFormateurTest.php
New file
0,0 → 1,62
<?php
include_once dirname(__FILE__).'/../ResultatFormateurInitialisation.php';
 
class AlphabFormateurTest extends ResultatFormateurInitialisation {
 
public function testerFormater() {
$AlphabFormateur = $this->initialiserAlphabFormateur();
 
$AlphabFormateur->formater();
$infos = $AlphabFormateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
foreach ($infos['noms'] as $id => $nom) {
$this->assertTrue(is_int($id), "L'id '$id' doit être un nombre entier.");
$this->assertCount(3, $nom);
$this->assertArrayHasKey('nomSci', $infos['noms'][$id], print_r($infos, true));
$this->assertArrayHasKey('retenu', $infos['noms'][$id], print_r($infos, true));
$this->assertArrayHasKey('urlFiche', $infos['noms'][$id], print_r($infos, true));
$urlFicheAttendue = sprintf(ConsultationEflorePhpUnit::TPL_URL_FICHE, $id);
$this->assertEquals($urlFicheAttendue, $infos['noms'][$id]['urlFiche'], print_r($infos, true));
}
}
 
public function testerTrier() {
$AlphabFormateur = $this->initialiserAlphabFormateur();
 
$AlphabFormateur->formater();
$AlphabFormateur->trier();
$infos = $AlphabFormateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
$ordreClesAttendu = array(72288, 72291, 72289, 72290, 72341);
$ordreClesTriees = array_keys($infos['noms']);
$this->assertEquals($ordreClesAttendu, $ordreClesTriees, print_r($ordreClesTriees, true));
}
 
public function testerSurligner() {
$AlphabFormateur = $this->initialiserAlphabFormateur();
 
$AlphabFormateur->formater();
$AlphabFormateur->surligner();
$infos = $AlphabFormateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
foreach ($infos['noms'] as $id => $nom) {
$this->assertArrayHasKey($id, $infos['noms'], print_r($infos, true));
$this->assertArrayHasKey('nomSci', $infos['noms'][$id], print_r($infos, true));
$this->assertContains('<span class="surlignage">Viola</span>', $infos['noms'][$id]['nomSci'], print_r($infos, true));
$this->assertContains('<span class="surlignage">his</span>', $infos['noms'][$id]['nomSci'], print_r($infos, true));
}
}
 
private function initialiserAlphabFormateur($masque = 'viola his') {
$parametres = $this->getParametres('alphab', $masque);
$resultats = $this->getResultatsPourMasque($masque);
$surligneur = $this->getSurligneur();
$trieur = $this->getTrieur();
$appsUrls = $this->getAppUrls();
return new AlphabFormateur($parametres, $resultats, $surligneur, $trieur, $appsUrls);
}
}
?>
/tags/v5.9-van-tieghem/tests/modules/resultat/formateurs/DeterminationVernaFormateurTest.php
New file
0,0 → 1,132
<?php
include_once dirname(__FILE__).'/../ResultatFormateurInitialisation.php';
 
class DeterminationVernaFormateurTest extends ResultatFormateurInitialisation {
 
public function testerFormater() {
$Formateur = $this->initialiserDeterminationVernaFormateur();
 
$Formateur->formater();
$infos = $Formateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
foreach ($infos['noms'] as $id => $nom) {
$this->assertTrue(is_int($id), "L'id '$id' doit être un nombre entier.");
$this->assertCount(3, $nom);
$this->assertArrayHasKey('nomSci', $infos['noms'][$id], print_r($infos, true));
$this->assertArrayHasKey('urlFiche', $infos['noms'][$id], print_r($infos, true));
$urlFicheAttendue = sprintf(ConsultationEflorePhpUnit::TPL_URL_FICHE, $id);
$this->assertEquals($urlFicheAttendue, $infos['noms'][$id]['urlFiche'], print_r($infos, true));
if (array_key_exists('nomVerna', $infos['noms'][$id])) {
$nomsVernas = $infos['noms'][$id]['nomVerna'];
$this->assertTrue(is_array($nomsVernas));
foreach ($nomsVernas as $nomVerna) {
$this->assertCount(2, $nomVerna, print_r($nomVerna, true));
$this->assertArrayHasKey('nn', $nomVerna, print_r($nomVerna, true));
$this->assertTrue(is_int($nomVerna['nn']), "La valeur nn (num_nom) '{$nomVerna['nn']}' doit être un nombre entier.");
$this->assertArrayHasKey('nom_vernaculaire', $nomVerna, print_r($nomVerna, true));
}
}
}
 
$this->assertArrayHasKey('imagesUrls', $infos, print_r($infos, true));
$this->assertTrue(is_array($infos['imagesUrls']), "'imagesUrls' doit être un tableau");
$this->assertArrayHasKey('51299', $infos['imagesUrls'], print_r($infos['imagesUrls'], true));
$this->assertArrayHasKey('18669', $infos['imagesUrls'], print_r($infos['imagesUrls'], true));
foreach ($infos['imagesUrls'] as $imgUrl) {
$this->assertTrue(is_array($imgUrl), "Chaque taxon doit avoir un tableau d'url d'images");
foreach ($imgUrl as $url) {
$this->assertRegExp('/^http:\/\/www\.tela-botanica\.org\/appli:cel-img:[0-9]{9}CS\.jpg$/', $url);
}
}
}
public function testerSurligner() {
$Formateur = $this->initialiserDeterminationVernaFormateur();
 
$Formateur->formater();
$Formateur->surligner();
$infos = $Formateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
foreach ($infos['noms'] as $nom) {
foreach ($nom['nomVerna'] as $id => $nomVerna) {
$this->assertArrayHasKey('nom_vernaculaire', $nomVerna, print_r($nomVerna, true));
$this->assertContains('<span class="surlignage">Muguet</span>', $nomVerna['nom_vernaculaire'], print_r($infos, true));
}
}
}
 
private function initialiserDeterminationVernaFormateur($masque = 'Muguet') {
$parametres = $this->getParametres('determination', $masque);
$resultats = $this->getResultatsPourMasque($masque);
$surligneur = $this->getSurligneur();
$trieur = $this->getTrieur();
$appsUrls = $this->getAppUrls();
$images = $this->getImagesService();
return new DeterminationVernaFormateur($parametres, $resultats, $surligneur, $trieur, $appsUrls, null, $images);
}
protected function getResultatsPourMasque($masque) {
$resultatsJson = file_get_contents(dirname(__FILE__).'/../resultats_verna.json');
$resultats = json_decode($resultatsJson, true);
return $resultats[$masque];
}
 
private function getImagesService() {
$retour = Array (
'bdtfx.51299' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000007275CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000007276CS.jpg',
'2' => 'http://www.tela-botanica.org/appli:cel-img:000007277CS.jpg',
'3' => 'http://www.tela-botanica.org/appli:cel-img:000007278CS.jpg',
'4' => 'http://www.tela-botanica.org/appli:cel-img:000007279CS.jpg',
'5' => 'http://www.tela-botanica.org/appli:cel-img:000021076CS.jpg' ),
'bdtfx.18669' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000009085CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000009086CS.jpg',
'2' => 'http://www.tela-botanica.org/appli:cel-img:000018652CS.jpg',
'3' => 'http://www.tela-botanica.org/appli:cel-img:000018757CS.jpg',
'4' => 'http://www.tela-botanica.org/appli:cel-img:000018862CS.jpg',
'5' => 'http://www.tela-botanica.org/appli:cel-img:000018865CS.jpg',
'6' => 'http://www.tela-botanica.org/appli:cel-img:000032690CS.jpg' ),
'bdtfx.29125' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000010721CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000010722CS.jpg',
'2' => 'http://www.tela-botanica.org/appli:cel-img:000013077CS.jpg',
'3' => 'http://www.tela-botanica.org/appli:cel-img:000024697CS.jpg',
'4' => 'http://www.tela-botanica.org/appli:cel-img:000024719CS.jpg',
'5' => 'http://www.tela-botanica.org/appli:cel-img:000024729CS.jpg' ),
'bdtfx.7310' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000013740CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000013741CS.jpg' ),
'bdtfx.18716' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000021069CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000021071CS.jpg',
'2' => 'http://www.tela-botanica.org/appli:cel-img:000033834CS.jpg',
'3' => 'http://www.tela-botanica.org/appli:cel-img:000033835CS.jpg' ),
'bdtfx.51311' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000021070CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000021078CS.jpg' ),
'bdtfx.51306' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000021072CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000021075CS.jpg',
'2' => 'http://www.tela-botanica.org/appli:cel-img:000021080CS.jpg' ),
'bdtfx.40679' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000021073CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000021074CS.jpg',
'2' => 'http://www.tela-botanica.org/appli:cel-img:000021077CS.jpg',
'3' => 'http://www.tela-botanica.org/appli:cel-img:000021079CS.jpg' ),
'bdtfx.60062' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000025283CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000025308CS.jpg',
'2' => 'http://www.tela-botanica.org/appli:cel-img:000025309CS.jpg' ) );
 
$Images = $this->getMock('Images', array('getUrlsImagesParIdsNoms'), array(), '', false);
$Images->expects($this->any())
->method('getUrlsImagesParIdsNoms')
->will($this->returnValue($retour));
return $Images;
}
}
?>
/tags/v5.9-van-tieghem/tests/modules/resultat/formateurs/DeterminationFormateurTest.php
New file
0,0 → 1,107
<?php
include_once dirname(__FILE__).'/../ResultatFormateurInitialisation.php';
 
class DeterminationFormateurTest extends ResultatFormateurInitialisation {
 
public function testerFormater() {
$Formateur = $this->initialiserDeterminationFormateur();
 
$Formateur->formater();
$infos = $Formateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
foreach ($infos['noms'] as $id => $nom) {
$this->assertTrue(is_int($id), "L'id '$id' doit être un nombre entier.");
$this->assertCount(2, $nom, "Le nom doit avoir 2 paramètres : nomSciRetenu et UrlFiche");
$this->assertArrayHasKey('nomSciRetenu', $infos['noms'][$id], print_r($infos, true));
$this->assertArrayHasKey('urlFiche', $infos['noms'][$id], print_r($infos, true));
$urlFicheAttendue = sprintf(ConsultationEflorePhpUnit::TPL_URL_FICHE, $id);
$this->assertEquals($urlFicheAttendue, $infos['noms'][$id]['urlFiche'], print_r($infos, true));
}
$this->assertArrayHasKey('synonymes', $infos, print_r($infos, true));
foreach ($infos['synonymes'] as $idNomRetenu => $synonymes) {
foreach ($synonymes as $idSynonyme => $synonyme) {
$this->assertCount(3, $synonyme, print_r($infos, true));
$this->assertArrayHasKey('nn', $synonyme, print_r($infos, true));
$this->assertTrue(is_int($synonyme['nn']), "La valeur nn (num_nom) '{$synonyme['nn']}' doit être un nombre entier.");
$this->assertArrayHasKey('nomSci', $synonyme, print_r($infos, true));
$this->assertArrayHasKey('urlFiche', $synonyme, print_r($infos, true));
$urlSynoAttendue = sprintf(ConsultationEflorePhpUnit::TPL_URL_FICHE, $synonyme['nn']);
$this->assertEquals($urlSynoAttendue, $synonyme['urlFiche'], print_r($infos, true));
}
}
 
$this->assertArrayHasKey('nomsSansCorrespondance', $infos, print_r($infos, true));
$this->assertEmpty($infos['nomsSansCorrespondance']);
 
$this->assertArrayHasKey('imagesUrls', $infos, print_r($infos, true));
$this->assertTrue(is_array($infos['imagesUrls']), "'imagesUrls' doit être un tableau");
$this->assertArrayHasKey('72117', $infos['imagesUrls'], print_r($infos, true));
$this->assertArrayHasKey('72288', $infos['imagesUrls'], print_r($infos, true));
foreach ($infos['imagesUrls'] as $imgUrl) {
$this->assertTrue(is_array($imgUrl), "Chaque taxon doit avoir un tableau d'url d'images");
foreach ($imgUrl as $url) {
$this->assertRegExp('/^http:\/\/www\.tela-botanica\.org\/appli:cel-img:[0-9]{9}CS\.jpg$/', $url);
}
}
}
 
public function testerTrier() {
$Formateur = $this->initialiserDeterminationFormateur();
 
$Formateur->formater();
$Formateur->trier();
$infos = $Formateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
$ordreClesAttendu = array(72288, 72201, 72117);
$ordreClesTriees = array_keys($infos['noms']);
$this->assertEquals($ordreClesAttendu, $ordreClesTriees, print_r($ordreClesTriees, true));
}
 
public function testerSurligner() {
$Formateur = $this->initialiserDeterminationFormateur();
 
$Formateur->formater();
$Formateur->surligner();
$infos = $Formateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
foreach ($infos['noms'] as $id => $nom) {
$this->assertArrayHasKey($id, $infos['noms'], print_r($infos, true));
$this->assertArrayHasKey('nomSciRetenu', $infos['noms'][$id], print_r($infos, true));
$this->assertContains('<span class="surlignage">Viola</span>', $infos['noms'][$id]['nomSciRetenu'], print_r($infos, true));
 
}
}
 
private function initialiserDeterminationFormateur($masque = 'viola his') {
$parametres = $this->getParametres('determination', $masque);
$resultats = $this->getResultatsPourMasque($masque);
$surligneur = $this->getSurligneur();
$trieur = $this->getTrieur();
$appsUrls = $this->getAppUrls();
$images = $this->getImagesService();
return new DeterminationFormateur($parametres, $resultats, $surligneur, $trieur, $appsUrls, null, $images);
}
 
private function getImagesService() {
$retour = array(
'bdtfx.72117' => array(
'http://www.tela-botanica.org/appli:cel-img:000025491CS.jpg',
'http://www.tela-botanica.org/appli:cel-img:000025514CS.jpg',
'http://www.tela-botanica.org/appli:cel-img:000025520CS.jpg'),
'bdtfx.72288' => array(
'http://www.tela-botanica.org/appli:cel-img:000032710CS.jpg',
'http://www.tela-botanica.org/appli:cel-img:000032711CS.jpg',
'http://www.tela-botanica.org/appli:cel-img:000032712CS.jpg'));
 
$Images = $this->getMock('Images', array('getUrlsImagesParIdsNoms'), array(), '', false);
$Images->expects($this->any())
->method('getUrlsImagesParIdsNoms')
->will($this->returnValue($retour));
return $Images;
}
}
?>
/tags/v5.9-van-tieghem/tests/modules/resultat/formateurs/RetenuFormateurTest.php
New file
0,0 → 1,63
<?php
include_once dirname(__FILE__).'/../ResultatFormateurInitialisation.php';
 
class RetenuFormateurTest extends ResultatFormateurInitialisation {
 
public function testerFormater() {
$RetenuFormateur = $this->initialiserRetenuFormateur();
$RetenuFormateur->formater();
$infos = $RetenuFormateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, $infos);
foreach ($infos['noms'] as $id => $nom) {
$this->assertTrue(is_int($id), "L'id '$id' doit être un nombre entier.");
$this->assertCount(3, $nom);
$this->assertArrayHasKey('nomSci', $infos['noms'][$id], $infos);
$this->assertArrayHasKey('retenu', $infos['noms'][$id], $infos);
$this->assertArrayHasKey('urlFiche', $infos['noms'][$id], $infos);
$this->assertEquals( sprintf(ConsultationEflorePhpUnit::TPL_URL_FICHE, $id), $infos['noms'][$id]['urlFiche'], $infos );
}
}
 
public function testerTrier() {
$RetenuFormateur = $this->initialiserRetenuFormateur();
$RetenuFormateur->formater();
$RetenuFormateur->trier();
$infos = $RetenuFormateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, $infos);
$ordreClesAttendu = array(72288, 72291, 72289, 72290, 72341);
$ordreClesTriees = array_keys($infos['noms']);
$this->assertEquals($ordreClesAttendu, $ordreClesTriees, $infos);
}
 
public function testerSurligner() {
$RetenuFormateur = $this->initialiserRetenuFormateur();
$RetenuFormateur->formater();
$RetenuFormateur->surligner();
$infos = $RetenuFormateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, $infos);
foreach ($infos['noms'] as $id => $nom) {
$this->assertArrayHasKey($id, $infos['noms'], $infos);
$this->assertArrayHasKey('nomSci', $infos['noms'][$id], $infos);
// fails because:
// svndiff -c 872 modules/resultat/formateurs/nom_scientifique/RetenuFormateur.php
// 'nom_sci' => 'nom_sci_complet'
// c'est à dire que les résultats passés au new RetenuFormateur() ci-dessous [= le fichier json],
// doivent disposer du nom_sci_complet afin d'être formattés
$this->assertContains('<span class="surlignage">Viola</span>', $infos['noms'][$id]['nomSci'], $infos);
$this->assertContains('<span class="surlignage">his</span>', $infos['noms'][$id]['nomSci'], $infos);
}
}
 
private function initialiserRetenuFormateur($masque = 'viola his') {
$parametres = $this->getParametres('retenu', $masque);
$resultats = $this->getResultatsPourMasque($masque);
$surligneur = $this->getSurligneur();
$trieur = $this->getTrieur();
$appsUrls = $this->getAppUrls();
return new RetenuFormateur($parametres, $resultats, $surligneur, $trieur, $appsUrls);
}
}
?>
/tags/v5.9-van-tieghem/tests/modules/resultat/resultats_verna.json
New file
0,0 → 1,102
{"Muguet":{
"entete":
{"masque":"nom_sci=%viola% his%","depart":0,"limite":"3000","total":"5"},
"resultat":{
"-1917563017":{
"id":20687,
"nom_vernaculaire":"Grand Muguet",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:6365",
"taxon":"Polygonatum odoratum", "nom_retenu.code":"bdtfx.nn:51306",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/20687" },
"1229943434":{
"id":30439,
"nom_vernaculaire":"Muguet",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:6297",
"taxon":"Convallaria majalis",
"nom_retenu.code":"bdtfx.nn:18716",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/30439"},
"-1660626391": {
"id":30440,
"nom_vernaculaire":"Muguet bleu",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:6328",
"taxon":"Hyacinthus orientalis",
"nom_retenu.code":"bdtfx.nn:35025",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/30440" },
"1931161398": {
"id":30441,
"nom_vernaculaire":"Muguet de mai",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:6297",
"taxon":"Convallaria majalis",
"nom_retenu.code":"bdtfx.nn:18716",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/30441" },
"-407777153": {
"id":30442,
"nom_vernaculaire":"Muguet de serpent",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:6364",
"taxon":"Polygonatum multiflorum",
"nom_retenu.code":"bdtfx.nn:51299",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/30442" },
"1616101460": {
"id":30443,
"nom_vernaculaire":"Muguet des pampas",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:5565",
"taxon":"Salpichroa origanifolia",
"nom_retenu.code":"bdtfx.nn:60062",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/30443"},
"1431513208": {
"id":30444,
"nom_vernaculaire":"Muguet du Japon",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:12833",
"taxon":"Ophiopogon japonicum",
"nom_retenu.code":"bdtfx.nn:45037",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/30444" },
"-1635498299": {
"id":30445,
"nom_vernaculaire":"Muguet verticillé",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:6366",
"taxon":"Polygonatum verticillatum",
"nom_retenu.code":"bdtfx.nn:51311",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/30445" },
"1293250210": {
"id":30446,
"nom_vernaculaire":"Muguette",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:145",
"taxon":"Conopodium majus",
"nom_retenu.code":"bdtfx.nn:18669",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/30446" },
"-2120091757": {
"id":33933,
"nom_vernaculaire":"Petit Muguet",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:5062",
"taxon":"Galium odoratum",
"nom_retenu.code":"bdtfx.nn:29125",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/33933" },
"-1817798952": {
"id":33933,
"nom_vernaculaire":"Petit Muguet",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:6337",
"taxon":"Maianthemum bifolium",
"nom_retenu.code":"bdtfx.nn:40679",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/33933" },
"500077561": {
"id":33934,
"nom_vernaculaire":"Petit Muguet à deux feuilles",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:6337",
"taxon":"Maianthemum bifolium",
"nom_retenu.code":"bdtfx.nn:40679",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/33934" }
}
}
}
/tags/v5.9-van-tieghem/tests/modules/RechercheSimpleTest.php
New file
0,0 → 1,41
<?php
require_once dirname(__FILE__).'/../ConsultationEflorePhpUnit.php';
 
class RechercheSimpleTest extends ConsultationEflorePhpUnit {
public function testMoteurRechercheSimple() {
Config::charger(CONFIG_DIR . '/bdtfx.ini');
Registre::set('eFlore.urlBase', new Url(Config::get('base_url_application_index')));
Registre::set('parametres.referentiel', 'bdtfx');
 
$recherche = new RechercheSimple();
$sortie = $recherche->executerFormulaireNom();
 
$this->assertNotEmpty($sortie, print_r($sortie, true));
$this->assertContains('<input id="type-nom-scientifique" name="type_nom" type="hidden" value="nom_scientifique" />', $sortie, print_r($sortie,true));
$this->assertContains('<input id="eflore_nomenclature_referentiel" name="referentiel" type="hidden" value="bdtfx" />', $sortie);
$this->assertContains('<input id="eflore_nomenclature_action" name="action" type="hidden" value="rechercheSimple" />', $sortie);
$this->assertNotContains('<input id="type_nom_vernaculaire" name="type_nom" value="nom_vernaculaire" type="radio" checked="checked" />', $sortie);
}
 
public function testMoteurRechercheSimpleForm() {
Config::charger(CONFIG_DIR . '/bdtfx.ini');
Registre::set('eFlore.urlBase', new Url(Config::get('base_url_application_index')));
Registre::set('parametres.referentiel', 'bdtfx');
$donnees['type_nom'] = 'nom_vernaculaire';
$donnees['nom'] = 'acer';
$donnees['nom_verna'] = 'true';
 
$recherche = new RechercheSimple();
$sortie = $recherche->executerFormulaireNom($donnees);
 
$this->assertNotEmpty($sortie, print_r($sortie, true));
$this->assertNotContains('<input id="type-nom-scientifique" name="type_nom" type="hidden" value="nom_scientifique" />', $sortie);
$this->assertContains('<input id="eflore_nomenclature_referentiel" name="referentiel" type="hidden" value="bdtfx" />', $sortie);
$this->assertContains('<input id="eflore_nomenclature_action" name="action" type="hidden" value="rechercheSimple" />', $sortie);
$this->assertContains('<input id="type_nom_vernaculaire" name="type_nom" value="nom_vernaculaire" type="radio" checked="checked" />', $sortie);
$this->assertContains('<input id="nom" name="nom" class="champ" size="30" maxlength="255" type="text" value="acer" />', $sortie);
 
}
}
?>
/tags/v5.9-van-tieghem/tests/modules/NiveauTest.php
New file
0,0 → 1,33
<?php
require_once dirname(__FILE__).'/../ConsultationEflorePhpUnit.php';
 
class NiveauTest extends ConsultationEflorePhpUnit {
 
public function testAfficherNiveau() {
$_GET['referentiel'] = 'bdtfx';
$_GET['module'] = 'recherche';
$_GET['action'] = 'rechercheSimple';
$_GET['type_nom'] = 'nom_scientifique';
$_GET['nom'] = 'acer+mons';
Registre::set('parametres.niveau', '2');
$niveau = new Niveau($this->getAppUrls());
$sortie = $niveau->afficherNiveau();
 
$this->assertNotEmpty($sortie, $sortie);
$this->assertNotContains(' <input id="niveau_2" name="niveau" value="2" type="radio" checked="checked" />', $sortie);
$this->assertContains('<input id="eflore_niveau_type_nom" name="type_nom" type="hidden" value="nom_scientifique" />', $sortie, print_r($sortie,true));
$this->assertContains('<input id="eflore_niveau_referentiel" name="referentiel" type="hidden" value="bdtfx" />', $sortie);
$this->assertContains('<input id="eflore_niveau_action" name="action" type="hidden" value="rechercheSimple" />', $sortie);
$this->assertContains('<input id="eflore_niveau_nom" name="nom" type="hidden" value="acer+mons" />', $sortie);
}
protected function getAppUrls() {
$AppUrls = $this->getMock('AppUrls', array('obtenirUrlBase'), array(), '', false);
$AppUrls->expects($this->any())
->method('obtenirUrlBase')
->will($this->returnValue(ConsultationEflorePhpUnit::TPL_URL_BASE));
return $AppUrls;
}
}
?>
/tags/v5.9-van-tieghem/tests/modules/RechercheTest.php
New file
0,0 → 1,118
<?php
require_once __DIR__ . '/../ConsultationEflorePhpUnit.php';
 
class RechercheTest extends ConsultationEflorePhpUnit {
 
/**
* @backupGlobals # avoid $_REQUEST leaks
*/
public function testExecuterRechercheSimple() {
$_REQUEST['type_nom'] = 'nom_scientifique';
$_REQUEST['nom'] = 'acer mons';
 
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');
 
$recherche = new Recherche();
$recherche->initialiser();
$recherche->executerRechercheSimple();
 
$resultat = Registre::get('resultats');
 
$sortie = implode('', $recherche->getSortie());
$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);
$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() {
$_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();
$resultat = Registre::get('resultats');
$sortie = implode('', $recherche->getSortie());
$this->assertNotEmpty($resultat, $resultat);
$this->assertEquals('6', $resultat['entete']['total']);
$this->assertEquals('6', count($resultat['resultat']));
}
/**
* @backupGlobals # avoid $_REQUEST leaks
*/
public function testExecuterRechercheSimpleRetenu() {
$_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();
$resultat = Registre::get('resultats');
$sortie = implode('', $recherche->getSortie());
$this->assertNotEmpty($resultat);
$this->assertEquals('6', $resultat['entete']['total']);
$this->assertEquals('6', count($resultat['resultat']));
}
 
/**
* @backupGlobals # avoid $_REQUEST leaks
*/
public function testExecuterRechercheSimpleSynonyme() {
$_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');
$recherche = new Recherche();
$recherche->initialiser();
$recherche->executerRechercheSimple();
$resultat = Registre::get('resultats');
$sortie = implode('', $recherche->getSortie());
$this->assertNotEmpty($resultat);
$this->assertEquals('6', $resultat['entete']['total']);
$this->assertEquals('6', count($resultat['resultat']));
}
}
?>
/tags/v5.9-van-tieghem/tests/modules/fiche/FicheTest.php
New file
0,0 → 1,33
<?php
require_once dirname(__FILE__).'/../../ConsultationEflorePhpUnit.php';
 
class FicheTest extends ConsultationEflorePhpUnit {
 
/**
* @outputBuffering enabled # not working ?
* (AppControleur::initialiser, prérequis de new Fiche())
*/
public function testExecuterFichee() {
$_GET['type_nom'] = 'nom_scientifique';
$_GET['nom'] = 'acer mons';
$_GET['referentiel'] = 'bdtfx';
$_GET['num_nom'] = '182';
$_GET['niveau'] = '1';
// Registre::set('parametres.niveau', '1');
 
Config::charger(CONFIG_DIR . '/bdtfx.ini');
Registre::set('eFlore.urlBase', new Url(Config::get('base_url_application_index')));
Registre::set('parametres.referentiel', 'bdtfx');
 
// @AppControleur::initialiser(); ...
$fiche = new Fiche();
$fiche->initialiser();
$fiche->executerFiche();
$sortie = $fiche->getSortie();
 
$this->assertNotEmpty($sortie, print_r($sortie['corps'], true));
$this->assertContains('<input id="eflore_niveau_nom" name="nom" type="hidden" value="acer mons" />', $sortie['corps']);
$this->assertContains('<div id="zone_onglets" ', $sortie['corps']);
}
}
?>
/tags/v5.9-van-tieghem/tests/modules/fiche_metadonnees/FicheMetadonneesTest.php
New file
0,0 → 1,21
<?php
require_once dirname(__FILE__).'/../../ConsultationEflorePhpUnit.php';
 
class FicheMetadonneesTest extends ConsultationEflorePhpUnit {
 
public function testAffichageFicheMetadonnees() {
$_GET['module'] = 'fiche-metadonnees';
$_GET['action'] = 'affichagemetadonnees';
$_GET['projet'] = 'chorodep';
 
Registre::set('niveau', '1');
$cheminRacine = realpath(dirname(__FILE__).'/../configurations/').'/';
 
$fiche = new FicheMetadonnees();
$sortie = $fiche->chargerMetadonneesHtml();
 
$this->assertNotEmpty($sortie, print_r($sortie));
$this->assertContains('<div id="metadonnees">', $sortie);
}
}
?>
/tags/v5.9-van-tieghem/tests/bibliotheque/SurligneurTest.php
New file
0,0 → 1,53
<?php
require dirname(__FILE__).'/../../bibliotheque/Surligneur.php';
 
class SurligneurTest extends PHPUnit_Framework_TestCase {
 
/**
* @expectedException InvalidArgumentException
* @expectedExceptionMessage Surligneur::surlignerMots() n'accepte que les tableaux de mots en argument
*/
public function testerSurlignerMotsAvecChaineRetourneInvalidArgumentException() {
$surligneur = new Surligneur();
$surligneur->surlignerMots('test');
}
 
/**
* @expectedException LengthException
* @expectedExceptionMessage Surligneur::surlignerMots() n'accepte que des tableaux contenant au moins un mot
*/
public function testerSurlignerMotsAvecTableauVideRetourneLengthException() {
$surligneur = new Surligneur();
$surligneur->surlignerMots(array());
}
 
public function testerSurlignerMotsRetournePremiereOccurenceMotSurlignee() {
$surligneur = new Surligneur();
$surligneur->setTexte('Viola alba subsp. alba');
$txtSurligne = $surligneur->surlignerMots(array('viola', 'al'));
 
$txtSurligneAttendu = '<span class="surlignage">Viola</span> <span class="surlignage">al</span>ba subsp. alba';
$this->assertEquals($txtSurligneAttendu, $txtSurligne);
}
 
public function testerSurlignerMotsRetourneDeuxPremieresOccurencesMotSurlignees() {
$surligneur = new Surligneur();
$surligneur->setNbreMaxSurlignageParMot(2);
$surligneur->setTexte('Viola alba subsp. alba');
 
$txtSurligne = $surligneur->surlignerMots(array('viola', 'al'));
 
$txtSurligneAttendu = '<span class="surlignage">Viola</span> <span class="surlignage">al</span>ba subsp. <span class="surlignage">al</span>ba';
$this->assertEquals($txtSurligneAttendu, $txtSurligne);
}
 
public function testerSurlignerMotsParConstructeurRetourneDeuxPremieresOccurencesMotSurlignees() {
$surligneur = new Surligneur('Viola alba subsp. alba', 2);
 
$txtSurligne = $surligneur->surlignerMots(array('viola', 'al'));
 
$txtSurligneAttendu = '<span class="surlignage">Viola</span> <span class="surlignage">al</span>ba subsp. <span class="surlignage">al</span>ba';
$this->assertEquals($txtSurligneAttendu, $txtSurligne);
}
}
?>
/tags/v5.9-van-tieghem/tests/ConsultationEflorePhpUnit.php
New file
0,0 → 1,161
<?php
/**
* 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 Raphaël Droz <raphael@tela-botanica.org>
* @author Jean-Pascal MILCENT <jpm@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
*/
 
define('CONFIG_DIR', __DIR__ . '/../configurations');
require_once __DIR__ . '/../framework.php';
abstract class ConsultationEflorePhpUnit extends PHPUnit_Framework_TestCase {
const URL_API = 'http://localhost/service:eflore:0.1';
const TPL_URL_BASE = 'http://localhost/consultation/index_botanique.php?referentiel=bdtfx';
const TPL_URL_BASE_DOSSIER = 'http://localhost/consultation/';
const TPL_URL_FICHE = 'http://localhost/consultation/index_botanique.php?referentiel=bdtfx&module=fiche&action=fiche&nn=%s';
 
//+------------------------------------------------------------------------------------------------------+
// 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);
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) {
//echo $classe."\n";
if (class_exists($classe)) {
return null;
}
$cheminsTests = __DIR__.'/';
// $cheminBibliotheque = realpath(__DIR__.'/../bibliotheque/').'/';
$cheminMetier = realpath(__DIR__.'/../metier/api_0.1').'/';
$cheminModule = realpath(__DIR__.'/../modules/').'/';
$cheminFormateurs = realpath(__DIR__.'/../modules/fiche/formateurs/').'/'; // pour FicheTest::testExecuterFiche()
$chemins = array(/* $cheminBibliotheque, */ $cheminMetier, $cheminModule, $cheminsTests, $cheminFormateurs);
foreach ($chemins as $chemin) {
$cheminCourt = $chemin.$classe.'.php';
$module = strtolower(preg_replace('/([A-Z])/', '_\\1', lcfirst($classe)));
$cheminLong = $chemin.$module.'/'.$classe.'.php';
//echo $cheminCourt."\n".$cheminLong."\n";
if (file_exists($cheminCourt)) {
require_once $cheminCourt;
} elseif (file_exists($cheminLong)) {
require_once $cheminLong;
}
}
}
 
//+------------------------------------------------------------------------------------------------------+
// 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);
}
 
return self::URL_API.$ressourcesUrl.$parametresUrl;
}
 
//+------------------------------------------------------------------------------------------------------+
// 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) {
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, $...);
*
* @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);
}
}
?>