Dmitriy Makarov
8 years ago
committed by
Alexander Makarov
1 changed files with 132 additions and 0 deletions
@ -0,0 +1,132 @@ |
|||||||
|
<?php |
||||||
|
/** |
||||||
|
* @author Dmitriy Makarov <makarov.dmitriy@gmail.com> |
||||||
|
*/ |
||||||
|
|
||||||
|
namespace yiiunit\framework\log; |
||||||
|
|
||||||
|
use yii\log\EmailTarget; |
||||||
|
use yiiunit\TestCase; |
||||||
|
|
||||||
|
/** |
||||||
|
* Class EmailTargetTest |
||||||
|
* @package yiiunit\framework\log |
||||||
|
* @group log |
||||||
|
*/ |
||||||
|
class EmailTargetTest extends TestCase |
||||||
|
{ |
||||||
|
/** |
||||||
|
* @var PHPUnit_Framework_MockObject_MockObject |
||||||
|
*/ |
||||||
|
protected $mailer; |
||||||
|
|
||||||
|
/** |
||||||
|
* Set up mailer |
||||||
|
*/ |
||||||
|
protected function setUp() |
||||||
|
{ |
||||||
|
parent::setUp(); |
||||||
|
$this->mailer = $this->getMockBuilder('yii\\mail\\BaseMailer') |
||||||
|
->setMethods(['compose']) |
||||||
|
->getMockForAbstractClass(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @covers yii\log\EmailTarget::init() |
||||||
|
*/ |
||||||
|
public function testInitWithOptionTo() |
||||||
|
{ |
||||||
|
new EmailTarget(['mailer' => $this->mailer, 'message'=> ['to' => 'developer1@example.com']]); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @covers yii\log\EmailTarget::init() |
||||||
|
* @expectedException \yii\base\InvalidConfigException |
||||||
|
* @expectedExceptionMessage The "to" option must be set for EmailTarget::message. |
||||||
|
*/ |
||||||
|
public function testInitWithoutOptionTo() |
||||||
|
{ |
||||||
|
new EmailTarget(['mailer' => $this->mailer]); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @covers yii\log\EmailTarget::export() |
||||||
|
* @covers yii\log\EmailTarget::composeMessage() |
||||||
|
*/ |
||||||
|
public function testExportWithSubject() |
||||||
|
{ |
||||||
|
$message1 = ['A very looooooooooooooooooooooooooooooooooooooooooooooooooooooooooong message 1']; |
||||||
|
$message2 = ['A very looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong message 2']; |
||||||
|
$messages = [$message1, $message2]; |
||||||
|
$textBody = wordwrap(implode("\n", [$message1[0], $message2[0]]), 70); |
||||||
|
|
||||||
|
$message = $this->getMockBuilder('yii\\mail\\BaseMessage') |
||||||
|
->setMethods(['setTextBody', 'send', 'setSubject']) |
||||||
|
->getMockForAbstractClass(); |
||||||
|
|
||||||
|
$this->mailer->expects($this->once())->method('compose')->willReturn($message); |
||||||
|
|
||||||
|
$message->expects($this->once())->method('setTextBody')->with($this->equalTo($textBody)); |
||||||
|
$message->expects($this->once())->method('send')->with($this->equalTo($this->mailer)); |
||||||
|
$message->expects($this->once())->method('setSubject')->with($this->equalTo('Hello world')); |
||||||
|
|
||||||
|
$mailTarget = $this->getMock('yii\\log\\EmailTarget', ['formatMessage'], [ |
||||||
|
[ |
||||||
|
'mailer' => $this->mailer, |
||||||
|
'message'=> [ |
||||||
|
'to' => 'developer@example.com', |
||||||
|
'subject' => 'Hello world' |
||||||
|
] |
||||||
|
] |
||||||
|
]); |
||||||
|
|
||||||
|
$mailTarget->messages = $messages; |
||||||
|
$mailTarget->expects($this->exactly(2))->method('formatMessage')->willReturnMap( |
||||||
|
[ |
||||||
|
[$message1, $message1[0]], |
||||||
|
[$message2, $message2[0]], |
||||||
|
] |
||||||
|
); |
||||||
|
$mailTarget->export(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @covers yii\log\EmailTarget::export() |
||||||
|
* @covers yii\log\EmailTarget::composeMessage() |
||||||
|
*/ |
||||||
|
public function testExportWithoutSubject() |
||||||
|
{ |
||||||
|
$message1 = ['A veeeeery loooooooooooooooooooooooooooooooooooooooooooooooooooooooong message 3']; |
||||||
|
$message2 = ['Message 4']; |
||||||
|
$messages = [$message1, $message2]; |
||||||
|
$textBody = wordwrap(implode("\n", [$message1[0], $message2[0]]), 70); |
||||||
|
|
||||||
|
$message = $this->getMockBuilder('yii\\mail\\BaseMessage') |
||||||
|
->setMethods(['setTextBody', 'send', 'setSubject']) |
||||||
|
->getMockForAbstractClass(); |
||||||
|
|
||||||
|
$this->mailer->expects($this->once())->method('compose')->willReturn($message); |
||||||
|
|
||||||
|
$message->expects($this->once())->method('setTextBody')->with($this->equalTo($textBody)); |
||||||
|
$message->expects($this->once())->method('send')->with($this->equalTo($this->mailer)); |
||||||
|
$message->expects($this->once())->method('setSubject')->with($this->equalTo('Application Log')); |
||||||
|
|
||||||
|
$mailTarget = $this->getMock('yii\\log\\EmailTarget', ['formatMessage'], [ |
||||||
|
[ |
||||||
|
'mailer' => $this->mailer, |
||||||
|
'message'=> [ |
||||||
|
'to' => 'developer@example.com', |
||||||
|
] |
||||||
|
] |
||||||
|
]); |
||||||
|
|
||||||
|
$mailTarget->messages = $messages; |
||||||
|
$mailTarget->expects($this->exactly(2))->method('formatMessage')->willReturnMap( |
||||||
|
[ |
||||||
|
[$message1, $message1[0]], |
||||||
|
[$message2, $message2[0]], |
||||||
|
] |
||||||
|
); |
||||||
|
$mailTarget->export(); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue