diff options
Diffstat (limited to 'modules/simpletest/tests/form.test')
-rw-r--r-- | modules/simpletest/tests/form.test | 61 |
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() |