From ef6fea961095a1e908ace3dd4df54ed67bbcf0a1 Mon Sep 17 00:00:00 2001 From: Klimov Paul Date: Mon, 4 Nov 2013 13:24:22 +0200 Subject: [PATCH] Unit test 'BaseMessageTest' created --- framework/yii/mail/BaseMessage.php | 4 +- tests/unit/framework/mail/BaseMailerTest.php | 1 - tests/unit/framework/mail/BaseMessageTest.php | 127 ++++++++++++++++++++++++++ 3 files changed, 129 insertions(+), 3 deletions(-) create mode 100644 tests/unit/framework/mail/BaseMessageTest.php diff --git a/framework/yii/mail/BaseMessage.php b/framework/yii/mail/BaseMessage.php index 4952721..20bc487 100644 --- a/framework/yii/mail/BaseMessage.php +++ b/framework/yii/mail/BaseMessage.php @@ -56,7 +56,7 @@ abstract class BaseMessage extends Object implements MessageInterface */ public function renderHtml($view, $params = []) { - $this->setHtml($this->render($view, $params, $this->getMailer()->htmlLayout)); + $this->setHtml($this->getMailer()->render($view, $params, $this->getMailer()->htmlLayout)); return $this; } @@ -65,7 +65,7 @@ abstract class BaseMessage extends Object implements MessageInterface */ public function renderText($view, $params = []) { - $this->setText($this->render($view, $params, $this->getMailer()->textLayout)); + $this->setText($this->getMailer()->render($view, $params, $this->getMailer()->textLayout)); return $this; } } \ No newline at end of file diff --git a/tests/unit/framework/mail/BaseMailerTest.php b/tests/unit/framework/mail/BaseMailerTest.php index f2d3762..08a099e 100644 --- a/tests/unit/framework/mail/BaseMailerTest.php +++ b/tests/unit/framework/mail/BaseMailerTest.php @@ -6,7 +6,6 @@ use Yii; use yii\base\View; use yii\mail\BaseMailer; use yii\mail\BaseMessage; -use yii\mail\ViewResolver; use yii\helpers\FileHelper; use yiiunit\TestCase; diff --git a/tests/unit/framework/mail/BaseMessageTest.php b/tests/unit/framework/mail/BaseMessageTest.php new file mode 100644 index 0000000..4b934da --- /dev/null +++ b/tests/unit/framework/mail/BaseMessageTest.php @@ -0,0 +1,127 @@ +mockApplication([ + 'components' => [ + 'mail' => $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->getComponent('mail'); + } + + // Tests : + + public function testRender() + { + $mailer = $this->getMailer(); + $message = $mailer->createMessage(); + + $viewName = 'test/text/view'; + $message->renderText($viewName); + $expectedText = 'view=' . $viewName . ' layout=' . $mailer->textLayout; + $this->assertEquals($expectedText, $message->text, 'Unable to render text!'); + + $viewName = 'test/html/view'; + $message->renderHtml($viewName); + $expectedHtml = 'view=' . $viewName . ' layout=' . $mailer->htmlLayout; + $this->assertEquals($expectedHtml, $message->html, 'Unable to render text!'); + } + + public function testSend() + { + $mailer = $this->getMailer(); + $message = $mailer->createMessage(); + $message->send(); + $this->assertEquals($message, $mailer->sentMessages[0], 'Unable to send message!'); + } +} + +/** + * Test Mailer class + */ +class TestMailer extends BaseMailer +{ + public $messageClass = 'yiiunit\framework\mail\TestMessage'; + public $sentMessages = array(); + + public function render($view, $params = [], $layout = false) + { + return 'view=' . $view . ' layout=' . $layout; + } + + public function send($message) + { + $this->sentMessages[] = $message; + } +} + +/** + * Test Message class + */ +class TestMessage extends BaseMessage +{ + public $text; + public $html; + + public function setCharset($charset) {} + + public function setFrom($from) {} + + public function setTo($to) {} + + public function setCc($cc) {} + + public function setBcc($bcc) {} + + public function setSubject($subject) {} + + public function setText($text) { + $this->text = $text; + } + + public function setHtml($html) { + $this->html = $html; + } + + public function attachContent($content, array $options = []) {} + + public function attachFile($fileName, array $options = []) {} + + public function embedFile($fileName, array $options = []) {} + + public function embedContent($content, array $options = []) {} + + public function __toString() + { + return get_class($this); + } +} \ No newline at end of file