You are here

function EmailExampleTestCase::testContactForm in Examples for Developers 6

Same name and namespace in other branches
  1. 7 email_example/email_example.test \EmailExampleTestCase::testContactForm()

Verify the functionality of the example module.

File

email_example/email_example.test, line 31
Simpletest case for email_example module.

Class

EmailExampleTestCase
Functionality tests for email example module.

Code

function testContactForm() {

  // Create and login user.
  $account = $this
    ->drupalCreateUser();
  $this
    ->drupalLogin($account);
  $language = language_default();

  // First try to send to an invalid email address.
  $email_options = array(
    'email' => $this
      ->randomName(),
    'message' => $this
      ->randomString(128),
  );
  $result = $this
    ->drupalPost('example/email_example', $email_options, t('Submit'));

  // Verify that email address is invalid and email was not sent.
  $this
    ->assertText(t('That e-mail address is not valid.'), t('Options were validated and form submitted.'));
  $this
    ->assertTrue(!count($this
    ->drupalGetMails()), t('No email was sent.'));

  // Now try with a valid email address.
  $email_options['email'] = $this
    ->randomName() . '@' . $this
    ->randomName() . '.drupal';
  $result = $this
    ->drupalPost('example/email_example', $email_options, t('Submit'));

  // Verify that email address is valid and email was sent.
  $this
    ->assertText(t('Your message has been sent.'), t('Options were validated and form submitted.'));
  $this
    ->assertTrue(count($this
    ->drupalGetMails()), t('An email has been sent.'));

  // Validate sent email. Try to find it using the recipient argument.
  $email = $this
    ->drupalGetMails(array(
    'email' => $email_options['email'],
  ));

  // Grab the first email.
  $email = $email[0];

  // Verify email recipient.
  $this
    ->assertEqual($email['to'], $email_options['email'], t('Email recipient successfully verified.'));

  // Verify email subject.
  $this
    ->assertEqual($email['subject'], t('E-mail sent from @site-name', array(
    '@site-name' => variable_get('site_name', 'Drupal'),
  ), $language->language), t('Email subject successfully verified.'));

  // Verify email body.
  $this
    ->assertTrue(strstr($email['body'], t('@name sent you the following message:', array(
    '@name' => $account->name,
  ), $language->language)), t('Email body successfully verified.'));

  // Verify that signature is attached.
  $this
    ->assertTrue(strstr($email['body'], t("--\nMail altered by email_example module.", array(), $language->language)), t('Email signature successfully verified.'));
}