SimpletestExampleTestCase

  1. examples
    1. 6 simpletest_example/simpletest_example.test
    2. 7 simpletest_example/simpletest_example.test
    3. 8 simpletest_example/simpletest_example.test

The SimpletestExampleTestCase is a functional test case, meaning that it actually exercises a particular sequence of actions through the web UI. The majority of core test cases are done this way, but the Simpletest suite also provides unit tests as demonstrated in the unit test case example later in this file.

Functional test cases are far slower to execute than unit test cases because they require a complete Drupal install to be done for each test.

See also

DrupalWebTestCase

SimpletestUnitTestExampleTestCase

Hierarchy

Properties

NameDescription
SimpletestExampleTestCase::$privileged_user

Functions & methods

NameDescription
SimpletestExampleTestCase::getInfo
SimpletestExampleTestCase::runningOnTestbotDetect if we're running on PIFR testbot; skip intentional failure in that case. It happens that on the testbot the site under test is in a directory named 'checkout' or 'site_under_test'.
SimpletestExampleTestCase::setUp
SimpletestExampleTestCase::testSimpleTestExampleCreate
SimpletestExampleTestCase::testSimpleTestExampleEdit

File

simpletest_example/simpletest_example.test, line 22
An example of simpletest tests to accompany the tutorial at http://drupal.org/node/890654.

View source
class SimpletestExampleTestCase extends DrupalWebTestCase {
  protected $privileged_user;

  public static function getInfo() {
    return array(
      'name' => 'Simpletest Example', 
      'description' => 'Ensure that the simpletest_example content type provided functions properly.', 
      'group' => 'Examples',
    );
  }

  public function setUp() {
    parent::setUp('simpletest_example'); // Enable any modules required for the test
    // Create and log in our user. The user has the arbitrary privilege
    // 'extra special edit any simpletest_example' which the code uses
    // to grant access.
    $this->privileged_user = $this->drupalCreateUser(array('create simpletest_example content', 'extra special edit any simpletest_example'));
    $this->drupalLogin($this->privileged_user);
  }

  // Create a simpletest_example node using the node form
  public function testSimpleTestExampleCreate() {
    // Create node to edit.
    $edit = array();
    $edit['title'] = $this->randomName(8);
    $edit["body[und][0][value]"] = $this->randomName(16);
    $this->drupalPost('node/add/simpletest-example', $edit, t('Save'));
    $this->assertText(t('Simpletest Example Node Type @title has been created.', array('@title' => $edit['title'])));
  }

  // Create a simpletest_example node and then see if our user can edit it
  public function testSimpleTestExampleEdit() {
    $settings = array(
      'type' => 'simpletest_example', 
      'title' => $this->randomName(32), 
      'body' => array(LANGUAGE_NONE => array(array($this->randomName(64)))),
    );
    $node = $this->drupalCreateNode($settings);

    // For debugging, we might output the node structure with $this->verbose()
    $this->verbose('Node created: ' . var_export($node, TRUE));
    // It would only be output if the testing settings had 'verbose' set.

    // We'll run this test normally, but not on the testbot, as it would
    // indicate that the examples module was failing tests.
    if (!$this->runningOnTestbot()) {
      // The debug() statement will output information into the test results.
      // It can also be used in Drupal 7 anywhere in code and will come out
      // as a drupal_set_message().
      debug('We are not running on the PIFR testing server, so will go ahead and catch the failure.');
      $this->drupalGet("node/{$node->nid}/edit");
      // Make sure we don't get a 401 unauthorized response:
      $this->assertResponse(200, t('User is allowed to edit the content.'));

      // Looking for title text in the page to determine whether we were
      // successful opening edit form.
      $this->assertText(t("@title", array('@title' => $settings['title'])), "Found title in edit form");
    }
  }

  /**
   * Detect if we're running on PIFR testbot; skip intentional failure in that
   * case. It happens that on the testbot the site under test is in a directory
   * named 'checkout' or 'site_under_test'.
   *
   * @return boolean
   *   TRUE if running on testbot.
   */
  public function runningOnTestbot() {
    return (file_exists("../checkout") || file_exists("../site_under_test"));
  }
}
Login or register to post comments