Commit ee2e63d7 authored by webchick's avatar webchick

#402804 by roychri and Damien Tournoud: Add assertions to check if text was...

#402804 by roychri and Damien Tournoud: Add assertions to check if text was found only once or more than once.
parent 16dcae23
......@@ -1704,6 +1704,78 @@ protected function assertTextHelper($text, $message, $group, $not_exists) {
return $this->assert($not_exists == (strpos($this->plainTextContent, $text) === FALSE), $message, $group);
}
/**
* 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.
*
......
......@@ -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');
}
}
......@@ -44,9 +44,38 @@ 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.
*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment