function EmailExampleTestCase::testContactForm

Verify the functionality of the example module.

File

email_example/email_example.test, line 38

Class

EmailExampleTestCase
Functionality tests for email example module.

Code

public function testContactForm() {
    // Create and login user.
    $account = $this->drupalCreateUser();
    $this->drupalLogin($account);
    // Set default language for t() translations.
    $t_options = array(
        'langcode' => language_default()->language,
    );
    // First try to send to an invalid email address.
    $email_options = array(
        'email' => $this->randomName(),
        'message' => $this->randomName(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.'), 'Options were validated and form submitted.');
    $this->assertTrue(!count($this->drupalGetMails()), '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->assertTrue(count($this->drupalGetMails()), 'An email has been sent.');
    // Validate sent email.
    $email = $this->drupalGetMails();
    // Grab the first entry.
    $email = $email[0];
    // Verify email recipient.
    $this->assertEqual($email['to'], $email_options['email'], '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'),
    ), $t_options), 'Email subject successfully verified.');
    // Verify email body.
    $this->assertTrue(strstr($email['body'], t('@name sent you the following message:', array(
        '@name' => $account->name,
    ), $t_options)), 'Email body successfully verified.');
    // Verify that signature is attached.
    $this->assertTrue(strstr($email['body'], t("--\nMail altered by email_example module.", array(), $t_options)), 'Email signature successfully verified.');
}