New file |
0,0 → 1,399 |
<?php |
require_once dirname(__FILE__).'/../ServicePhpUnit.php'; |
|
class NomsServiceBdtfxTest extends ServicePhpUnit { |
|
private $retour = ''; |
private $nomDetailSqueletteUrl = 'http://localhost/service:eflore:0.2/bdtfx/noms/%s'; |
private $ontologieHrefTpl = 'http://localhost/service:eflore:0.2/bdnt/ontologies/rangTaxo:%s'; |
private $champsProjet = array( |
'presence_Ga' => 'presence_Ga.code', |
'presence_Co' => 'presence_Co.code' |
); |
|
public function __construct() { |
$this->projet = 'bdtfx'; |
$this->service = 'noms'; |
} |
|
public function initialiserService(NomsListe $service) { |
$service->setDetailsHrefTpl($this->nomDetailSqueletteUrl); |
$service->setOntologieHrefTpl($this->ontologieHrefTpl); |
$service->setChampsProjet($this->champsProjet); |
} |
|
public function testVersionPrecise() { |
$ressources = array(); |
$parametres = array('version.projet' => '1.01', 'recherche' => 'etendue', 'masque' => 'acer'); |
|
$this->retour = $this->consulter($ressources, $parametres); |
|
$this->verifierStructureListe(); |
$this->verifierMasque('nom_sci=acer%'); |
$this->verifierTotal(156); |
$this->verifierNbreResultats(100); |
} |
|
public function testNomsVersionMultiple() { |
$ressources = array(); |
$parametres = array('version.projet' => '*', 'recherche' => 'etendue', 'masque' => 'acer'); |
|
$this->retour = $this->consulterBrut($ressources, $parametres); |
|
$this->verifierPresenceMessage("L'affichage de plusieurs versions ne fonctionne que pour les ressources de type /ressources/#id"); |
} |
|
public function testVersionInexistante() { |
$ressources = array(); |
$parametres = array('version.projet' => '99.00'); |
|
$this->retour = $this->consulterBrut($ressources, $parametres); |
|
$this->verifierPresenceMessage("La version '99.00' n'est pas disponible pour le projet 'bdtfx' !"); |
} |
|
public function testAucunResultat() { |
$ressources = array(); |
$parametres = array( |
'version.projet' => '1.01', |
'recherche' => 'stricte', |
'masque' => 'Axer'); |
|
$this->retour = $this->consulterBrut($ressources, $parametres); |
|
$this->verifierPresenceMessage("Aucun résultat ne correspond a votre requête !"); |
} |
|
public function testRechercheStricte() { |
$ressources = array(); |
$parametres = array( |
'version.projet' => '1.01', |
'recherche' => 'stricte', |
'masque' => 'Acer'); |
|
$this->retour = $this->consulter($ressources, $parametres); |
|
$this->verifierStructureListe(); |
$this->verifierMasque('nom_sci=Acer'); |
$this->verifierTotal(1); |
$this->verifierNbreResultats(1); |
} |
|
public function testResultatChamps() { |
$ressources = array(); |
$parametres = array( |
'version.projet' => '1.01', |
'recherche' => 'stricte', |
'masque.nn' => '182'); |
|
$this->retour = $this->consulter($ressources, $parametres); |
|
$this->verifierStructureListe(); |
$this->verifierMasque('num_nom=182'); |
$this->verifierTotal(1); |
$this->verifierNbreResultats(1); |
$this->verifierLigneResultatsStructure(182); |
$this->verifierResultatsLigneAttributValeur(182, 'retenu', true); |
$this->verifierResultatsLigneAttributValeur(182, 'nom_sci', 'Acer monspessulanum'); |
} |
|
public function testMasqueSg() { |
$ressources = array(); |
$parametres = array( |
'version.projet' => '1.01', |
'recherche' => 'stricte', |
'masque.sg' => 'Asteraceae'); |
|
$this->retour = $this->consulter($ressources, $parametres); |
|
$this->verifierStructureListe(); |
$this->verifierMasque('nom_supra_generique=Asteraceae'); |
$this->verifierTotal(1); |
$this->verifierNbreResultats(1); |
} |
|
public function testMasqueGenSpSspAuAn() { |
$ressources = array(); |
$parametres = array( |
'version.projet' => '1.01', |
'recherche' => 'stricte', |
'masque.gen' => 'Allium', |
'masque.sp' => 'carinatum', |
'masque.ssp' => 'consimile', |
'masque.au' => 'Gren.', |
'masque.an' => '1855'); |
|
$this->retour = $this->consulter($ressources, $parametres); |
|
$this->verifierStructureListe(); |
$this->verifierMasque('genre=Allium&epithete_sp=carinatum&epithete_infra_sp=consimile&auteur=Gren.&annee=1855'); |
$this->verifierTotal(1); |
$this->verifierNbreResultats(1); |
} |
|
public function testMasqueNn() { |
$ressources = array(); |
$parametres = array( |
'version.projet' => '1.01', |
'recherche' => 'stricte', |
'masque.nn' => '182'); |
|
$this->retour = $this->consulter($ressources, $parametres); |
|
$this->verifierStructureListe(); |
$this->verifierMasque('num_nom=182'); |
$this->verifierTotal(1); |
$this->verifierNbreResultats(1); |
$this->verifierLigneResultatsStructure(182); |
} |
|
public function testMasqueRg() { |
$ressources = array(); |
$parametres = array( |
'version.projet' => '1.01', |
'recherche' => 'stricte', |
'masque.rg' => '180'); |
|
$this->retour = $this->consulter($ressources, $parametres); |
|
$this->verifierStructureListe(); |
$this->verifierMasque('rang=180'); |
$this->verifierTotal(210); |
} |
|
// TODO : à implémenter! |
/* |
public function testNomsIdVersionMultiple() { |
$ressources = array('71711'); |
$parametres = array('version.projet' => '*'); |
|
$retour = $this->consulter($ressources, $parametres); |
$this->assertArrayHasKey('bdtfx_v1_01', $retour, "Le json ne contient pas d'attribut : bdtfx_v1_01."); |
$this->assertArrayHasKey('bdtfx_v1_02', $retour, "Le json ne contient pas d'attribut : bdtfx_v1_02."); |
$this->assertEquals('71711', $retour['bdtfx_v1_01']['id'], "'bdtfx_v1_01' doit contenir un attribut 'id' avec la valeur '71711'"); |
$this->assertEquals('71711', $retour['bdtfx_v1_02']['id'], "'bdtfx_v1_02' doit contenir un attribut 'id' avec la valeur '71711'"); |
}*/ |
|
// TODO : à implémenter |
/* |
public function testNsStructureTxt() { |
$ressources = array(); |
$parametres = array( |
'version.projet' => '1.01', |
'recherche' => 'stricte', |
'masque.nn' => '182', |
'ns.format' => 'txt', |
'ns.structure' => 'au,an,bib,ad'); |
|
$this->retour = $this->consulter($ressources, $parametres); |
|
$this->verifierStructureListe(); |
$this->verifierMasque('num_nom=182'); |
$this->verifierTotal(1); |
$this->verifierNbreResultats(1); |
$this->verifierResultatsLigneAttributValeur(182, 'nom_sci', 'Acer monspessulanum L. [1753, Sp. Pl., éd. 1 : 1056]'); |
}*/ |
|
// TODO : à implémenter |
/* |
public function testNsStructureHtml() { |
$ressources = array(); |
$parametres = array( |
'version.projet' => '1.01', |
'recherche' => 'stricte', |
'masque.nn' => '182', |
'ns.format' => 'htm', |
'ns.structure' => 'au,an,bib,ad'); |
|
$this->retour = $this->consulter($ressources, $parametres); |
|
$this->verifierStructureListe(); |
$this->verifierMasque('num_nom=182'); |
$this->verifierTotal(1); |
$this->verifierNbreResultats(1); |
$nomSciAttendu = '<span class="sci"><span class="gen">Acer</span> <span class="sp">monspessulanum</span></span> <span class="auteur">L.</span> [<span class="annee">1753</span>, <span class="biblio">Sp. Pl., éd. 1 : 1056</span>]'; |
$this->verifierResultatsLigneAttributValeur(182, 'nom_sci', $nomSciAttendu); |
}*/ |
|
// TODO : à implémenter |
/* |
public function testListeNomsAvecParametreRetourChamps() { |
$ressources = array(); |
$parametres = array('version.projet' => '1.01', |
'masque' => 'acer', |
'retour.champs' => 'auteur,nom_retenu.*'); |
|
$this->retour = $this->consulter($ressources, $parametres); |
|
$this->verifierStructureListe(); |
$this->presenceAttributDansResultat(83587, 'auteur'); |
$this->presenceAttributDansResultat(83587, 'nom_retenu.id'); |
$this->presenceAttributDansResultat(83587, 'nom_retenu.href'); |
$this->abscenceAttributDansResultat(83587, 'nom_retenu'); |
}*/ |
|
// TODO : à implémenter |
/* |
public function testNomsIdAvecParametreRetourChamps() { |
$ressources = array('1'); |
$parametres = array('version.projet' => '1.01', |
'retour.champs' => 'nom_retenu.*'); |
|
$this->retour = $this->consulter($ressources, $parametres); |
|
$this->presenceAttribut('nom_retenu.id'); |
$this->presenceAttribut('nom_retenu.href'); |
$this->abscenceAttribut('nom_retenu'); |
$this->abscenceAttribut('auteur'); |
}*/ |
|
// TODO : à implémenter |
/* |
public function testListeNomAvecParametreNsStructureAuAnBibAd() { |
$ressources = array(); |
$parametres = array('version.projet' => '1.01', |
'masque.nn' => '39607', |
'ns.structure' => 'au,an,bib,ad'); |
|
$this->retour = $this->consulter($ressources, $parametres); |
|
$this->verifierStructureListe(); |
$this->presenceAttributDansResultat(39607, 'nom_sci'); |
|
$nomSciTxt = 'Lolium annuum Gilib. [1792, Exercit. Phytol., 2 : 520] [nom. invalid.]'; |
$this->verifierResultatsLigneAttributValeur(39607, 'nom_sci', $nomSciTxt); |
}*/ |
|
// TODO : à implémenter |
/* |
public function testListeNomAvecParametreNsStructureAuAnBibAdEtNsFormatHtm() { |
$ressources = array(); |
$parametres = array('version.projet' => '1.01', |
'masque.nn' => '39607', |
'ns.structure' => 'au,an,bib,ad', |
'ns.format' => 'htm'); |
|
$this->retour = $this->consulter($ressources, $parametres); |
|
$this->verifierStructureListe(); |
$this->verifierMasque('num_nom=39607'); |
|
$this->presenceAttributDansResultat(39607, 'nom_sci'); |
|
$nomSciHtml = "<span class=\"sci\"><span class=\"gen\">Lolium</span> <span class=\"sp\">annuum</span></span> <span class=\"auteur\">Gilib.</span> [<span class=\"annee\">1792</span>, <span class=\"biblio\">Exercit. Phytol., 2 : 520</span>] [<span class=\"adendum\">nom. invalid.</span>]"; |
$this->verifierResultatsLigneAttributValeur(39607, 'nom_sci', $nomSciHtml); |
}*/ |
|
public function testSansParametres() { |
$ressources = array('85'); |
$parametres = array(); |
|
$retour = $this->consulter($ressources, $parametres); |
|
$this->assertTrue(is_array($retour), 'Retour est un tableau'); |
$this->assertArrayHasKey('id', $retour, 'Présence champ id'); |
$this->assertSame(85, $retour['id'], 'Valeur champ id = 85'); |
$this->assertArrayHasKey('nom_sci', $retour, 'Présence champ nom_sci'); |
|
$this->assertSame('Abutilon theophrasti', $retour['nom_sci'], 'Valeur champ nom_sci = Abutilon theophrasti'); |
$this->assertArrayHasKey('nom_retenu.id', $retour, 'Présence champ nom_retenu.id'); |
$this->assertSame(85, $retour['nom_retenu.id'], 'Valeur champ nom_sci = 85'); |
$this->assertArrayHasKey('nom_retenu', $retour, 'Présence champ nom_retenu'); |
$this->assertSame('Abutilon theophrasti', $retour['nom_retenu'], 'Valeur champ nom_retenu = Abutilon theophrasti'); |
$this->assertArrayHasKey('nom_retenu.href', $retour, 'Présence champ nom_retenu.href'); |
$urlNomRetenuHrefAttendue = sprintf($this->nomDetailSqueletteUrl, 85); |
$this->assertSame($urlNomRetenuHrefAttendue, $retour['nom_retenu.href'], "Valeur champ nom_retenu.href = $urlNomRetenuHrefAttendue"); |
|
$this->assertArrayHasKey('rang.code', $retour, 'Présence champ rang.code'); |
$this->assertSame('bdnt.rangTaxo:290', $retour['rang.code'], 'Valeur champ rang.code = bdnt.rangTaxo:290'); |
$this->assertArrayHasKey('rang', $retour, 'Présence champ rang'); |
$this->assertSame('Espèce', $retour['rang'], 'Valeur champ rang = Espèce'); |
|
$this->assertArrayHasKey('rang.href', $retour, 'Présence champ rang.href'); |
$hrefAttendue =sprintf($this->ontologieHrefTpl, 290); |
$this->assertSame($hrefAttendue, $retour['rang.href'], "Valeur champ rang.href = $hrefAttendue"); |
|
$this->assertArrayHasKey('nom_sci.genre', $retour, 'Présence champ nom_sci.genre'); |
$this->assertSame('Abutilon', $retour['nom_sci.genre'], "Valeur champ nom_sci.genre = 'Abutilon'"); |
$this->assertArrayHasKey('nom_sci.sp', $retour, 'Présence champ nom_sci.sp'); |
$this->assertSame('theophrasti', $retour['nom_sci.sp'], "Valeur champ nom_sci.sp = theophrasti"); |
|
$this->assertArrayHasKey('auteur', $retour, 'Présence champ auteur'); |
$this->assertSame('Medik.', $retour['auteur'], "Valeur champ auteur = 'Medik.'"); |
|
$this->assertArrayHasKey('presence_Ga.code', $retour, 'Présence champ presence_Ga.code'.print_r($retour,true)); |
$this->assertSame('P', $retour['presence_Ga.code'], "Valeur champ presence_Ga.code = 'P'"); |
$this->assertArrayHasKey('presence_Co.code', $retour, 'Présence champ "presence_Co.code'); |
$this->assertSame('P', $retour['presence_Co.code'], "Valeur champ page = P"); |
} |
|
public function testNomSansCorrespondance() { |
$ressources = array('98940'); |
$parametres = array(); |
|
$this->retour = $this->consulter($ressources, $parametres); |
|
$this->abscenceAttribut('nom_retenu.id'); |
$this->abscenceAttribut('nom_retenu.href'); |
$this->verifierAttributValeur('nom_retenu', null); |
} |
|
private function verifierPresenceMessage($messageAttendu) { |
$this->assertEquals($messageAttendu, $this->retour); |
} |
|
private function verifierStructureListe() { |
$this->assertArrayHasKey('entete', $this->retour, "Présence attribut : entete"); |
$this->assertArrayHasKey('masque', $this->retour['entete'], "Présence attribut : entete>masque"); |
$this->assertArrayHasKey('depart', $this->retour['entete'], "Présence attribut : entete>depart"); |
$this->assertArrayHasKey('limite', $this->retour['entete'], "Présence attribut : entete>limite"); |
$this->assertArrayHasKey('total', $this->retour['entete'], "Présence attribut : entete>total"); |
$this->assertArrayHasKey('resultats', $this->retour, "Présence attribut : resultats"); |
} |
|
private function verifierMasque($masque) { |
$this->assertEquals($masque, $this->retour['entete']['masque'], "Attribut 'entete>masque' = '$masque'"); |
} |
|
private function verifierTotal($total) { |
$this->assertSame($total, $this->retour['entete']['total'], "Attribut 'entete>total' = $total"); |
} |
|
private function verifierNbreResultats($nbre) { |
$this->assertSame($nbre, count($this->retour['resultats']), "Nbre 'resultats' = 1"); |
} |
|
private function verifierLigneResultatsStructure($ligne) { |
$this->assertArrayHasKey($ligne, $this->retour['resultats'], "Presence attribut : resultats>$ligne".print_r($this->retour, true)); |
$this->assertArrayHasKey('nom_sci', $this->retour['resultats'][$ligne], "Presence attribut : resultats>$ligne>nom_sci".print_r($this->retour, true)); |
$this->assertArrayHasKey('retenu', $this->retour['resultats'][$ligne], "Presence attribut : resultats>$ligne>retenu".print_r($this->retour, true)); |
$this->assertArrayHasKey('href', $this->retour['resultats'][$ligne], "Presence attribut : resultats>$ligne>href".print_r($this->retour, true)); |
} |
|
private function presenceAttributDansResultat($ligne, $attribut) { |
$this->assertArrayHasKey($ligne, $this->retour['resultats'], "Présence ligne : resultats>$ligne"); |
$this->assertArrayHasKey($attribut, $this->retour['resultats'][$ligne], "Présence attribut : resultats>$ligne>$attribut"); |
} |
|
private function abscenceAttributDansResultat($ligne, $attribut) { |
$this->assertArrayNotHasKey($attribut, $this->retour['resultats'][$ligne], "Présence attribut : resultats>$ligne>$attribut"); |
} |
|
private function verifierResultatsLigneAttributValeur($ligne, $attribut, $valeur) { |
$this->assertSame($valeur, $this->retour['resultats'][$ligne][$attribut], "Attribut 'resultats>$ligne>$attribut' = $valeur"); |
} |
|
private function presenceAttribut($attribut) { |
$this->assertArrayHasKey($attribut, $this->retour); |
} |
|
private function abscenceAttribut($attribut) { |
$this->assertArrayNotHasKey($attribut, $this->retour); |
} |
|
private function verifierAttributValeur($attribut, $valeur) { |
$this->presenceAttribut($attribut); |
$this->assertSame($valeur, $this->retour[$attribut]); |
} |
} |
?> |