RulesEmailTest.php
Namespace
Drupal\Tests\rules\KernelFile
-
tests/
src/ Kernel/ RulesEmailTest.php
View source
<?php
namespace Drupal\Tests\rules\Kernel;
/**
* Tests that emails actually go out with the send email action.
*
* @group Rules
*/
class RulesEmailTest extends RulesKernelTestBase {
/**
* The action manager used to instantiate the action plugin.
*
* @var \Drupal\rules\Core\RulesActionManagerInterface
*/
protected $actionManager;
/**
* {@inheritdoc}
*/
protected static $modules = [
'rules',
];
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
// Use the state system collector email backend.
$this->container
->get('config.factory')
->getEditable('system.mail')
->set('interface.default', 'test_mail_collector')
->save();
// Reset the state variable that holds sent messages.
$this->container
->get('state')
->set('system.test_mail_collector', []);
$this->actionManager = $this->container
->get('plugin.manager.rules_action');
}
/**
* Checks the From: and Reply-to: headers.
*/
public function testSubjectAndBody() {
// Create action to send email.
$action = $this->actionManager
->createInstance('rules_send_email');
// Add context values to action.
$action->setContextValue('to', [
'mail@example.com',
])
->setContextValue('subject', 'subject')
->setContextValue('message', 'hello');
// Send email.
$action->execute();
// Retrieve sent message.
$captured_emails = $this->container
->get('state')
->get('system.test_mail_collector');
$sent_message = end($captured_emails);
// Check to make sure that our subject and body are as expected.
$this->assertEquals($sent_message['to'], 'mail@example.com');
$this->assertEquals($sent_message['subject'], 'subject');
// Need to trim the email body to get rid of newline at end.
$this->assertEquals(trim($sent_message['body']), 'hello');
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
RulesEmailTest | Tests that emails actually go out with the send email action. |