schemaorg.test in Schema.org 7
Tests for schemaorg.module.
File
schemaorg.testView source
<?php
/**
* @file
* Tests for schemaorg.module.
*/
/**
* Tests for schema.org namespaces declaration.
*/
class SchemaorgNamespaceTestCase extends DrupalWebTestCase {
public static function getInfo() {
return array(
'name' => 'Schema.org namespace',
'description' => 'Test the presence of the schema.org namespace in the page markup and in rdf_get_namespaces().',
'group' => 'Schema.org',
);
}
function setUp() {
parent::setUp('schemaorg');
}
/**
* Test getting RDF namesapces.
*/
function testSchemaorgNamespace() {
// Get all RDF namespaces.
$ns = rdf_get_namespaces();
$this
->assertEqual($ns['schema'], 'http://schema.org/', t('Schema.org namespace is returned by rdf_get_namespaces().'));
// Fetches the front page and extracts XML namespaces.
$this
->drupalGet('');
$xml = new SimpleXMLElement($this->content);
$ns = $xml
->getDocNamespaces();
$this
->assertEqual($ns['schema'], 'http://schema.org/', t('Schema.org namespace is present in the HTML document.'));
}
}
/**
* Schema.org Field UI tests.
*/
class SchemaorgFieldUIManageFieldsTestCase extends FieldUITestCase {
public static function getInfo() {
return array(
'name' => 'Field UI schema.org form elements',
'description' => 'Test the schema.org form element in the Field UI.',
'group' => 'Schema.org',
);
}
function setUp() {
parent::setUp('schemaorg', 'schemaorg_ui');
// Create random field name.
$this->field_label = $this
->randomName(8);
$this->field_name_input = strtolower($this
->randomName(8));
$this->field_name = 'field_' . $this->field_name_input;
}
/**
* Tests that schema.org terms are saved on the content type edit form.
*/
function testNodeTypeEditing() {
$admin_path = 'admin/structure/types/manage/page';
$type_element_id = 'edit-schemaorg-ui-type';
$type_element_name = 'schemaorg_ui_type';
$this
->drupalGet($admin_path);
$this
->assertFieldById($type_element_id, '', t('The schema.org type was empty.'));
// Check that the schema.org terms are saved.
$edit = array();
$edit[$type_element_name] = 'WebPage';
$this
->drupalPost($admin_path, $edit, t('Save content type'));
$this
->assertText("The content type Basic page has been updated.", t('The form was successfully submitted.'));
entity_info_cache_clear();
$rdf_mapping = rdf_mapping_load('node', 'page');
$rdf_mapping_type_expected = array(
'schema:WebPage',
'foaf:Document',
);
$this
->assertEqual($rdf_mapping['rdftype'], $rdf_mapping_type_expected, t('The schema.org type was correctly saved.'));
// Check that the schema.org terms shows up in the form
$this
->drupalGet($admin_path);
$this
->assertFieldById($type_element_id, 'WebPage', t('The schema.org type form element was displayed with the correct value.'));
// Check that the schema.org type can be emptied.
$edit = array();
$edit[$type_element_name] = '';
$this
->drupalPost($admin_path, $edit, t('Save content type'));
$this
->assertText("The content type Basic page has been updated.", t('The form was successfully submitted.'));
entity_info_cache_clear();
$rdf_mapping = rdf_mapping_load('node', 'page');
$rdf_mapping_type_expected = array(
1 => 'foaf:Document',
);
$this
->assertEqual($rdf_mapping['rdftype'], $rdf_mapping_type_expected, t('The schema.org type mapping was correctly saved.'));
}
/**
* Tests that schema.org property is correctly saved.
*/
function testFieldUIManageFields() {
// Create a test field and instance.
$field_name = 'test';
$field = array(
'field_name' => $field_name,
'type' => 'test_field',
);
field_create_field($field);
$instance = array(
'field_name' => $field_name,
'entity_type' => 'node',
'bundle' => $this->type,
);
field_create_instance($instance);
$langcode = LANGUAGE_NONE;
$admin_path = 'admin/structure/types/manage/' . $this->hyphen_type . '/fields/' . $field_name;
$element_id = 'edit-schemaorg-ui-field-property';
$element_name = 'schemaorg_ui_field_property';
$this
->drupalGet($admin_path);
$this
->assertFieldById($element_id, '', t('The schema.org property was empty.'));
// Check that the schema.org property is saved.
$edit = array(
$element_name => 'telephone',
);
$this
->drupalPost($admin_path, $edit, t('Save settings'));
$this
->assertText("Saved {$field_name} configuration", t('The form was successfully submitted.'));
$rdf_mapping = rdf_mapping_load('node', $this->type);
$rdf_mapping_title_expected = array(
'predicates' => array(
'schema:name',
),
);
$rdf_mapping_url_expected = array(
'predicates' => array(
'schema:url',
),
'type' => 'rel',
);
$rdf_mapping_field_expected = array(
'predicates' => array(
'schema:telephone',
),
);
$this
->assertEqual($rdf_mapping['title'], $rdf_mapping_title_expected, t('The schema.org title property was correctly saved.'));
$this
->assertEqual($rdf_mapping['url'], $rdf_mapping_url_expected, t('The schema.org url property was correctly saved.'));
$this
->assertEqual($rdf_mapping[$field_name], $rdf_mapping_field_expected, t('The schema.org property was correctly saved.'));
// Check that the schema.org property shows up in the form
$this
->drupalGet($admin_path);
$this
->assertFieldById($element_id, 'telephone', t('The schema.org property form element was displayed with the correct value.'));
// Check that the schema.org property can be emptied.
$edit = array(
$element_name => '',
);
$this
->drupalPost($admin_path, $edit, t('Save settings'));
$this
->assertText("Saved {$field_name} configuration", t('The form was successfully submitted.'));
entity_info_cache_clear();
$rdf_mapping = rdf_mapping_load('node', $this->type);
$rdf_mapping_title_expected = array(
'predicates' => array(),
);
$rdf_mapping_field_expected = array(
'predicates' => array(),
);
$this
->assertEqual($rdf_mapping['title'], $rdf_mapping_title_expected, t('The schema.org title mapping was correctly saved.'));
$this
->assertTrue(!isset($rdf_mapping['url']), t('The schema.org url mapping was correctly removed.'));
$this
->assertEqual($rdf_mapping[$field_name], $rdf_mapping_field_expected, t('The schema.org property was correctly saved.'));
}
/**
* Tests that schema.org property is correctly saved for advanced fields
* where the object is a resource (image, file, reference).
*/
function testFieldUIManageFieldsReference() {
// Create a test field and instance.
$field_name = 'test';
$field = array(
'field_name' => $field_name,
'type' => 'taxonomy_term_reference',
);
field_create_field($field);
$instance = array(
'field_name' => $field_name,
'entity_type' => 'node',
'bundle' => $this->type,
);
field_create_instance($instance);
$langcode = LANGUAGE_NONE;
$admin_path = 'admin/structure/types/manage/' . $this->hyphen_type . '/fields/' . $field_name;
$element_id = 'edit-schemaorg-ui-field-property';
$element_name = 'schemaorg_ui_field_property';
$this
->drupalGet($admin_path);
$this
->assertFieldById($element_id, '', t('The schema.org property was empty.'));
// Check that the schema.org property is saved.
$edit = array(
$element_name => 'telephone',
);
$this
->drupalPost($admin_path, $edit, t('Save settings'));
$this
->assertText("Saved {$field_name} configuration", t('The form was successfully submitted.'));
$rdf_mapping = rdf_mapping_load('node', $this->type);
$rdf_mapping_field_expected = array(
'predicates' => array(
'schema:telephone',
),
'type' => 'rel',
);
$this
->assertEqual($rdf_mapping[$field_name], $rdf_mapping_field_expected, t('The schema.org property was correctly saved.'));
// Check that the schema.org property shows up in the form
$this
->drupalGet($admin_path);
$this
->assertFieldById($element_id, 'telephone', t('The schema.org property form element was displayed with the correct value.'));
// Check that the schema.org property can be emptied.
$edit = array(
$element_name => '',
);
$this
->drupalPost($admin_path, $edit, t('Save settings'));
$this
->assertText("Saved {$field_name} configuration", t('The form was successfully submitted.'));
entity_info_cache_clear();
$rdf_mapping = rdf_mapping_load('node', $this->type);
$rdf_mapping_field_expected = array(
'predicates' => array(),
'type' => 'rel',
);
$this
->assertEqual($rdf_mapping[$field_name], $rdf_mapping_field_expected, t('The schema.org property was correctly saved.'));
}
}
Classes
Name | Description |
---|---|
SchemaorgFieldUIManageFieldsTestCase | Schema.org Field UI tests. |
SchemaorgNamespaceTestCase | Tests for schema.org namespaces declaration. |