4 * @see also WebTest_Mailing_SpoolTest
8 * Class CRM_Mailing_BAO_SpoolTest
11 class CRM_Mailing_BAO_SpoolTest
extends CiviUnitTestCase
{
13 protected $_mut = NULL;
15 protected static $bodytext = 'Unit tests keep children safe.';
17 public function setUp() {
19 $this->_mut
= new CiviMailUtils($this, TRUE);
22 public function tearDown() {
30 public function testSend() {
31 $contact_params_1 = array(
32 'first_name' => substr(sha1(rand()), 0, 7),
33 'last_name' => 'Anderson',
34 'email' => substr(sha1(rand()), 0, 7) . '@example.org',
35 'contact_type' => 'Individual',
37 $contact_id_1 = $this->individualCreate($contact_params_1);
39 $contact_params_2 = array(
40 'first_name' => substr(sha1(rand()), 0, 7),
41 'last_name' => 'Xylophone',
42 'email' => substr(sha1(rand()), 0, 7) . '@example.org',
43 'contact_type' => 'Individual',
45 $contact_id_2 = $this->individualCreate($contact_params_2);
47 $subject = 'Test spool';
49 'from' => CRM_Utils_Mail
::formatRFC822Email($contact_params_1['first_name'] . " " . $contact_params_1['last_name'], $contact_params_1['email']),
50 'toName' => $contact_params_2['first_name'] . " " . $contact_params_2['last_name'],
51 'toEmail' => $contact_params_2['email'],
52 'subject' => $subject,
53 'text' => self
::$bodytext,
54 'html' => "<p>\n" . self
::$bodytext . '</p>',
57 CRM_Utils_Mail
::send($params);
59 $mail = $this->_mut
->getMostRecentEmail('raw');
60 $this->assertContains("Subject: $subject", $mail);
61 $this->assertContains(self
::$bodytext, $mail);
63 $mail = $this->_mut
->getMostRecentEmail('ezc');
65 $this->assertEquals($subject, $mail->subject
);
66 $this->assertContains($contact_params_1['email'], $mail->from
->email
, 'From address incorrect.');
67 $this->assertContains($contact_params_2['email'], $mail->to
[0]->email
, 'Recipient incorrect.');
69 $context = new ezcMailPartWalkContext(array(get_class($this), 'mailWalkCallback'));
70 $mail->walkParts($context, $mail);
77 public static function mailWalkCallback($context, $mailPart) {
78 if ($mailPart instanceof ezcMailText
) {
79 switch ($mailPart->subType
) {
81 self
::assertContains(self
::$bodytext, $mailPart->generateBody());
85 self
::assertContains(self
::$bodytext . '</p>', $mailPart->generateBody());