annotate sites/all/modules/entityreference/tests/entityreference.admin.test @ 11:b0ee71395280

deleted .DS_Store files
author danieleb <danielebarchiesi@me.com>
date Mon, 28 Oct 2013 16:12:13 +0000
parents ce11bbd8f642
children
rev   line source
danielebarchiesi@4 1 <?php
danielebarchiesi@4 2
danielebarchiesi@4 3 /**
danielebarchiesi@4 4 * @file
danielebarchiesi@4 5 * Contains EntityReferenceHandlersTestCase
danielebarchiesi@4 6 */
danielebarchiesi@4 7
danielebarchiesi@4 8 /**
danielebarchiesi@4 9 * Test for Entity Reference admin UI.
danielebarchiesi@4 10 */
danielebarchiesi@4 11 class EntityReferenceAdminTestCase extends DrupalWebTestCase {
danielebarchiesi@4 12 public static function getInfo() {
danielebarchiesi@4 13 return array(
danielebarchiesi@4 14 'name' => 'Entity Reference UI',
danielebarchiesi@4 15 'description' => 'Tests for the administrative UI.',
danielebarchiesi@4 16 'group' => 'Entity Reference',
danielebarchiesi@4 17 );
danielebarchiesi@4 18 }
danielebarchiesi@4 19
danielebarchiesi@4 20 public function setUp() {
danielebarchiesi@4 21 parent::setUp(array('field_ui', 'entity', 'ctools', 'entityreference'));
danielebarchiesi@4 22
danielebarchiesi@4 23 // Create test user.
danielebarchiesi@4 24 $this->admin_user = $this->drupalCreateUser(array('access content', 'administer content types'));
danielebarchiesi@4 25 $this->drupalLogin($this->admin_user);
danielebarchiesi@4 26
danielebarchiesi@4 27 // Create content type, with underscores.
danielebarchiesi@4 28 $type_name = strtolower($this->randomName(8)) . '_test';
danielebarchiesi@4 29 $type = $this->drupalCreateContentType(array('name' => $type_name, 'type' => $type_name));
danielebarchiesi@4 30 $this->type = $type->type;
danielebarchiesi@4 31 // Store a valid URL name, with hyphens instead of underscores.
danielebarchiesi@4 32 $this->hyphen_type = str_replace('_', '-', $this->type);
danielebarchiesi@4 33 }
danielebarchiesi@4 34
danielebarchiesi@4 35 protected function assertFieldSelectOptions($name, $expected_options) {
danielebarchiesi@4 36 $xpath = $this->buildXPathQuery('//select[@name=:name]', array(':name' => $name));
danielebarchiesi@4 37 $fields = $this->xpath($xpath);
danielebarchiesi@4 38 if ($fields) {
danielebarchiesi@4 39 $field = $fields[0];
danielebarchiesi@4 40 $options = $this->getAllOptionsList($field);
danielebarchiesi@4 41 return $this->assertIdentical($options, $expected_options);
danielebarchiesi@4 42 }
danielebarchiesi@4 43 else {
danielebarchiesi@4 44 return $this->fail(t('Unable to find field @name', array('@name' => $name)));
danielebarchiesi@4 45 }
danielebarchiesi@4 46 }
danielebarchiesi@4 47
danielebarchiesi@4 48 /**
danielebarchiesi@4 49 * Extract all the options of a select element.
danielebarchiesi@4 50 */
danielebarchiesi@4 51 protected function getAllOptionsList($element) {
danielebarchiesi@4 52 $options = array();
danielebarchiesi@4 53 // Add all options items.
danielebarchiesi@4 54 foreach ($element->option as $option) {
danielebarchiesi@4 55 $options[] = (string) $option['value'];
danielebarchiesi@4 56 }
danielebarchiesi@4 57 // TODO: support optgroup.
danielebarchiesi@4 58 return $options;
danielebarchiesi@4 59 }
danielebarchiesi@4 60
danielebarchiesi@4 61 public function testFieldAdminHandler() {
danielebarchiesi@4 62 $bundle_path = 'admin/structure/types/manage/' . $this->hyphen_type;
danielebarchiesi@4 63
danielebarchiesi@4 64 // First step: 'Add new field' on the 'Manage fields' page.
danielebarchiesi@4 65 $this->drupalPost($bundle_path . '/fields', array(
danielebarchiesi@4 66 'fields[_add_new_field][label]' => 'Test label',
danielebarchiesi@4 67 'fields[_add_new_field][field_name]' => 'test',
danielebarchiesi@4 68 'fields[_add_new_field][type]' => 'entityreference',
danielebarchiesi@4 69 'fields[_add_new_field][widget_type]' => 'entityreference_autocomplete',
danielebarchiesi@4 70 ), t('Save'));
danielebarchiesi@4 71
danielebarchiesi@4 72 // Node should be selected by default.
danielebarchiesi@4 73 $this->assertFieldByName('field[settings][target_type]', 'node');
danielebarchiesi@4 74 // The base handler should be selected by default.
danielebarchiesi@4 75 $this->assertFieldByName('field[settings][handler]', 'base');
danielebarchiesi@4 76
danielebarchiesi@4 77 // The base handler settings should be diplayed.
danielebarchiesi@4 78 $entity_type = 'node';
danielebarchiesi@4 79 $entity_info = entity_get_info($entity_type);
danielebarchiesi@4 80 foreach ($entity_info['bundles'] as $bundle_name => $bundle_info) {
danielebarchiesi@4 81 $this->assertFieldByName('field[settings][handler_settings][target_bundles][' . $bundle_name . ']');
danielebarchiesi@4 82 }
danielebarchiesi@4 83
danielebarchiesi@4 84 // Test the sort settings.
danielebarchiesi@4 85 $options = array('none', 'property', 'field');
danielebarchiesi@4 86 $this->assertFieldSelectOptions('field[settings][handler_settings][sort][type]', $options);
danielebarchiesi@4 87 // Option 0: no sort.
danielebarchiesi@4 88 $this->assertFieldByName('field[settings][handler_settings][sort][type]', 'none');
danielebarchiesi@4 89 $this->assertNoFieldByName('field[settings][handler_settings][sort][property]');
danielebarchiesi@4 90 $this->assertNoFieldByName('field[settings][handler_settings][sort][field]');
danielebarchiesi@4 91 $this->assertNoFieldByName('field[settings][handler_settings][sort][direction]');
danielebarchiesi@4 92 // Option 1: sort by property.
danielebarchiesi@4 93 $this->drupalPostAJAX(NULL, array('field[settings][handler_settings][sort][type]' => 'property'), 'field[settings][handler_settings][sort][type]');
danielebarchiesi@4 94 $this->assertFieldByName('field[settings][handler_settings][sort][property]', '');
danielebarchiesi@4 95 $this->assertNoFieldByName('field[settings][handler_settings][sort][field]');
danielebarchiesi@4 96 $this->assertFieldByName('field[settings][handler_settings][sort][direction]', 'ASC');
danielebarchiesi@4 97 // Option 2: sort by field.
danielebarchiesi@4 98 $this->drupalPostAJAX(NULL, array('field[settings][handler_settings][sort][type]' => 'field'), 'field[settings][handler_settings][sort][type]');
danielebarchiesi@4 99 $this->assertNoFieldByName('field[settings][handler_settings][sort][property]');
danielebarchiesi@4 100 $this->assertFieldByName('field[settings][handler_settings][sort][field]', '');
danielebarchiesi@4 101 $this->assertFieldByName('field[settings][handler_settings][sort][direction]', 'ASC');
danielebarchiesi@4 102 // Set back to no sort.
danielebarchiesi@4 103 $this->drupalPostAJAX(NULL, array('field[settings][handler_settings][sort][type]' => 'none'), 'field[settings][handler_settings][sort][type]');
danielebarchiesi@4 104
danielebarchiesi@4 105 // Second step: 'Instance settings' form.
danielebarchiesi@4 106 $this->drupalPost(NULL, array(), t('Save field settings'));
danielebarchiesi@4 107
danielebarchiesi@4 108 // Third step: confirm.
danielebarchiesi@4 109 $this->drupalPost(NULL, array(), t('Save settings'));
danielebarchiesi@4 110
danielebarchiesi@4 111 // Check that the field appears in the overview form.
danielebarchiesi@4 112 $this->assertFieldByXPath('//table[@id="field-overview"]//td[1]', 'Test label', t('Field was created and appears in the overview page.'));
danielebarchiesi@4 113 }
danielebarchiesi@4 114 }