Rev 880 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?phprequire_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]);}}?>