summaryrefslogtreecommitdiff
path: root/modules/simpletest/tests/form.test
diff options
context:
space:
mode:
Diffstat (limited to 'modules/simpletest/tests/form.test')
-rw-r--r--modules/simpletest/tests/form.test61
1 files changed, 61 insertions, 0 deletions
diff --git a/modules/simpletest/tests/form.test b/modules/simpletest/tests/form.test
index 969f3f398..793d0c0bf 100644
--- a/modules/simpletest/tests/form.test
+++ b/modules/simpletest/tests/form.test
@@ -153,6 +153,67 @@ class FormsTestCase extends DrupalWebTestCase {
}
/**
+ * Tests validation of #type 'select' elements.
+ */
+ function testSelect() {
+ $form = $form_state = array();
+ $form = form_test_select($form, $form_state);
+ $error = '!name field is required.';
+ $this->drupalGet('form-test/select');
+
+ // Posting without any values should throw validation errors.
+ $this->drupalPost(NULL, array(), 'Submit');
+ $this->assertNoText(t($error, array('!name' => $form['select']['#title'])));
+ $this->assertNoText(t($error, array('!name' => $form['empty_value']['#title'])));
+ $this->assertNoText(t($error, array('!name' => $form['empty_value_one']['#title'])));
+ $this->assertText(t($error, array('!name' => $form['no_default']['#title'])));
+ $this->assertNoText(t($error, array('!name' => $form['no_default_optional']['#title'])));
+ $this->assertText(t($error, array('!name' => $form['no_default_empty_option']['#title'])));
+ $this->assertNoText(t($error, array('!name' => $form['no_default_empty_option_optional']['#title'])));
+ $this->assertText(t($error, array('!name' => $form['no_default_empty_value']['#title'])));
+ $this->assertText(t($error, array('!name' => $form['no_default_empty_value_one']['#title'])));
+ $this->assertNoText(t($error, array('!name' => $form['no_default_empty_value_optional']['#title'])));
+ $this->assertNoText(t($error, array('!name' => $form['multiple']['#title'])));
+ $this->assertNoText(t($error, array('!name' => $form['multiple_no_default']['#title'])));
+ $this->assertText(t($error, array('!name' => $form['multiple_no_default_required']['#title'])));
+
+ // Post values for required fields.
+ $edit = array(
+ 'no_default' => 'three',
+ 'no_default_empty_option' => 'three',
+ 'no_default_empty_value' => 'three',
+ 'no_default_empty_value_one' => 'three',
+ 'multiple_no_default_required[]' => 'three',
+ );
+ $this->drupalPost(NULL, $edit, 'Submit');
+ $values = drupal_json_decode($this->drupalGetContent());
+
+ // Verify expected values.
+ $expected = array(
+ 'select' => 'one',
+ 'empty_value' => 'one',
+ 'empty_value_one' => 'one',
+ 'no_default' => 'three',
+ 'no_default_optional' => '',
+ 'no_default_empty_option' => 'three',
+ 'no_default_empty_option_optional' => '',
+ 'no_default_empty_value' => 'three',
+ 'no_default_empty_value_one' => 'three',
+ 'no_default_empty_value_optional' => 0,
+ 'multiple' => array('two' => 'two'),
+ 'multiple_no_default' => array(),
+ 'multiple_no_default_required' => array('three' => 'three'),
+ );
+ foreach ($expected as $key => $value) {
+ $this->assertIdentical($values[$key], $value, t('@name: @actual is equal to @expected.', array(
+ '@name' => $key,
+ '@actual' => var_export($values[$key], TRUE),
+ '@expected' => var_export($value, TRUE),
+ )));
+ }
+ }
+
+ /**
* Test handling of disabled elements.
*
* @see _form_test_disabled_elements()