Subversion Repositories eFlore/Projets.eflore-projets

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
240 delphine 1
<?php
2
require_once dirname(__FILE__).'/../ServiceEflorePhpUnit.php';
3
 
4
class CommunOntologiesTest extends ServiceEflorePhpUnit {
5
 
6
	public function __construct() {
783 raphael 7
		$this->projet = 'eflore';
240 delphine 8
		$this->service = 'ontologies';
9
	}
10
 
11
	public function testRecherche() {
12
		$ressources = array();
13
		$parametres = array();
790 raphael 14
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
15
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
240 delphine 16
		$this->assertNotEmpty($retour, 'données absentes');
17
		$this->assertArrayHasKey('total', $retour['entete'], "Le json ne contient pas d'attribut : total. Voir : $url");
783 raphael 18
		// au 20/08/2013, n°23 = Baznat
19
		$this->assertEquals('23', $retour['entete']['total'], "L'attribut 'total' devrait avoir la valeur '23'. Voir : $url");
240 delphine 20
		$this->assertArrayHasKey('nom', $retour['resultat'][1], "Le json ne contient pas d'attribut : nom. Voir : $url");
21
		$this->assertEquals('contactType', $retour['resultat'][1]['nom'], "L'attribut 'nom' devrait avoir la valeur 'contactType'. Voir : $url");
22
	}
23
 
24
	public function testMasqueCode() {
25
		$ressources = array();
26
		$parametres = array('masque.code' => 'o');
790 raphael 27
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
28
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
240 delphine 29
		$this->assertNotEmpty($retour, 'données absentes');
30
		$this->assertArrayHasKey('total', $retour['entete'], "Le json ne contient pas d'attribut : total. Voir : $url");
31
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' devrait avoir la valeur '1'. Voir : $url");
32
		$this->assertArrayHasKey('nom', $retour['resultat'][4], "Le json ne contient pas d'attribut : nom. Voir : $url");
33
		$this->assertEquals('organisations', $retour['resultat'][4]['nom'], "L'attribut 'nom' devrait avoir la valeur 'organisations'. Voir : $url");
34
	}
35
 
36
	public function testMasqueDescription() {
37
		$ressources = array();
38
		$parametres = array('masque.description' => '%contact');
790 raphael 39
		$url = ServiceEflorePhpUnit::creerUrl($this->service, $ressources, $parametres);
40
		$retour = $this->consulterJson($this->service, $this->projet, $ressources, $parametres);
240 delphine 41
		$this->assertNotEmpty($retour, 'données absentes');
42
		$this->assertArrayHasKey('total', $retour['entete'], "Le json ne contient pas d'attribut : total. Voir : $url");
43
		$this->assertEquals('1', $retour['entete']['total'], "L'attribut 'total' devrait avoir la valeur '1'. Voir : $url");
44
		$this->assertArrayHasKey('nom', $retour['resultat'][1], "Le json ne contient pas d'attribut : nom. Voir : $url");
45
		$this->assertEquals('contactType', $retour['resultat'][1]['nom'], "L'attribut 'nom' devrait avoir la valeur 'contactType'. Voir : $url");
46
	}
834 raphael 47
 
48
	// simple test ontologies bdnt
49
	// ce qui signifie les ontologies communes aux référentiels (bdtfx, bdtxa, isfan)
50
	public function testBdntSimpleNonExistante() {
51
		$url = '/bdnt' . ServiceEflorePhpUnit::creerUrl('ontologies', [ 'rangTaxo:-1' ] );
52
		$retour = $this->consulterBrut('ontologies', 'bdnt', [ 'rangTaxo:-1' ] );
53
		$this->assertContains($retour, 'Les données recherchées sont introuvables.');
54
	}
55
 
56
	public function testBdntSimpleExistante() {
57
		$url = '/bdnt' . ServiceEflorePhpUnit::creerUrl('ontologies', [ 'rangTaxo:70' ] );
58
		$retour = $this->consulterJson('ontologies', 'bdnt', [ 'rangTaxo:70' ] );
59
		$this->assertNotEmpty($retour, 'données absentes');
60
		foreach(['id', 'nom', 'code', 'complements', 'classe.id', 'classe', 'classe.href'] as $v) {
61
			$this->assertArrayHasKey($v, $retour, "Le json ne contient pas l'attribut \"$v\". Voir : $url");
62
		}
63
		$this->assertEquals('15', $retour['id'], "L'attribut 'id' devrait avoir la valeur '15'. Voir : $url");
64
		$this->assertEquals('Cladus', $retour['nom'], "L'attribut 'nom' devrait avoir la valeur 'Cladus'. Voir : $url");
65
	}
66
 
67
	// Les ontologies supportent les requêtes multiples, eg: /bdnt/ontologies/rangTaxo:70,rangTaxo:-1
68
	// Les ontologies sont alors indexées par élément de requête (pour faciliter le travail du client)
69
	// Les résultats inexistants ne sont pas retournés
70
	public function testBdntMultiplesNonExistante() {
71
		$ressource = [ implode(',', [ 'rangTaxo:70', 'rangTaxo:-1' ]) ];
72
		$url = '/bdnt' . ServiceEflorePhpUnit::creerUrl('ontologies', $ressource );
73
		$retour = $this->consulterJson('ontologies', 'bdnt', $ressource );
74
		$this->assertNotEmpty($retour, 'données absentes');
75
		$this->assertEquals(1, count($retour), "Le retour ne devrait contenir que le seul élément valide. Voir : $url");
76
		$this->assertArrayHasKey('rangTaxo:70', $retour, "Le json ne contient pas d'élément rangTaxo:70. Voir : $url");
77
		foreach(['id', 'nom', 'code', 'complements', 'classe.id', 'classe', 'classe.href'] as $v) {
78
			$this->assertArrayHasKey($v, $retour['rangTaxo:70'], "Le json ne contient pas l'attribut \"$v\". Voir : $url");
79
		}
80
		$this->assertEquals('15', $retour['rangTaxo:70']['id'], "L'attribut 'id' devrait avoir la valeur '15'. Voir : $url");
81
		$this->assertEquals('Cladus', $retour['rangTaxo:70']['nom'], "L'attribut 'nom' devrait avoir la valeur 'Cladus'. Voir : $url");
82
	}
83
 
84
	// Les ontologies supportent les requêtes multiples sur des code différents
85
	// eg: /bdnt/ontologies/rangTaxo:70,zoneGeo:YT
86
	public function testBdntMultiplesExistantes() {
87
		$ressource = [ implode(',', [ 'rangTaxo:70', 'zoneGeo:YT' ]) ];
88
		$url = '/bdnt' . ServiceEflorePhpUnit::creerUrl('ontologies', $ressource );
89
		$retour = $this->consulterJson('ontologies', 'bdnt', $ressource );
90
		$this->assertNotEmpty($retour, 'données absentes');
91
		$this->assertEquals(2, count($retour), "Le retour devrait contenir 2 éléments valides. Voir : $url");
92
		$this->assertArrayHasKey('rangTaxo:70', $retour, "Le json ne contient pas d'élément 'rangTaxo:70'. Voir : $url");
93
		$this->assertArrayHasKey('zoneGeo:YT', $retour, "Le json ne contient pas d'élément 'zoneGeo:YT'. Voir : $url");
94
 
95
		foreach($retour as $k => $e) {
96
			foreach(['id', 'nom', 'code', 'classe.id', 'classe', 'classe.href'] as $v) {
97
				$this->assertArrayHasKey($v, $e, "Le json ne contient pas l'attribut \"$v\" pour l'élément \"$k\". Voir : $url");
98
			}
99
		}
100
		// n'existe pas pour "zoneGeo", pourquoi ?
101
		$this->assertArrayHasKey('complements', $retour['rangTaxo:70'], "Le json ne contient pas l'attribut \"$v\". Voir : $url");
102
 
103
 
104
		$this->assertEquals('15', $retour['rangTaxo:70']['id'], "L'attribut 'id' devrait avoir la valeur '15'. Voir : $url");
105
		$this->assertEquals('Cladus', $retour['rangTaxo:70']['nom'], "L'attribut 'nom' devrait avoir la valeur 'Cladus'. Voir : $url");
106
		$this->assertEquals('180', $retour['zoneGeo:YT']['id'], "L'attribut 'id' devrait avoir la valeur '180'. Voir : $url");
107
		$this->assertEquals('Mayotte', $retour['zoneGeo:YT']['nom'], "L'attribut 'nom' devrait avoir la valeur 'Mayotte'. Voir : $url");
108
	}
240 delphine 109
}