projet = 'bdtfx'; $this->service = 'noms'; } public function testVersionPrecise() { $ressources = array(); $parametres = array('version.projet' => '1.01'); $url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres); $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres); $this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url"); $this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url"); } public function testNomsIdVersionMultiple() { $ressources = array('71711'); $parametres = array('version.projet' => '*'); $url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres); $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres); $this->assertArrayHasKey('bdtfx_v1_01', $retour, "Le json ne contient pas d'attribut : bdtfx_v1_01.\nVoir : $url"); // $this->assertArrayHasKey('bdtfx_v1_02', $retour, "Le json ne contient pas d'attribut : bdtfx_v1_02.\nVoir : $url"); $this->assertArrayHasKey('bdtfx_v2_00', $retour, "Le json ne contient pas d'attribut : bdtfx_v2_00.\nVoir : $url"); $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'"); $this->assertEquals('71711', $retour['bdtfx_v2_00']['id'], "'bdtfx_v2_00' doit contenir un attribut 'id' avec la valeur '71711'"); } public function testNomsVersionMultiple() { $ressources = array(); $parametres = array('version.projet' => '*'); $url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres); $retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres); $attendu = "L'affichage de plusieurs versions ne fonctionne que pour les ressources de type /ressources/#id"; $message = "L'url :\n'$url'\n doit retourner un résultat de la forme :\n $attendu"; $this->assertEquals($attendu, $retour, $message); } public function testVersionInexistante() { $ressources = array(); $parametres = array('version.projet' => '99.00'); $url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres); $retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres); $attendu = "La table recherchée n'existe pas"; $message = "L'url :\n'$url'\n doit retourner un résultat de la forme :\n $attendu"; $this->assertEquals($attendu, $retour, $message); } public function testRechercheStricte() { $ressources = array(); $parametres = array( 'version.projet' => '1.01', 'recherche' => 'stricte', 'masque' => 'Acer'); $url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres); $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres); $this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url"); $this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url"); $this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url"); $this->assertCount(1, $retour['resultat'], "Le résultat devrait contenir une seule donnée. Voir : $url"); } public function testResultatChamps() { $ressources = array(); $parametres = array( 'version.projet' => '1.01', 'recherche' => 'stricte', 'masque.nn' => '182'); $url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres); $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres); $this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url"); $this->assertCount(1, $retour['resultat'], "Le résultat devrait contenir une seule donnée. Voir : $url"); $this->assertArrayNotHasKey('id', $retour['resultat']['182'], "Le tableau du résultat 182 ne doit pas contenir un champ 'id'. Voir : $url"); $this->assertArrayHasKey('retenu', $retour['resultat']['182'], "Le tableau du résultat 182 doit contenir un champ 'id'. Voir : $url"); $this->assertEquals('true', $retour['resultat']['182']['retenu'], "Le tableau du résultat 182 doit contenir un champ 'retenu' avec pour valeur 'true'. Voir : $url"); $this->assertArrayHasKey('nom_sci', $retour['resultat']['182'], "Le tableau du résultat 182 doit contenir un champ 'nom_sci'. Voir : $url"); $this->assertEquals('Acer monspessulanum', $retour['resultat']['182']['nom_sci'], "Le tableau du résultat 182 doit contenir un champ 'nom_sci' avec pour valeur 'Acer monspessulanum'. Voir : $url"); } public function testMasqueSg() { $ressources = array(); $parametres = array( 'version.projet' => '1.01', 'recherche' => 'stricte', 'masque.sg' => 'Asteraceae'); $url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres); $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres); $this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url"); $this->assertEquals('nom_supra_generique=Asteraceae', $retour['entete']['masque'], "L'attribut 'masque' de l'entête devrait valoir 'nom_supra_generique=Asteraceae'. Voir : $url"); $this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url"); $this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url"); $this->assertCount(1, $retour['resultat'], "Le résultat devrait contenir une seule donnée. Voir : $url"); } 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'); $url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres); $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres); $this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url"); $masque = 'genre=Allium&epithete_sp=carinatum&epithete_infra_sp=consimile&auteur=Gren.&annee=1855'; $message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url"; $this->assertEquals($masque, $retour['entete']['masque'], $message); $this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url"); $this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url"); $this->assertCount(1, $retour['resultat'], "Le résultat devrait contenir une seule donnée. Voir : $url"); } public function testMasqueNn() { $ressources = array(); $parametres = array( 'version.projet' => '1.01', 'recherche' => 'stricte', 'masque.nn' => '182'); $url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres); $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres); $this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url"); $masque = 'num_nom=182'; $message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url"; $this->assertEquals($masque, $retour['entete']['masque'], $message); $this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url"); $this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url"); $this->assertCount(1, $retour['resultat'], "Le résultat devrait contenir une seule donnée. Voir : $url"); $this->assertArrayNotHasKey('id', $retour['resultat']['182'], "Le tableau du résultat 182 doit contenir un champ 'id'. Voir : $url"); } public function testMasqueRg() { $ressources = array(); $parametres = array( 'version.projet' => '1.01', 'recherche' => 'stricte', 'masque.rg' => '180'); $url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres); $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres); $this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url"); $masque = 'rang=180'; $message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url"; $this->assertEquals($masque, $retour['entete']['masque'], $message); $this->assertEquals('210', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 210. Voir : $url"); } 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'); $url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres); $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres); $this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url"); $masque = 'num_nom=182'; $message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url"; $this->assertEquals($masque, $retour['entete']['masque'], $message); $this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url"); $this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat. Voir : $url"); $this->assertEquals('Acer monspessulanum L. [1753, Sp. Pl., éd. 1 : 1056]', $retour['resultat']['182']['nom_sci_complet'], "Le tableau du résultat 182 doit contenir un champ 'nom_sci' avec pour valeur 'Acer monspessulanum'. Voir : $url"); } 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'); $url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres); $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres); $this->assertArrayHasKey('entete', $retour, "Le json ne contient pas d'attribut : entete. Voir : $url"); $masque = 'num_nom=182'; $message = "L'attribut 'masque' de l'entête devrait valoir '$masque'. Voir : $url"; $this->assertEquals($masque, $retour['entete']['masque'], $message); $this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' de l'entête devrait valoir 1. Voir : $url"); $this->assertArrayHasKey('resultat', $retour, "Le json ne contient pas d'attribut : resultat.\nVoir : $url"); $attendu = 'Acer monspessulanum L. [1753, Sp. Pl., éd. 1 : 1056]'; $message = "Le tableau du résultat 182 doit contenir un champ 'nom_sci' avec pour valeur '$attendu'. Voir : $url"; $this->assertEquals($attendu, $retour['resultat']['182']['nom_sci_complet'], $message); } public function testListeNomsAvecParametreRetourChamps() { $ressources = array(); $parametres = array('version.projet' => '1.01', 'masque' => 'acer', 'retour.champs' => 'auteur,nom_retenu.*'); $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres); $this->assertArrayHasKey('auteur', $retour['resultat']['83587']); $this->assertArrayHasKey('nom_retenu.id', $retour['resultat']['83587']); $this->assertArrayHasKey('nom_retenu.href', $retour['resultat']['83587']); $this->assertArrayNotHasKey('nom_retenu', $retour['resultat']['83587']); } public function testNomsIdAvecParametreRetourChamps() { $ressources = array(1); $parametres = array('version.projet' => '1.01', 'retour.champs' => 'nom_retenu.*'); $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres); $this->assertArrayHasKey('nom_retenu.id', $retour); $this->assertArrayHasKey('nom_retenu.href', $retour); $this->assertArrayNotHasKey('nom_retenu', $retour); $this->assertArrayNotHasKey('auteur', $retour); } public function testListeNomAvecParametreNsStructureAuAnBibAd() { $ressources = array(); $parametres = array('version.projet' => '1.01', 'masque.nn' => '39607', 'ns.structure' => 'au,an,bib,ad'); $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres); $this->assertArrayHasKey('resultat', $retour); $this->assertArrayHasKey('39607', $retour['resultat']); $this->assertArrayHasKey('nom_sci', $retour['resultat']['39607']); $nomSciTxt = 'Lolium annuum Gilib. [1792, Exercit. Phytol., 2 : 520] [nom. invalid.]'; $this->assertEquals($nomSciTxt, $retour['resultat']['39607']['nom_sci_complet']); } public function testListeNomAvecParametreNsStructureAuAnBibAdEtNsFormatHtm() { $ressources = array(); $parametres = array('version.projet' => '1.01', 'masque.nn' => '39607', 'ns.structure' => 'au,an,bib,ad', 'ns.format' => 'htm'); $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres); $this->assertArrayHasKey('entete', $retour); $this->assertArrayHasKey('masque', $retour['entete']); $this->assertEquals('num_nom=39607', $retour['entete']['masque']); $this->assertArrayHasKey('resultat', $retour); $this->assertArrayHasKey('39607', $retour['resultat']); $this->assertArrayHasKey('nom_sci', $retour['resultat']['39607']); $nomSciHtml = "Lolium annuum Gilib. [1792, Exercit. Phytol., 2 : 520] [nom. invalid.]"; $this->assertEquals($nomSciHtml, $retour['resultat']['39607']['nom_sci_complet']); } public function testListeNomAvecParametreRetourChamps() { $ressources = array(); $parametres = array('version.projet' => '1.01', 'masque.nn' => '39607', 'retour.champs' => 'rang,auteur'); $url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres); $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres); $this->assertArrayHasKey('entete', $retour); $this->assertArrayHasKey('masque', $retour['entete']); $this->assertEquals('num_nom=39607', $retour['entete']['masque']); $this->assertArrayHasKey('resultat', $retour); $this->assertArrayHasKey('39607', $retour['resultat']); $this->assertArrayHasKey('rang.libelle', $retour['resultat']['39607']); // peut advenir en cas d'échec de la requête (HTTP ou SQL) sur les ontologies // vérifier la présence de la table ainsi que la valeur "bdd_table_ontologies" dans "config_bdtfx.ini" $this->assertEquals('Espèce', $retour['resultat']['39607']['rang.libelle'], "Erreur champ 'Espèce': Voir $url"); $this->assertArrayHasKey('auteur', $retour['resultat']['39607']); $this->assertEquals('Gilib.', $retour['resultat']['39607']['auteur']); } } ?>