fetch/zend-mail-codeception-module

There is no license information available for the latest version (v1.0.0) of this package.

Test emails in your Codeception acceptance tests

v1.0.0 2015-11-29 12:42 UTC

This package is auto-updated.

Last update: 2020-11-12 02:52:28 UTC


README

Build Status

This module will let you test emails that are sent during your Codeception acceptance tests.

Installation

Add the package into your composer.json:

{
    "require-dev": {
        "codeception/codeception": "*",
        "fetch/zend-mail-codeception-module": "^1.0"
    }
}

Tell Composer to download the package:

php composer.phar update

Update your Zend mail configuration to use a file transport:

function mail_filename(){
  return uniqid() . '.mail';
}

$transportOptions = new Zend\Mail\Transport\FileOptions([
  'path' => 'tests/_output/mail',
  'callback' => 'mail_filename'
]);
$transport = new Zend\Mail\Transport\File($transportOptions);

Then enable it in your acceptance.suite.yml configuration and set path to the transport directory.

class_name: WebGuy
modules:
  enabled:
    - ZendMail
  config:
    ZendMail:
      path: 'tests/_output/mail'

You will then need to rebuild your actor class:

php codecept.phar build

Example Usage

$I = new WebGuy($scenario);
$I->wantTo('Get a password reset email');

// Cleared old emails from path
$I->resetEmails();

// Reset
$I->amOnPage('forgotPassword.php');
$I->fillField("input[name='email']", 'user@example.com');
$I->click("Submit");
$I->see("Please check your email");

$I->seeInLastEmail("Please click this link to reset your password");

Actions

resetEmails

Clears the emails in the messages directory. This is prevents seeing emails sent during a previous test. You probably want to do this before you trigger any emails to be sent

Example:

// Clears all emails
$I->resetEmails();

seeInLastEmail

Checks that an email contains a value. It searches the full raw text of the email: headers, subject line, and body.

Example:

$I->seeInLastEmail('Thanks for signing up!');
  • Param $text

seeInLastEmailTo

Checks that the last email sent to an address contains a value. It searches the full raw text of the email: headers, subject line, and body.

This is useful if, for example a page triggers both an email to the new user, and to the administrator.

Example:

$I->seeInLastEmailTo('user@example.com', 'Thanks for signing up!');
$I->seeInLastEmailTo('admin@example.com', 'A new user has signed up!');
  • Param $email
  • Param $text

dontSeeInLastEmail

Checks that an email does NOT contain a value. It searches the full raw text of the email: headers, subject line, and body.

Example:

$I->dontSeeInLastEmail('Hit me with those laser beams');
  • Param $text

dontSeeInLastEmailTo

Checks that the last email sent to an address does NOT contain a value. It searches the full raw text of the email: headers, subject line, and body.

Example:

$I->dontSeeInLastEmailTo('admin@example.com', 'But shoot it in the right direction');
  • Param $email
  • Param $text

grabMatchesFromLastEmail

Extracts an array of matches and sub-matches from the last email based on a regular expression. It searches the full raw text of the email: headers, subject line, and body. The return value is an array like that returned by preg_match().

Example:

$matches = $I->grabMatchesFromLastEmail('@<strong>(.*)</strong>@');
  • Param $regex

grabFromLastEmail

Extracts a string from the last email based on a regular expression. It searches the full raw text of the email: headers, subject line, and body.

Example:

$match = $I->grabFromLastEmail('@<strong>(.*)</strong>@');
  • Param $regex

grabMatchesFromLastEmailTo

Extracts an array of matches and sub-matches from the last email to a given address based on a regular expression. It searches the full raw text of the email: headers, subject line, and body. The return value is an array like that returned by preg_match().

Example:

$matchs = $I->grabMatchesFromLastEmailTo('user@example.com', '@<strong>(.*)</strong>@');
  • Param $email
  • Param $regex

grabFromLastEmailTo

Extracts a string from the last email to a given address based on a regular expression. It searches the full raw text of the email: headers, subject line, and body.

Example:

$match = $I->grabFromLastEmailTo('user@example.com', '@<strong>(.*)</strong>@');
  • Param $email
  • Param $regex

seeEmailCount

Asserts that a certain number of emails have been sent since the last time resetEmails() was called.

Example:

$match = $I->seeEmailCount(2);
  • Param $count

License

Released under the same license as Codeception: MIT