diff options
Diffstat (limited to 'modules/field/modules/list/list.test')
-rw-r--r-- | modules/field/modules/list/list.test | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/modules/field/modules/list/list.test b/modules/field/modules/list/list.test index 7f8a1dc62..de9c29e41 100644 --- a/modules/field/modules/list/list.test +++ b/modules/field/modules/list/list.test @@ -85,5 +85,89 @@ class ListFieldTestCase extends DrupalWebTestCase { $this->assertTrue(!empty($form['card_1'][FIELD_LANGUAGE_NONE][2]), t('Option 2 exists')); $this->assertTrue(!empty($form['card_1'][FIELD_LANGUAGE_NONE][3]), t('Option 3 exists')); } + +} + +/** +* List module UI tests. +*/ +class ListFieldUITestCase extends DrupalWebTestCase { + public static function getInfo() { + return array( + 'name' => 'List field UI tests', + 'description' => 'Test the List field UI functionality.', + 'group' => 'Field types', + ); + } + + function setUp() { + FieldUITestCase::setUp(); + } + + /** + * Tests that allowed values are properly validated in the UI. + */ + function testAllowedValues() { + $element_name = "field[settings][allowed_values]"; + + //Test 'List' field type. + $admin_path = $this->createListFieldAndEdit('list'); + //Check that non-integer keys are rejected. + $edit = array($element_name => "1.1|one\n"); + $this->drupalPost($admin_path, $edit, t('Save settings')); + $this->assertText("keys must be integers", t('Form vaildation failed.')); + + // Test 'List (number)' field type. + $admin_path = $this->createListFieldAndEdit('list_number'); + //Check that non-numeric keys are rejected. + $edit = array($element_name => "1|one\nB|two"); + $this->drupalPost($admin_path, $edit, t('Save settings')); + $this->assertText("each key must be a valid integer or decimal", t('Form vaildation failed.')); + + //Test 'List (text)' field type. + $admin_path = $this->createListFieldAndEdit('list_text'); + //Check that over long keys are rejected. + $edit = array($element_name => "1|one\n" . $this->randomName(255) . "|two"); + $this->drupalPost($admin_path, $edit, t('Save settings')); + $this->assertText("each key must be a string less than 255 characters", t('Form vaildation failed.')); + + // Test 'List (boolean)' field type. + $admin_path = $this->createListFieldAndEdit('list_boolean'); + // Check that invalid option keys are rejected. + $edit = array($element_name => "1|one\n2|two"); + $this->drupalPost($admin_path, $edit, t('Save settings')); + $this->assertText("keys must be either 0 or 1", t('Form vaildation failed.')); + + //Check that missing option causes failure. + $edit = array($element_name => "1|one"); + $this->drupalPost($admin_path, $edit, t('Save settings')); + $this->assertText("two values are required", t('Form vaildation failed.')); + } + + /** + * Helper function to create list field of a given type and get the edit page. + * + * @param string $type + * 'list', 'list_boolean', 'list_number', or 'list_text' + */ + private function createListFieldAndEdit($type) { + // Create a test field and instance. + $field_name = 'test_' . $type; + $field = array( + 'field_name' => $field_name, + 'type' => $type, + ); + field_create_field($field); + $instance = array( + 'field_name' => $field_name, + 'object_type' => 'node', + 'bundle' => $this->type, + ); + field_create_instance($instance); + + $admin_path = 'admin/structure/types/manage/' . $this->hyphen_type . '/fields/' . $field_name; + return $admin_path; + } + } |