danielebarchiesi@4: 'RDF serialization for Nodes', danielebarchiesi@4: 'description' => 'Create a node and test its RDF serialization.', danielebarchiesi@4: 'group' => 'RDFx', danielebarchiesi@4: ); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: function setUp() { danielebarchiesi@4: parent::setUp('rdfx'); danielebarchiesi@4: danielebarchiesi@4: // Set default storage backend. danielebarchiesi@4: variable_set('field_storage_default', 'field_sql_storage'); danielebarchiesi@4: danielebarchiesi@4: // $field_name = drupal_strtolower('rdfx_text_test_field'); danielebarchiesi@4: // $field = array('field_name' => $field_name, 'type' => 'test_field', 'cardinality' => 4); danielebarchiesi@4: // $field = field_create_field($field); danielebarchiesi@4: // $field_id = $field['id']; danielebarchiesi@4: // $instance = array( danielebarchiesi@4: // 'field_name' => $field_name, danielebarchiesi@4: // 'entity_type' => 'test_entity', danielebarchiesi@4: // 'bundle' => 'article', danielebarchiesi@4: // 'label' => $this->randomName() . '_label', danielebarchiesi@4: // 'description' => $this->randomName() . '_description', danielebarchiesi@4: // 'weight' => mt_rand(0, 127), danielebarchiesi@4: // 'settings' => array( danielebarchiesi@4: // 'test_instance_setting' => $this->randomName(), danielebarchiesi@4: // ), danielebarchiesi@4: // 'widget' => array( danielebarchiesi@4: // 'type' => 'test_field_widget', danielebarchiesi@4: // 'label' => 'Test Field', danielebarchiesi@4: // 'settings' => array( danielebarchiesi@4: // 'test_widget_setting' => $this->randomName(), danielebarchiesi@4: // ) danielebarchiesi@4: // ) danielebarchiesi@4: // ); danielebarchiesi@4: // field_create_instance($this->instance); danielebarchiesi@4: danielebarchiesi@4: $web_user = $this->drupalCreateUser(array('create article content', 'create page content')); danielebarchiesi@4: $this->drupalLogin($web_user); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Create a "Article" node and ensure it serialized properly. danielebarchiesi@4: */ danielebarchiesi@4: function testRdfxNodeCreation() { danielebarchiesi@4: // Create a node. danielebarchiesi@4: $edit = array(); danielebarchiesi@4: $langcode = LANGUAGE_NONE; danielebarchiesi@4: $edit["title"] = $this->randomName(8); danielebarchiesi@4: $edit["body[$langcode][0][value]"] = $this->randomName(16); danielebarchiesi@4: $this->drupalPost('node/add/article', $edit, t('Save')); danielebarchiesi@4: danielebarchiesi@4: // Check that the Article has been created. danielebarchiesi@4: $this->assertRaw(t('!post %title has been created.', array('!post' => 'Article', '%title' => $edit["title"])), t('Article created.')); danielebarchiesi@4: danielebarchiesi@4: // Check that the node exists in the database. danielebarchiesi@4: $node = $this->drupalGetNodeByTitle($edit["title"]); danielebarchiesi@4: $this->assertTrue($node, t('Node found in database.')); danielebarchiesi@4: danielebarchiesi@4: // Expected base URI and graph URI. danielebarchiesi@4: $base_uri = url('', array('absolute' => TRUE)); danielebarchiesi@4: $uri = url('node/' . $node->nid, array('absolute' => TRUE)); danielebarchiesi@4: danielebarchiesi@4: // Get the node as RDF. danielebarchiesi@4: $g = rdfx_get_rdf_model('node', $node); danielebarchiesi@4: danielebarchiesi@4: // Inspect the PHP object returned by ARC2. danielebarchiesi@4: // Test object class. danielebarchiesi@4: $this->assertTrue(get_class($g) == 'ARC2_Resource', t('Object is of type ARC2_Resource.')); danielebarchiesi@4: // Test base uri. danielebarchiesi@4: $this->assertTrue($g->base == $base_uri, t('Base uri set properly by ARC2.')); danielebarchiesi@4: // Test graph uri. danielebarchiesi@4: $this->assertTrue($g->uri == $uri, t('Graph uri set properly by ARC2.')); danielebarchiesi@4: danielebarchiesi@4: // Test if core rdf namespaces are present. danielebarchiesi@4: // @todo move this into a dedicate test for namespaces. danielebarchiesi@4: $erroneous_core_ns = FALSE; danielebarchiesi@4: foreach(rdf_rdf_namespaces() as $prefix => $ns) { danielebarchiesi@4: if (!isset($g->ns[$prefix]) || $g->ns[$prefix] != $ns) { danielebarchiesi@4: $erroneous_core_ns = TRUE; danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: $this->assertFalse($erroneous_core_ns, t('Core RDF namespaces set properly by ARC2.')); danielebarchiesi@4: danielebarchiesi@4: // Test RDF types in ARC2 RDF index. danielebarchiesi@4: $o = array ( danielebarchiesi@4: 'value'=> 'http://rdfs.org/sioc/ns#Item', danielebarchiesi@4: 'type'=> 'uri', danielebarchiesi@4: ); danielebarchiesi@4: $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: $o = array ( danielebarchiesi@4: 'value'=> 'http://xmlns.com/foaf/0.1/Document', danielebarchiesi@4: 'type'=> 'uri', danielebarchiesi@4: ); danielebarchiesi@4: $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: danielebarchiesi@4: // Test title in ARC2 RDF index. danielebarchiesi@4: $o = array ( danielebarchiesi@4: 'value'=> $node->title, danielebarchiesi@4: 'type'=> 'literal', danielebarchiesi@4: 'datatype'=> '', danielebarchiesi@4: ); danielebarchiesi@4: $this->assertTrue(in_array($o, $g->index[$uri]['http://purl.org/dc/terms/title']), t('dc:title value found in ARC2 index.')); danielebarchiesi@4: danielebarchiesi@4: // Test date in ARC2 RDF index. danielebarchiesi@4: $o = array ( danielebarchiesi@4: 'value'=> date_iso8601($node->created), danielebarchiesi@4: 'type'=> 'literal', danielebarchiesi@4: 'datatype' => 'xsd:dateTime', danielebarchiesi@4: ); danielebarchiesi@4: $this->assertTrue(in_array($o, $g->index[$uri]['http://purl.org/dc/terms/date']), t('dc:date value found in ARC2 index.')); danielebarchiesi@4: $o = array ( danielebarchiesi@4: 'value'=> date_iso8601($node->created), danielebarchiesi@4: 'type'=> 'literal', danielebarchiesi@4: 'datatype' => 'xsd:dateTime', danielebarchiesi@4: ); danielebarchiesi@4: $this->assertTrue(in_array($o, $g->index[$uri]['http://purl.org/dc/terms/created']), t('dc:created value found in ARC2 index.')); danielebarchiesi@4: danielebarchiesi@4: // Test comment_count in ARC2 RDF index. danielebarchiesi@4: $o = array ( danielebarchiesi@4: 'value'=> $node->comment_count, danielebarchiesi@4: 'type'=> 'literal', danielebarchiesi@4: 'datatype'=> 'xsd:integer', danielebarchiesi@4: ); danielebarchiesi@4: $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: } danielebarchiesi@4: danielebarchiesi@4: }