danielebarchiesi@4
|
1 <?php
|
danielebarchiesi@4
|
2
|
danielebarchiesi@4
|
3 /**
|
danielebarchiesi@4
|
4 * Test the RDF serialization functionality for nodes.
|
danielebarchiesi@4
|
5 */
|
danielebarchiesi@4
|
6 class RdfxNodeSerializationTestCase extends DrupalWebTestCase {
|
danielebarchiesi@4
|
7 public static function getInfo() {
|
danielebarchiesi@4
|
8 return array(
|
danielebarchiesi@4
|
9 'name' => 'RDF serialization for Nodes',
|
danielebarchiesi@4
|
10 'description' => 'Create a node and test its RDF serialization.',
|
danielebarchiesi@4
|
11 'group' => 'RDFx',
|
danielebarchiesi@4
|
12 );
|
danielebarchiesi@4
|
13 }
|
danielebarchiesi@4
|
14
|
danielebarchiesi@4
|
15 function setUp() {
|
danielebarchiesi@4
|
16 parent::setUp('rdfx');
|
danielebarchiesi@4
|
17
|
danielebarchiesi@4
|
18 // Set default storage backend.
|
danielebarchiesi@4
|
19 variable_set('field_storage_default', 'field_sql_storage');
|
danielebarchiesi@4
|
20
|
danielebarchiesi@4
|
21 // $field_name = drupal_strtolower('rdfx_text_test_field');
|
danielebarchiesi@4
|
22 // $field = array('field_name' => $field_name, 'type' => 'test_field', 'cardinality' => 4);
|
danielebarchiesi@4
|
23 // $field = field_create_field($field);
|
danielebarchiesi@4
|
24 // $field_id = $field['id'];
|
danielebarchiesi@4
|
25 // $instance = array(
|
danielebarchiesi@4
|
26 // 'field_name' => $field_name,
|
danielebarchiesi@4
|
27 // 'entity_type' => 'test_entity',
|
danielebarchiesi@4
|
28 // 'bundle' => 'article',
|
danielebarchiesi@4
|
29 // 'label' => $this->randomName() . '_label',
|
danielebarchiesi@4
|
30 // 'description' => $this->randomName() . '_description',
|
danielebarchiesi@4
|
31 // 'weight' => mt_rand(0, 127),
|
danielebarchiesi@4
|
32 // 'settings' => array(
|
danielebarchiesi@4
|
33 // 'test_instance_setting' => $this->randomName(),
|
danielebarchiesi@4
|
34 // ),
|
danielebarchiesi@4
|
35 // 'widget' => array(
|
danielebarchiesi@4
|
36 // 'type' => 'test_field_widget',
|
danielebarchiesi@4
|
37 // 'label' => 'Test Field',
|
danielebarchiesi@4
|
38 // 'settings' => array(
|
danielebarchiesi@4
|
39 // 'test_widget_setting' => $this->randomName(),
|
danielebarchiesi@4
|
40 // )
|
danielebarchiesi@4
|
41 // )
|
danielebarchiesi@4
|
42 // );
|
danielebarchiesi@4
|
43 // field_create_instance($this->instance);
|
danielebarchiesi@4
|
44
|
danielebarchiesi@4
|
45 $web_user = $this->drupalCreateUser(array('create article content', 'create page content'));
|
danielebarchiesi@4
|
46 $this->drupalLogin($web_user);
|
danielebarchiesi@4
|
47 }
|
danielebarchiesi@4
|
48
|
danielebarchiesi@4
|
49 /**
|
danielebarchiesi@4
|
50 * Create a "Article" node and ensure it serialized properly.
|
danielebarchiesi@4
|
51 */
|
danielebarchiesi@4
|
52 function testRdfxNodeCreation() {
|
danielebarchiesi@4
|
53 // Create a node.
|
danielebarchiesi@4
|
54 $edit = array();
|
danielebarchiesi@4
|
55 $langcode = LANGUAGE_NONE;
|
danielebarchiesi@4
|
56 $edit["title"] = $this->randomName(8);
|
danielebarchiesi@4
|
57 $edit["body[$langcode][0][value]"] = $this->randomName(16);
|
danielebarchiesi@4
|
58 $this->drupalPost('node/add/article', $edit, t('Save'));
|
danielebarchiesi@4
|
59
|
danielebarchiesi@4
|
60 // Check that the Article has been created.
|
danielebarchiesi@4
|
61 $this->assertRaw(t('!post %title has been created.', array('!post' => 'Article', '%title' => $edit["title"])), t('Article created.'));
|
danielebarchiesi@4
|
62
|
danielebarchiesi@4
|
63 // Check that the node exists in the database.
|
danielebarchiesi@4
|
64 $node = $this->drupalGetNodeByTitle($edit["title"]);
|
danielebarchiesi@4
|
65 $this->assertTrue($node, t('Node found in database.'));
|
danielebarchiesi@4
|
66
|
danielebarchiesi@4
|
67 // Expected base URI and graph URI.
|
danielebarchiesi@4
|
68 $base_uri = url('', array('absolute' => TRUE));
|
danielebarchiesi@4
|
69 $uri = url('node/' . $node->nid, array('absolute' => TRUE));
|
danielebarchiesi@4
|
70
|
danielebarchiesi@4
|
71 // Get the node as RDF.
|
danielebarchiesi@4
|
72 $g = rdfx_get_rdf_model('node', $node);
|
danielebarchiesi@4
|
73
|
danielebarchiesi@4
|
74 // Inspect the PHP object returned by ARC2.
|
danielebarchiesi@4
|
75 // Test object class.
|
danielebarchiesi@4
|
76 $this->assertTrue(get_class($g) == 'ARC2_Resource', t('Object is of type ARC2_Resource.'));
|
danielebarchiesi@4
|
77 // Test base uri.
|
danielebarchiesi@4
|
78 $this->assertTrue($g->base == $base_uri, t('Base uri set properly by ARC2.'));
|
danielebarchiesi@4
|
79 // Test graph uri.
|
danielebarchiesi@4
|
80 $this->assertTrue($g->uri == $uri, t('Graph uri set properly by ARC2.'));
|
danielebarchiesi@4
|
81
|
danielebarchiesi@4
|
82 // Test if core rdf namespaces are present.
|
danielebarchiesi@4
|
83 // @todo move this into a dedicate test for namespaces.
|
danielebarchiesi@4
|
84 $erroneous_core_ns = FALSE;
|
danielebarchiesi@4
|
85 foreach(rdf_rdf_namespaces() as $prefix => $ns) {
|
danielebarchiesi@4
|
86 if (!isset($g->ns[$prefix]) || $g->ns[$prefix] != $ns) {
|
danielebarchiesi@4
|
87 $erroneous_core_ns = TRUE;
|
danielebarchiesi@4
|
88 }
|
danielebarchiesi@4
|
89 }
|
danielebarchiesi@4
|
90 $this->assertFalse($erroneous_core_ns, t('Core RDF namespaces set properly by ARC2.'));
|
danielebarchiesi@4
|
91
|
danielebarchiesi@4
|
92 // Test RDF types in ARC2 RDF index.
|
danielebarchiesi@4
|
93 $o = array (
|
danielebarchiesi@4
|
94 'value'=> 'http://rdfs.org/sioc/ns#Item',
|
danielebarchiesi@4
|
95 'type'=> 'uri',
|
danielebarchiesi@4
|
96 );
|
danielebarchiesi@4
|
97 $this->assertTrue(in_array($o, $g->index[$uri]['http://www.w3.org/1999/02/22-rdf-syntax-ns#type']), t('sioc:Item type found in ARC2 index.'));
|
danielebarchiesi@4
|
98 $o = array (
|
danielebarchiesi@4
|
99 'value'=> 'http://xmlns.com/foaf/0.1/Document',
|
danielebarchiesi@4
|
100 'type'=> 'uri',
|
danielebarchiesi@4
|
101 );
|
danielebarchiesi@4
|
102 $this->assertTrue(in_array($o, $g->index[$uri]['http://www.w3.org/1999/02/22-rdf-syntax-ns#type']), t('foaf:Document type found in ARC2 index.'));
|
danielebarchiesi@4
|
103
|
danielebarchiesi@4
|
104 // Test title in ARC2 RDF index.
|
danielebarchiesi@4
|
105 $o = array (
|
danielebarchiesi@4
|
106 'value'=> $node->title,
|
danielebarchiesi@4
|
107 'type'=> 'literal',
|
danielebarchiesi@4
|
108 'datatype'=> '',
|
danielebarchiesi@4
|
109 );
|
danielebarchiesi@4
|
110 $this->assertTrue(in_array($o, $g->index[$uri]['http://purl.org/dc/terms/title']), t('dc:title value found in ARC2 index.'));
|
danielebarchiesi@4
|
111
|
danielebarchiesi@4
|
112 // Test date in ARC2 RDF index.
|
danielebarchiesi@4
|
113 $o = array (
|
danielebarchiesi@4
|
114 'value'=> date_iso8601($node->created),
|
danielebarchiesi@4
|
115 'type'=> 'literal',
|
danielebarchiesi@4
|
116 'datatype' => 'xsd:dateTime',
|
danielebarchiesi@4
|
117 );
|
danielebarchiesi@4
|
118 $this->assertTrue(in_array($o, $g->index[$uri]['http://purl.org/dc/terms/date']), t('dc:date value found in ARC2 index.'));
|
danielebarchiesi@4
|
119 $o = array (
|
danielebarchiesi@4
|
120 'value'=> date_iso8601($node->created),
|
danielebarchiesi@4
|
121 'type'=> 'literal',
|
danielebarchiesi@4
|
122 'datatype' => 'xsd:dateTime',
|
danielebarchiesi@4
|
123 );
|
danielebarchiesi@4
|
124 $this->assertTrue(in_array($o, $g->index[$uri]['http://purl.org/dc/terms/created']), t('dc:created value found in ARC2 index.'));
|
danielebarchiesi@4
|
125
|
danielebarchiesi@4
|
126 // Test comment_count in ARC2 RDF index.
|
danielebarchiesi@4
|
127 $o = array (
|
danielebarchiesi@4
|
128 'value'=> $node->comment_count,
|
danielebarchiesi@4
|
129 'type'=> 'literal',
|
danielebarchiesi@4
|
130 'datatype'=> 'xsd:integer',
|
danielebarchiesi@4
|
131 );
|
danielebarchiesi@4
|
132 $this->assertTrue(in_array($o, $g->index[$uri]['http://rdfs.org/sioc/ns#num_replies']), t('sioc:num_replies value found in ARC2 index.'));
|
danielebarchiesi@4
|
133 }
|
danielebarchiesi@4
|
134
|
danielebarchiesi@4
|
135 }
|