You are here

mail.test in SimpleTest 7

File

tests/mail.test
View source
<?php

/**
 * Test the Drupal mailing system.
 */
class MailTestCase extends DrupalWebTestCase implements MailSystemInterface {

  /**
   * The most recent message that was sent through the test case.
   *
   * We take advantage here of the fact that static variables are shared among
   * all instance of the same class.
   */
  private static $sent_message;
  function getInfo() {
    return array(
      'name' => 'Mail system',
      'description' => 'Performs tests on the pluggable mailing framework.',
      'group' => 'System',
    );
  }
  function setUp() {
    parent::setUp();

    // Set MailTestCase (i.e. this class) as the SMTP library
    variable_set('mail_system', array(
      'default-system' => 'MailTestCase',
    ));
  }

  /**
   * Assert that the pluggable mail system is functional.
   */
  function testPluggableFramework() {
    global $language;

    // Use MailTestCase for sending a message.
    $message = drupal_mail('simpletest', 'mail_test', 'testing@drupal.org', $language);

    // Assert whether the message was sent through the send function.
    $this
      ->assertEqual(self::$sent_message['to'], 'testing@drupal.org', t('Pluggable mail system is extendable.'));
  }

  /**
   * Concatenate and wrap the e-mail body for plain-text mails.
   *
   * @see DefaultMailSystem
   */
  public function format(array $message) {

    // Join the body array into one string.
    $message['body'] = implode("\n\n", $message['body']);

    // Convert any HTML to plain-text.
    $message['body'] = drupal_html_to_text($message['body']);

    // Wrap the mail body for sending.
    $message['body'] = drupal_wrap_mail($message['body']);
    return $message;
  }

  /**
   * Send function that is called through the mail system.
   */
  public function mail(array $message) {
    self::$sent_message = $message;
  }

}

Classes

Namesort descending Description
MailTestCase Test the Drupal mailing system.