From e2825f474b71d515d85ce12574d8ed5b55cebdc0 Mon Sep 17 00:00:00 2001
From: Dries Buytaert <dries@buytaert.net>
Date: Mon, 18 Aug 2008 18:40:07 +0000
Subject: [PATCH] - Patch #293099 by boombatower: clarify form documentation
 and error handling.

---
 modules/simpletest/drupal_web_test_case.php | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/modules/simpletest/drupal_web_test_case.php b/modules/simpletest/drupal_web_test_case.php
index e5445af2952b..602a48ebb4a9 100644
--- a/modules/simpletest/drupal_web_test_case.php
+++ b/modules/simpletest/drupal_web_test_case.php
@@ -824,13 +824,27 @@ function drupalGet($path, $options = array()) {
    *
    * @param $path
    *   Location of the post form. Either a Drupal path or an absolute path or
-   *   NULL to post to the current page.
+   *   NULL to post to the current page. For multi-stage forms you can set the
+   *   path to NULL and have it post to the last received page. Example:
+   *
+   *   // First step in form.
+   *   $edit = array(...);
+   *   $this->drupalPost('some_url', $edit, t('Save'));
+   *
+   *   // Second step in form.
+   *   $edit = array(...);
+   *   $this->drupalPost(NULL, $edit, t('Save'));
    * @param  $edit
    *   Field data in an assocative array. Changes the current input fields
    *   (where possible) to the values indicated. A checkbox can be set to
    *   TRUE to be checked and FALSE to be unchecked. Note that when a form
    *   contains file upload fields, other fields cannot start with the '@'
    *   character.
+   *
+   *   Multiple select fields can be set using name[] and setting each of the
+   *   possible values. Example:
+   *   $edit = array();
+   *   $edit['name[]'] = array('value1', 'value2');
    * @param $submit
    *   Value of the submit button.
    * @param $options
@@ -880,11 +894,11 @@ function drupalPost($path, $edit, $submit, $options = array()) {
         }
       }
       // We have not found a form which contained all fields of $edit.
-      $this->fail(t('Found the requested form at @path', array('@path' => $path)));
-      $this->assertTrue($submit_matches, t('Found the @submit button', array('@submit' => $submit)));
       foreach ($edit as $name => $value) {
         $this->fail(t('Failed to set field @name to @value', array('@name' => $name, '@value' => $value)));
       }
+      $this->assertTrue($submit_matches, t('Found the @submit button', array('@submit' => $submit)));
+      $this->fail(t('Found the requested form fields at @path', array('@path' => $path)));
     }
   }
 
-- 
GitLab