diff sites/all/modules/schemaorg/schemaorg.test @ 4:ce11bbd8f642

added modules
author danieleb <danielebarchiesi@me.com>
date Thu, 19 Sep 2013 10:38:44 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sites/all/modules/schemaorg/schemaorg.test	Thu Sep 19 10:38:44 2013 +0100
@@ -0,0 +1,228 @@
+<?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.'));
+  }
+}