Files
yii2/tests/framework/mail/BaseMessageTest.php

199 lines
3.5 KiB
PHP

<?php
/**
* @link https://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license https://www.yiiframework.com/license/
*/
namespace yiiunit\framework\mail;
use Yii;
use yii\mail\BaseMailer;
use yii\mail\BaseMessage;
use yiiunit\TestCase;
/**
* @group mail
*/
class BaseMessageTest extends TestCase
{
protected function setUp(): void
{
$this->mockApplication([
'components' => [
'mailer' => $this->createTestEmailComponent(),
],
]);
}
/**
* @return Mailer test email component instance.
*/
protected function createTestEmailComponent()
{
$component = new TestMailer();
return $component;
}
/**
* @return TestMailer mailer instance.
*/
protected function getMailer()
{
return Yii::$app->get('mailer');
}
// Tests :
public function testSend(): void
{
$mailer = $this->getMailer();
$message = $mailer->compose();
$message->send($mailer);
$this->assertEquals($message, $mailer->sentMessages[0], 'Unable to send message!');
}
public function testToString(): void
{
$mailer = $this->getMailer();
$message = $mailer->compose();
$this->assertEquals($message->toString(), '' . $message);
}
public function testExceptionToString()
{
$message = new TestMessageWithException();
$this->expectException(\Exception::class);
$this->expectExceptionMessage('Test exception in toString.');
(string) $message;
}
}
/**
* Test Mailer class.
*/
class TestMailer extends BaseMailer
{
public $messageClass = 'yiiunit\framework\mail\TestMessage';
public $sentMessages = [];
protected function sendMessage($message)
{
$this->sentMessages[] = $message;
}
}
/**
* Test Message class.
*/
class TestMessage extends BaseMessage
{
public $text;
public $html;
public function getCharset()
{
return '';
}
public function setCharset($charset): void
{
}
public function getFrom()
{
return '';
}
public function setFrom($from): void
{
}
public function getReplyTo()
{
return '';
}
public function setReplyTo($replyTo): void
{
}
public function getTo()
{
return '';
}
public function setTo($to): void
{
}
public function getCc()
{
return '';
}
public function setCc($cc): void
{
}
public function getBcc()
{
return '';
}
public function setBcc($bcc): void
{
}
public function getSubject()
{
return '';
}
public function setSubject($subject): void
{
}
public function setTextBody($text): void
{
$this->text = $text;
}
public function setHtmlBody($html): void
{
$this->html = $html;
}
public function attachContent($content, array $options = []): void
{
}
public function attach($fileName, array $options = []): void
{
}
public function embed($fileName, array $options = []): void
{
}
public function embedContent($content, array $options = []): void
{
}
public function toString()
{
return static::class;
}
}
class TestMessageWithException extends TestMessage
{
public function toString()
{
throw new \Exception('Test exception in toString.');
}
}