Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

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

class NomsListeFournierTest extends ServicePhpUnit {

        private $listeUrl = 'http://localhost/service:eflore:0.2/fournier/noms';
        private $nomDetailSqueletteUrl = 'http://localhost/service:eflore:0.2/fournier/noms/%s';
        private $nbreNom = 168;

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

        public function testSansParametres() {
                $ressources = array();
                $parametres = array();

                $retour = $this->consulter($ressources, $parametres);
                $this->assertArrayHasKey('entete', $retour, 'Présence champ entete');
                $this->assertArrayHasKey('masque', $retour['entete'], 'Présence champ entete>masque');
                $this->assertEmpty($retour['entete']['masque'], 'Valeur champ entete>masque = vide');
                $this->assertArrayHasKey('depart', $retour['entete'], 'Présence champ entete>depart');
                $this->assertSame(0, $retour['entete']['depart'], 'Valeur champ entete>depart = 0');
                $this->assertArrayHasKey('limite', $retour['entete'], 'Présence champ entete>limite');
                $this->assertSame(100, $retour['entete']['limite'], 'Valeur champ entete>limite = 100');
                $this->assertArrayHasKey('total', $retour['entete'], 'Présence champ entete>total');
                $this->assertNotEquals(0, $retour['entete']['total'], 'Valeur champ entete>total != 0');
                $this->assertSame($this->nbreNom, $retour['entete']['total'], 'Valeur champ entete>total = 168');
                $this->assertArrayNotHasKey('href.precedent', $retour['entete'], "Abscence champ entete>href.precedent");
                $this->assertArrayHasKey('href.suivant', $retour['entete'], "Présence champ entete>href.suivant");
                $url = $this->listeUrl.'?navigation.depart=100&navigation.limite=100';
                $this->assertEquals($url, $retour['entete']['href.suivant'], "Valeur champ entete>href.suivant = $url");

                $this->assertArrayHasKey('resultats', $retour, 'Valeur champ resultats');
                $this->assertCount(100, $retour['resultats'], 'Nombre de valeurs dans resultats = 100');
                $this->assertArrayNotHasKey('1', $retour['resultats'], 'Abscence champ resultats>1 car trie sur nom_sci ASC');
                $this->assertArrayHasKey('2', $retour['resultats'], 'Présence champ resultats>2');
                $this->assertArrayHasKey('nom_sci', $retour['resultats']['2'], 'Présence champ resultats>2>nom_sci');
                $this->assertCount(3, $retour['resultats']['2'], 'Nombre de valeurs dans resultats>2 = 3');
                $this->assertEquals('Cryptogames', $retour['resultats']['2']['nom_sci'], 'Test valeur champ resultats>2>nom_sci = Plantae');
                $this->assertArrayHasKey('retenu', $retour['resultats']['2'], 'Présence champ resultats>2>retenu');
                $this->assertTrue($retour['resultats']['2']['retenu'], 'Valeur champ resultats>2>retenu = true');
                $this->assertArrayHasKey('href', $retour['resultats']['2'], 'Présence champ resultats>2>href');
                $url = sprintf($this->nomDetailSqueletteUrl, '2');
                $this->assertEquals($url, $retour['resultats']['2']['href'], "Valeur champ resultats>2>nom_sci = $url");
        }

        public function testParametreNavigationDepart100() {
                $ressources = array();
                $parametres = array('navigation.depart' => 100);

                $retour = $this->consulter($ressources, $parametres);

                $this->assertArrayHasKey('depart', $retour['entete'], 'Présence champ entete>depart');
                $this->assertSame(100, $retour['entete']['depart'], 'Valeur champ entete>depart = 100');
                $this->assertArrayHasKey('limite', $retour['entete'], 'Présence champ entete>limite');
                $this->assertSame(100, $retour['entete']['limite'], 'Valeur champ entete>limite = 100');
                $this->assertSame($this->nbreNom, $retour['entete']['total'], 'Valeur champ entete>total = 168');
                $this->assertArrayNotHasKey('href.suivant', $retour['entete'], "Abscence champ entete>href.suivant");
                $this->assertArrayHasKey('href.precedent', $retour['entete'], "Présence champ entete>href.precedent");
                $url = $this->listeUrl.'?navigation.depart=0&navigation.limite=100';
                $this->assertEquals($url, $retour['entete']['href.precedent'], "Valeur champ entete>href.precedent = $url");
        }

