diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-03-17 23:26:33 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-03-17 23:26:33 +0000 |
commit | ee2e63d7f9064ae57b3fb91007c53ceddf31ae48 (patch) | |
tree | 9536e30197339acf0902133e2096ee205f6b7b1a /modules/simpletest | |
parent | 16dcae23519b3ad5a1b6c287f69d2f049b2f8841 (diff) | |
download | brdo-ee2e63d7f9064ae57b3fb91007c53ceddf31ae48.tar.gz brdo-ee2e63d7f9064ae57b3fb91007c53ceddf31ae48.tar.bz2 |
#402804 by roychri and Damien Tournoud: Add assertions to check if text was found only once or more than once.
Diffstat (limited to 'modules/simpletest')
-rw-r--r-- | modules/simpletest/drupal_web_test_case.php | 72 | ||||
-rw-r--r-- | modules/simpletest/tests/form.test | 29 | ||||
-rw-r--r-- | modules/simpletest/tests/form_test.module | 29 |
3 files changed, 130 insertions, 0 deletions
diff --git a/modules/simpletest/drupal_web_test_case.php b/modules/simpletest/drupal_web_test_case.php index 11212e760..b865d8659 100644 --- a/modules/simpletest/drupal_web_test_case.php +++ b/modules/simpletest/drupal_web_test_case.php @@ -1705,6 +1705,78 @@ class DrupalWebTestCase { } /** + * Pass if the text is found ONLY ONCE on the text version of the page. + * + * The text version is the equivalent of what a user would see when viewing + * through a web browser. In other words the HTML has been filtered out of + * the contents. + * + * @param $text + * Plain text to look for. + * @param $message + * Message to display. + * @param $group + * The group this message belongs to, defaults to 'Other'. + * @return + * TRUE on pass, FALSE on fail. + */ + protected function assertUniqueText($text, $message = '', $group = 'Other') { + return $this->assertUniqueTextHelper($text, $message, $group, TRUE); + } + + /** + * Pass if the text is found MORE THAN ONCE on the text version of the page. + * + * The text version is the equivalent of what a user would see when viewing + * through a web browser. In other words the HTML has been filtered out of + * the contents. + * + * @param $text + * Plain text to look for. + * @param $message + * Message to display. + * @param $group + * The group this message belongs to, defaults to 'Other'. + * @return + * TRUE on pass, FALSE on fail. + */ + protected function assertNoUniqueText($text, $message = '', $group = 'Other') { + return $this->assertUniqueTextHelper($text, $message, $group, FALSE); + } + + /** + * Helper for assertUniqueText and assertNoUniqueText. + * + * It is not recommended to call this function directly. + * + * @param $text + * Plain text to look for. + * @param $message + * Message to display. + * @param $group + * The group this message belongs to. + * @param $be_unique + * TRUE if this text should be found only once, FALSE if it should be found more than once. + * @return + * TRUE on pass, FALSE on fail. + */ + protected function assertUniqueTextHelper($text, $message, $group, $be_unique) { + if ($this->plainTextContent === FALSE) { + $this->plainTextContent = filter_xss($this->content, array()); + } + if (!$message) { + $message = '"' . $text . '"'. ($be_unique ? ' found only once' : ' found more than once'); + } + $first_occurance = strpos($this->plainTextContent, $text); + if ($first_occurance === FALSE) { + return $this->assert(FALSE, $message, $group); + } + $offset = $first_occurance + strlen($text); + $second_occurance = strpos($this->plainTextContent, $text, $offset); + return $this->assert($be_unique == ($second_occurance === FALSE), $message, $group); + } + + /** * Will trigger a pass if the Perl regex pattern is found in the raw content. * * @param $pattern diff --git a/modules/simpletest/tests/form.test b/modules/simpletest/tests/form.test index b51c116d0..9dfa7cf8c 100644 --- a/modules/simpletest/tests/form.test +++ b/modules/simpletest/tests/form.test @@ -315,3 +315,32 @@ class FormsElementsTableSelectFunctionalTest extends DrupalWebTestCase { } +/** + * Test the form_clean_id() for expected behavior. + */ +class FormsFormCleanIdFunctionalTest extends DrupalWebTestCase { + + function getInfo() { + return array( + 'name' => t('form_clean_id() test'), + 'description' => t('Test the function form_clean_id() for expected behavior'), + 'group' => t('Form API'), + ); + } + + function setUp() { + parent::setUp('form_test'); + } + + /** + * Test the uniqueness of the form_clean_id() function. + */ + function testFormCleanId() { + $this->drupalGet('form_test/form_clean_id'); + $this->assertNoUniqueText('form-test-form-clean-id-presence'); + $this->assertUniqueText('form-test-form-clean-id-presence-1'); + $this->assertUniqueText('form-test-form-clean-id-presence-2'); + $this->assertNoUniqueText('Test Textfield'); + } + +} diff --git a/modules/simpletest/tests/form_test.module b/modules/simpletest/tests/form_test.module index a1eee25b2..057046caf 100644 --- a/modules/simpletest/tests/form_test.module +++ b/modules/simpletest/tests/form_test.module @@ -44,10 +44,39 @@ function form_test_menu() { 'type' => MENU_CALLBACK, ); + $items['form_test/form_clean_id'] = array( + 'title' => 'form_clean_id test', + 'page callback' => 'form_test_form_clean_id_page', + 'access arguments' => array('access content'), + 'type' => MENU_CALLBACK, + ); + return $items; } /** + * Generate a page with three form, to test the clean_id generation. + */ +function form_test_form_clean_id_page() { + $output = drupal_get_form('form_test_test_form'); + $output .= drupal_get_form('form_test_test_form'); + $output .= drupal_get_form('form_test_test_form'); + return $output; +} + +/** + * A simple form to test clean_id generation. + */ +function form_test_test_form(&$form_state) { + $form['input'] = array( + '#type' => 'item', + '#title' => 'Test Textfield', + '#markup' => form_clean_id('form_test_form_clean_id_presence'), + ); + return $form; +} + +/** * Create a header and options array. Helper function for callbacks. */ function _form_test_tableselect_get_data() { |