/branches/v5.2-lasegue/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); |
} |
} |
?> |
/branches/v5.2-lasegue/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']); |
} |
} |
?> |
/branches/v5.2-lasegue/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']); |
} |
} |
?> |
/branches/v5.2-lasegue/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']); |
} |
} |
?> |
/branches/v5.2-lasegue/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); |
} |
} |
?> |
/branches/v5.2-lasegue/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; |
} |
} |
?> |
/branches/v5.2-lasegue/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'])); |
} |
} |
?> |
/branches/v5.2-lasegue/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']); |
} |
} |
?> |
/branches/v5.2-lasegue/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); |
} |
} |
?> |
/branches/v5.2-lasegue/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"} |
} |
} |
} |
/branches/v5.2-lasegue/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); |
} |
} |
?> |
/branches/v5.2-lasegue/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); |
} |
} |
?> |
/branches/v5.2-lasegue/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); |
} |
} |
?> |
/branches/v5.2-lasegue/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; |
} |
} |
?> |
/branches/v5.2-lasegue/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; |
} |
} |
?> |
/branches/v5.2-lasegue/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); |
} |
} |
?> |
/branches/v5.2-lasegue/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" } |
} |
} |
} |
/branches/v5.2-lasegue/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); |
} |
} |
?> |
/branches/v5.2-lasegue/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); |
} |
} |
?> |