'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 = 'Acer monspessulanum L. [1753, Sp. Pl., éd. 1 : 1056]'; $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 = "Lolium annuum Gilib. [1792, Exercit. Phytol., 2 : 520] [nom. invalid.]"; $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]); } } ?>