        public function testRechercheDefautMasque() {
                $ressources = array();
                $parametres = array('masque' => 'Lycopodium');

                $retour = $this->consulter($ressources, $parametres);

                $this->assertArrayHasKey('masque', $retour['entete'], 'Présence champ entete>masque');
                $this->assertEquals('nom_sci=Lycopodium', $retour['entete']['masque'], 'Valeur champ entete>masque = "nom_sci=Lycopodium"');
                $this->assertCount(1, $retour['resultats'], 'Nombre de valeurs dans resultats = 1');
                $this->assertEquals('Lycopodium', $retour['resultats']['5']['nom_sci'], 'Test valeur champ resultats>5>nom_sci = Lycopodium');
        }

        public function testRechercheStricteMasque() {
                $ressources = array();
                $parametres = array('masque' => 'Lycopodium', 'recherche' => 'stricte');

                $retour = $this->consulter($ressources, $parametres);

                $this->assertArrayHasKey('masque', $retour['entete'], 'Présence champ entete>masque');
                $this->assertEquals('nom_sci=Lycopodium', $retour['entete']['masque'], 'Valeur champ entete>masque = "nom_sci=Lycopodium"');
                $this->assertCount(1, $retour['resultats'], 'Nombre de valeurs dans resultats = 1');
                $this->assertEquals('Lycopodium', $retour['resultats']['5']['nom_sci'], 'Test valeur champ resultats>5>nom_sci = Lycopodium');
        }

        public function testerRechercheEtendueMasque() {
                $ressources = array();
                $parametres = array('masque' => 'Lycopodium', 'recherche' => 'etendue');

                $retour = $this->consulter($ressources, $parametres);

                $this->assertArrayHasKey('masque', $retour['entete'], 'Présence champ entete>masque');
                $this->assertEquals('nom_sci=Lycopodium%', $retour['entete']['masque'], 'Valeur champ entete>masque = "nom_sci=Lycopodium%"');
                $this->assertCount(11, $retour['resultats'], 'Nombre de valeurs dans resultats = 10');
                foreach ($retour['resultats'] as $nom) {
                        $this->assertContains('Lycopodium', $nom['nom_sci'], 'Test valeur champ resultats>...>nom_sci contient Lycopodium');
                }
        }

        public function testerRechercheFloueMasque() {
                $ressources = array();
                $parametres = array('masque' => 'Licopodium', 'recherche' => 'floue');

                $retour = $this->consulter($ressources, $parametres);

                $this->assertArrayHasKey('masque', $retour['entete'], 'Présence champ entete>masque');
                $this->assertEquals('nom_sci=Licopodium', $retour['entete']['masque'], 'Valeur champ entete>masque = "nom_sci=Licopodium"');
                $this->assertCount(1, $retour['resultats'], 'Nombre de valeurs dans resultats = 1');
                $this->assertContains('Lycopodium', $retour['resultats'][5]['nom_sci'], 'Test valeur champ resultats>5>nom_sci contient Lycopodium');
        }

        public function testRechercheDefautMasqueSg() {
                $ressources = array();
                $parametres = array('masque.sg' => 'Lycopodiaceae');

                $retour = $this->consulter($ressources, $parametres);

                $this->assertArrayHasKey('masque', $retour['entete'], 'Présence champ entete>masque');
                $this->assertEquals('nom_supra_generique=Lycopodiaceae', $retour['entete']['masque'], 'Valeur champ entete>masque = "nom_sci=Lycopodiaceae"');
                $this->assertCount(1, $retour['resultats'], 'Nombre de valeurs dans resultats = 1');
                $this->assertEquals('Lycopodiaceae', $retour['resultats']['4']['nom_sci'], 'Test valeur champ resultats>4>nom_sci = Lycopodiaceae');
        }

