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