summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/simpletest/drupal_web_test_case.php42
1 files changed, 41 insertions, 1 deletions
diff --git a/modules/simpletest/drupal_web_test_case.php b/modules/simpletest/drupal_web_test_case.php
index 20d708174..08927d7a7 100644
--- a/modules/simpletest/drupal_web_test_case.php
+++ b/modules/simpletest/drupal_web_test_case.php
@@ -1445,7 +1445,25 @@ class DrupalWebTestCase {
$found = FALSE;
if ($fields) {
foreach ($fields as $field) {
- if ($field['value'] == $value) {
+ if (isset($field['value']) && $field['value'] == $value) {
+ // Input element with correct value.
+ $found = TRUE;
+ }
+ else if (isset($field->option)) {
+ // Select element found.
+ if ($this->getSelectedItem($field) == $value) {
+ $found = TRUE;
+ }
+ else {
+ // No item selected so use first item.
+ $items = $this->getAllOptions($field);
+ if (!empty($items) && $items[0]['value'] == $value) {
+ $found = TRUE;
+ }
+ }
+ }
+ else if (isset($field[0]) && $field[0] == $value) {
+ // Text area with correct text.
$found = TRUE;
}
}
@@ -1455,6 +1473,28 @@ class DrupalWebTestCase {
}
/**
+ * Get the selected value from a select field.
+ *
+ * @param $element
+ * SimpleXMLElement select element.
+ * @return
+ * The selected value or FALSE.
+ */
+ function getSelectedItem(SimpleXMLElement $element) {
+ foreach ($element->children() as $item) {
+ if (isset($item['selected'])) {
+ return $item['value'];
+ }
+ else if ($item->getName() == 'optgroup') {
+ if ($value = $this->getSelectedItem($item)) {
+ return $value;
+ }
+ }
+ }
+ return FALSE;
+ }
+
+ /**
* Assert that a field does not exist in the current page by the given XPath.
*
* @param $xpath