        public function testRechercheDefautMasqueGen() {
                $ressources = array();
                $parametres = array('masque.gen' => 'Lycopodium');

                $retour = $this->consulter($ressources, $parametres);

                $this->assertArrayHasKey('masque', $retour['entete'], 'Présence champ entete>masque');
                $this->assertEquals('genre=Lycopodium', $retour['entete']['masque'], 'Valeur champ entete>masque = "genre=Lycopodium"');
                $this->assertCount(11, $retour['resultats'], 'Nombre de valeurs dans resultats = 11');
                foreach ($retour['resultats'] as $id => $info) {
                        $this->assertContains('Lycopodium', $info['nom_sci'], "Test valeur champ resultats>$id>nom_sci contient Lycopodium");
                }
        }

        public function testRechercheDefautMasqueSp() {
                $ressources = array();
                $parametres = array('masque.sp' => 'alpinum');

                $retour = $this->consulter($ressources, $parametres);

                $this->assertArrayHasKey('masque', $retour['entete'], 'Présence champ entete>masque');
                $this->assertEquals('epithete_sp=alpinum', $retour['entete']['masque'], 'Valeur champ entete>masque = "epithete_sp=alpinum"');
                $this->assertCount(2, $retour['resultats'], 'Nombre de valeurs dans resultats = 2');
                foreach ($retour['resultats'] as $id => $info) {
                        $this->assertContains('alpinum', $info['nom_sci'], "Test valeur champ resultats>$id>nom_sci contient alpinum");
                }
        }

        public function testRechercheEtendueMasqueSg() {
                $ressources = array();
                $parametres = array('masque.sg' => 'Lycopodiaceae', 'recherche' => 'etendue');

                $retour = $this->consulter($ressources, $parametres);

                $this->assertArrayHasKey('masque', $retour['entete'], 'Présence champ entete>masque');
                $this->assertEquals('nom_supra_generique=Lycopodiaceae%', $retour['entete']['masque'], 'Valeur champ entete>masque = "nom_sci=Lycopodiaceae"');
                $this->assertCount(1, $retour['resultats'], 'Nombre de valeurs dans resultats = 1');
                $this->assertEquals('Lycopodiaceae', $retour['resultats']['4']['nom_sci'], 'Test valeur champ resultats>4>nom_sci = Lycopodiaceae');
        }

        public function testRechercheEtendueMasqueGen() {
                $ressources = array();
                $parametres = array('masque.gen' => 'Lycopodium', 'recherche' => 'etendue');

                $retour = $this->consulter($ressources, $parametres);

                $this->assertArrayHasKey('masque', $retour['entete'], 'Présence champ entete>masque');
                $this->assertEquals('genre=Lycopodium%', $retour['entete']['masque'], 'Valeur champ entete>masque = "genre=Lycopodium"');
                $this->assertCount(11, $retour['resultats'], 'Nombre de valeurs dans resultats = 11');
                foreach ($retour['resultats'] as $id => $info) {
                        $this->assertContains('Lycopodium', $info['nom_sci'], "Test valeur champ resultats>$id>nom_sci contient Lycopodium");
                }
        }

        public function testRechercheEtendueMasqueSp() {
                $ressources = array();
                $parametres = array('masque.sp' => 'alpinum', 'recherche' => 'etendue');

                $retour = $this->consulter($ressources, $parametres);

                $this->assertArrayHasKey('masque', $retour['entete'], 'Présence champ entete>masque');
                $this->assertEquals('epithete_sp=alpinum%', $retour['entete']['masque'], 'Valeur champ entete>masque = "epithete_sp=alpinum"');
                $this->assertCount(2, $retour['resultats'], 'Nombre de valeurs dans resultats = 2');
                foreach ($retour['resultats'] as $id => $info) {
                        $this->assertContains('alpinum', $info['nom_sci'], "Test valeur champ resultats>$id>nom_sci contient alpinum");
                }
        }

        public function testRetourChamps() {
                $ressources = array();
                $parametres = array('retour.champs' => 'nom_retenu');

                $retour = $this->consulter($ressources, $parametres);

                $this->assertArrayHasKey('href.suivant', $retour['entete'], "Présence champ entete>href.suivant");
                $url = $this->listeUrl.'?retour.champs=nom_retenu&navigation.depart=100&navigation.limite=100';
                $this->assertEquals($url, $retour['entete']['href.suivant'], "Valeur champ entete>href.suivant = $url");
                foreach ($retour['resultats'] as $id => $info) {
                        $this->assertArrayHasKey('nom_retenu', $info, "Présence champ resultats>$id>nom_retenu ");
                }
        }

}
?>