diff options
author | Dries Buytaert <dries@buytaert.net> | 2009-10-15 11:47:25 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2009-10-15 11:47:25 +0000 |
commit | c5c46c739c5ef2b9170a67c501db7967ca814b3b (patch) | |
tree | 4e95facf308ec57ead2edcb7e0dd3b43fe988202 /modules/simpletest/tests | |
parent | 3cb2a5eff420a00a3579df5ed7950f8d5c761bce (diff) | |
download | brdo-c5c46c739c5ef2b9170a67c501db7967ca814b3b.tar.gz brdo-c5c46c739c5ef2b9170a67c501db7967ca814b3b.tar.bz2 |
- Patch #594650 by sun, c960657: provide central ()['values'] clearance.
Diffstat (limited to 'modules/simpletest/tests')
-rw-r--r-- | modules/simpletest/tests/form.test | 49 | ||||
-rw-r--r-- | modules/simpletest/tests/form_test.module | 32 |
2 files changed, 81 insertions, 0 deletions
diff --git a/modules/simpletest/tests/form.test b/modules/simpletest/tests/form.test index fb922ec8c..f6dbb85b8 100644 --- a/modules/simpletest/tests/form.test +++ b/modules/simpletest/tests/form.test @@ -463,3 +463,52 @@ class FormsFormWrapperTestCase extends DrupalWebTestCase { } } +/** + * Test $form_state clearance. + */ +class FormStateValuesCleanTestCase extends DrupalWebTestCase { + public static function getInfo() { + return array( + 'name' => 'Form state values clearance', + 'description' => 'Test proper removal of submitted form values using form_state_values_clean().', + 'group' => 'Form API', + ); + } + + function setUp() { + parent::setUp('form_test'); + } + + /** + * Tests form_state_values_clean(). + */ + function testFormStateValuesClean() { + $this->drupalPost('form_test/form-state-values-clean', array(), t('Submit')); + $values = json_decode($this->content, TRUE); + + // Setup the expected result. + $result = array( + 'beer' => 1000, + 'baz' => array('beer' => 2000), + ); + + // Verify that all internal Form API elements were removed. + $this->assertFalse(isset($values['form_id']), t('%element was removed.', array('%element' => 'form_id'))); + $this->assertFalse(isset($values['form_token']), t('%element was removed.', array('%element' => 'form_token'))); + $this->assertFalse(isset($values['form_build_id']), t('%element was removed.', array('%element' => 'form_build_id'))); + $this->assertFalse(isset($values['op']), t('%element was removed.', array('%element' => 'op'))); + + // Verify that all buttons were removed. + $this->assertFalse(isset($values['foo']), t('%element was removed.', array('%element' => 'foo'))); + $this->assertFalse(isset($values['bar']), t('%element was removed.', array('%element' => 'bar'))); + $this->assertFalse(isset($values['baz']['foo']), t('%element was removed.', array('%element' => 'foo'))); + $this->assertFalse(isset($values['baz']['baz']), t('%element was removed.', array('%element' => 'baz'))); + + // Verify that nested form value still exists. + $this->assertTrue(isset($values['baz']['beer']), t('Nested form value still exists.')); + + // Verify that actual form values equal resulting form values. + $this->assertEqual($values, $result, t('Expected form values equal actual form values.')); + } +} + diff --git a/modules/simpletest/tests/form_test.module b/modules/simpletest/tests/form_test.module index ee47b4f14..a502e8e8a 100644 --- a/modules/simpletest/tests/form_test.module +++ b/modules/simpletest/tests/form_test.module @@ -62,6 +62,14 @@ function form_test_menu() { 'type' => MENU_CALLBACK, ); + $items['form_test/form-state-values-clean'] = array( + 'title' => 'Form state values clearance test', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('form_test_form_state_values_clean_form'), + 'access arguments' => array('access content'), + 'type' => MENU_CALLBACK, + ); + return $items; } @@ -361,3 +369,27 @@ function form_test_wrapper_callback_form($form, &$form_state) { return $form; } +/** + * Form builder for form_state_values_clean() test. + */ +function form_test_form_state_values_clean_form($form, &$form_state) { + // Build an example form containing multiple submit and button elements; not + // only on the top-level. + $form = array('#tree' => TRUE); + $form['foo'] = array('#type' => 'submit', '#value' => t('Submit')); + $form['bar'] = array('#type' => 'submit', '#value' => t('Submit')); + $form['beer'] = array('#type' => 'value', '#value' => 1000); + $form['baz']['foo'] = array('#type' => 'button', '#value' => t('Submit')); + $form['baz']['baz'] = array('#type' => 'submit', '#value' => t('Submit')); + $form['baz']['beer'] = array('#type' => 'value', '#value' => 2000); + return $form; +} + +/** + * Form submit handler for form_state_values_clean() test form. + */ +function form_test_form_state_values_clean_form_submit($form, &$form_state) { + form_state_values_clean($form_state); + drupal_json_output($form_state['values']); + exit; +} |