Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 834 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
require_once dirname(__FILE__).'/../ServiceEflorePhpUnit.php';

class CommunOntologiesTest extends ServiceEflorePhpUnit {

        public function __construct() {
                $this->projet = 'eflore';
                $this->service = 'ontologies';
        }

        public function testRecherche() {
                $ressources = array();
                $parametres = array();
                $url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
                $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
                $this->assertNotEmpty($retour, 'données absentes');
                $this->assertArrayHasKey('total', $retour['entete'], "Le json ne contient pas d'attribut : total. Voir : $url");
                // au 20/08/2013, n°23 = Baznat
                $this->assertEquals('23', $retour['entete']['total'], "L'attribut 'total' devrait avoir la valeur '23'. Voir : $url");
                $this->assertArrayHasKey('nom', $retour['resultat'][1], "Le json ne contient pas d'attribut : nom. Voir : $url");
                $this->assertEquals('contactType', $retour['resultat'][1]['nom'], "L'attribut 'nom' devrait avoir la valeur 'contactType'. Voir : $url");
        }
        
        public function testMasqueCode() {
                $ressources = array();
                $parametres = array('masque.code' => 'o');
                $url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
                $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
                $this->assertNotEmpty($retour, 'données absentes');
                $this->assertArrayHasKey('total', $retour['entete'], "Le json ne contient pas d'attribut : total. Voir : $url");
                $this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' devrait avoir la valeur '1'. Voir : $url");
                $this->assertArrayHasKey('nom', $retour['resultat'][4], "Le json ne contient pas d'attribut : nom. Voir : $url");
                $this->assertEquals('organisations', $retour['resultat'][4]['nom'], "L'attribut 'nom' devrait avoir la valeur 'organisations'. Voir : $url");
        }
        
        public function testMasqueDescription() {
                $ressources = array();
                $parametres = array('masque.description' => '%contact');
                $url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
                $retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
                $this->assertNotEmpty($retour, 'données absentes');
                $this->assertArrayHasKey('total', $retour['entete'], "Le json ne contient pas d'attribut : total. Voir : $url");
                $this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' devrait avoir la valeur '1'. Voir : $url");
                $this->assertArrayHasKey('nom', $retour['resultat'][1], "Le json ne contient pas d'attribut : nom. Voir : $url");
                $this->assertEquals('contactType', $retour['resultat'][1]['nom'], "L'attribut 'nom' devrait avoir la valeur 'contactType'. Voir : $url");
        }

        // simple test ontologies bdnt
        // ce qui signifie les ontologies communes aux référentiels (bdtfx, bdtxa, isfan)
        public function testBdntSimpleNonExistante() {
                $url = '/bdnt' . ServiceEflorePhpUnit::creerUrl('ontologies', [ 'rangTaxo:-1' ] );
                $retour = $this->consulterBrut('ontologies', 'bdnt', [ 'rangTaxo:-1' ] );
                $this->assertContains($retour, 'Les données recherchées sont introuvables.');
        }

        public function testBdntSimpleExistante() {
                $url = '/bdnt' . ServiceEflorePhpUnit::creerUrl('ontologies', [ 'rangTaxo:70' ] );
                $retour = $this->consulterJson('ontologies', 'bdnt', [ 'rangTaxo:70' ] );
                $this->assertNotEmpty($retour, 'données absentes');
                foreach(['id', 'nom', 'code', 'complements', 'classe.id', 'classe', 'classe.href'] as $v) {
                        $this->assertArrayHasKey($v, $retour, "Le json ne contient pas l'attribut \"$v\". Voir : $url");
                }
                $this->assertEquals('15', $retour['id'], "L'attribut 'id' devrait avoir la valeur '15'. Voir : $url");
                $this->assertEquals('Cladus', $retour['nom'], "L'attribut 'nom' devrait avoir la valeur 'Cladus'. Voir : $url");
        }

        // Les ontologies supportent les requêtes multiples, eg: /bdnt/ontologies/rangTaxo:70,rangTaxo:-1
        // Les ontologies sont alors indexées par élément de requête (pour faciliter le travail du client)
        // Les résultats inexistants ne sont pas retournés
        public function testBdntMultiplesNonExistante() {
                $ressource = [ implode(',', [ 'rangTaxo:70', 'rangTaxo:-1' ]) ];
                $url = '/bdnt' . ServiceEflorePhpUnit::creerUrl('ontologies', $ressource );
                $retour = $this->consulterJson('ontologies', 'bdnt', $ressource );
                $this->assertNotEmpty($retour, 'données absentes');
                $this->assertCount(1, $retour, "Le retour ne devrait contenir que le seul élément valide. Voir : $url");
                $this->assertArrayHasKey('rangTaxo:70', $retour, "Le json ne contient pas d'élément rangTaxo:70. Voir : $url");
                foreach(['id', 'nom', 'code', 'complements', 'classe.id', 'classe', 'classe.href'] as $v) {
                        $this->assertArrayHasKey($v, $retour['rangTaxo:70'], "Le json ne contient pas l'attribut \"$v\". Voir : $url");
                }
                $this->assertEquals('15', $retour['rangTaxo:70']['id'], "L'attribut 'id' devrait avoir la valeur '15'. Voir : $url");
                $this->assertEquals('Cladus', $retour['rangTaxo:70']['nom'], "L'attribut 'nom' devrait avoir la valeur 'Cladus'. Voir : $url");
        }

        // Les ontologies supportent les requêtes multiples sur des code différents
        // eg: /bdnt/ontologies/rangTaxo:70,zoneGeo:YT
        public function testBdntMultiplesExistantes() {
                $ressource = [ implode(',', [ 'rangTaxo:70', 'zoneGeo:YT' ]) ];
                $url = '/bdnt' . ServiceEflorePhpUnit::creerUrl('ontologies', $ressource );
                $retour = $this->consulterJson('ontologies', 'bdnt', $ressource );
                $this->assertNotEmpty($retour, 'données absentes');
                $this->assertCount(2, $retour, "Le retour devrait contenir 2 éléments valides. Voir : $url");
                $this->assertArrayHasKey('rangTaxo:70', $retour, "Le json ne contient pas d'élément 'rangTaxo:70'. Voir : $url");
                $this->assertArrayHasKey('zoneGeo:YT', $retour, "Le json ne contient pas d'élément 'zoneGeo:YT'. Voir : $url");

                foreach($retour as $k => $e) {
                        foreach(['id', 'nom', 'code', 'classe.id', 'classe', 'classe.href'] as $v) {
                                $this->assertArrayHasKey($v, $e, "Le json ne contient pas l'attribut \"$v\" pour l'élément \"$k\". Voir : $url");
                        }
                }
                // n'existe pas pour "zoneGeo", pourquoi ?
                $this->assertArrayHasKey('complements', $retour['rangTaxo:70'], "Le json ne contient pas l'attribut \"$v\". Voir : $url");


                $this->assertEquals('15', $retour['rangTaxo:70']['id'], "L'attribut 'id' devrait avoir la valeur '15'. Voir : $url");
                $this->assertEquals('Cladus', $retour['rangTaxo:70']['nom'], "L'attribut 'nom' devrait avoir la valeur 'Cladus'. Voir : $url");
                $this->assertEquals('180', $retour['zoneGeo:YT']['id'], "L'attribut 'id' devrait avoir la valeur '180'. Voir : $url");
                $this->assertEquals('Mayotte', $retour['zoneGeo:YT']['nom'], "L'attribut 'nom' devrait avoir la valeur 'Mayotte'. Voir : $url");
        }
}