danielebarchiesi@4
|
1 <?php
|
danielebarchiesi@4
|
2
|
danielebarchiesi@4
|
3 /**
|
danielebarchiesi@4
|
4 * @file
|
danielebarchiesi@4
|
5 * Tests for the sparql module.
|
danielebarchiesi@4
|
6 *
|
danielebarchiesi@4
|
7 */
|
danielebarchiesi@4
|
8
|
danielebarchiesi@4
|
9 //////////////////////////////////////////////////////////////////////////////
|
danielebarchiesi@4
|
10 // SPARQL unit tests (CIA Factbook)
|
danielebarchiesi@4
|
11
|
danielebarchiesi@4
|
12 class SPARQL_CIAFactbookTestCase extends DrupalWebTestCase {
|
danielebarchiesi@4
|
13 const ENDPOINT = 'http://www4.wiwiss.fu-berlin.de/factbook/sparql';
|
danielebarchiesi@4
|
14 const COUNTRY = 'http://www4.wiwiss.fu-berlin.de/factbook/ns#Country';
|
danielebarchiesi@4
|
15
|
danielebarchiesi@4
|
16 public function getInfo() {
|
danielebarchiesi@4
|
17 return array(
|
danielebarchiesi@4
|
18 'name' => t('CIA Factbook'),
|
danielebarchiesi@4
|
19 'description' => t('Executes queries against the CIA Factbook\'s SPARQL endpoint, attempting to parse resultsets in both JSON and XML format.'),
|
danielebarchiesi@4
|
20 'group' => t('SPARQL'),
|
danielebarchiesi@4
|
21 );
|
danielebarchiesi@4
|
22 }
|
danielebarchiesi@4
|
23
|
danielebarchiesi@4
|
24 function setup() {
|
danielebarchiesi@4
|
25 parent::setup('rdf', 'sparql');
|
danielebarchiesi@4
|
26 }
|
danielebarchiesi@4
|
27
|
danielebarchiesi@4
|
28 public function test_json_query() {
|
danielebarchiesi@4
|
29 $this->query_classes(t('JSON'), array('format' => 'application/sparql-results+json', 'output' => 'json'));
|
danielebarchiesi@4
|
30 }
|
danielebarchiesi@4
|
31
|
danielebarchiesi@4
|
32 public function test_xml_query() {
|
danielebarchiesi@4
|
33 $this->query_classes(t('XML'), array('format' => 'application/sparql-results+xml', 'output' => 'xml'));
|
danielebarchiesi@4
|
34 }
|
danielebarchiesi@4
|
35
|
danielebarchiesi@4
|
36 private function query_classes($format, array $options = array()) {
|
danielebarchiesi@4
|
37 $results = $this->query('SELECT DISTINCT ?class WHERE { [] a ?class } ORDER BY ?class', $options);
|
danielebarchiesi@4
|
38 $this->assertTrue(empty($this->errors), t('@format: No errors', array('@format' => $format)));
|
danielebarchiesi@4
|
39 $this->assertNotNull($results, t('@format: Has results', array('@format' => $format)));
|
danielebarchiesi@4
|
40 $this->assertEqual(count($results), 1, t('@format: Has one result', array('@format' => $format)));
|
danielebarchiesi@4
|
41 $this->assertTrue(isset($results[0]['class']), t('@format: Contains ?class column', array('@format' => $format)));
|
danielebarchiesi@4
|
42 $this->assertEqual((string)$results[0]['class'], self::COUNTRY, t('@format: Correct answer', array('@format' => $format)));
|
danielebarchiesi@4
|
43 }
|
danielebarchiesi@4
|
44
|
danielebarchiesi@4
|
45 private function query($query, array $options = array()) {
|
danielebarchiesi@4
|
46 $this->errors = array();
|
danielebarchiesi@4
|
47 return sparql_query($query, array_merge(array('endpoint' => self::ENDPOINT), $options), $this->errors);
|
danielebarchiesi@4
|
48 }
|
danielebarchiesi@4
|
49 }
|