Skip to content

Commit d1be154

Browse files
committed
Update unit tests for ZF 2 mail
1 parent ca1a3b2 commit d1be154

File tree

4 files changed

+35
-34
lines changed

4 files changed

+35
-34
lines changed

lib/internal/Magento/Framework/Mail/Message.php

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,22 @@
1010
use Zend\Mime\Mime;
1111
use Zend\Mime\Part;
1212

13+
/**
14+
* @todo composition instead of inheritance for better testability
15+
* - add a ZendMailDecorator interface with getZendMail() method for usage in \Magento\Framework\Mail\Transport
16+
* @todo get rid of temporal coupling (setMessageType() + setBody())
17+
* - deprecate setMessageType(), implement a HtmlMessage decorator instead
18+
* - change usage in \Magento\Framework\Mail\Template\TransportBuilder::prepareMessage()
19+
*/
1320
class Message extends \Zend\Mail\Message implements MessageInterface
1421
{
22+
1523
/**
1624
* @param string $charset
1725
*/
1826
public function __construct($charset = 'utf-8')
1927
{
20-
parent::setEncoding($charset);
28+
$this->encoding = $charset;
2129
}
2230

2331
/**
@@ -27,16 +35,6 @@ public function __construct($charset = 'utf-8')
2735
*/
2836
protected $messageType = self::TYPE_TEXT;
2937

30-
private function htmlMimeFromString($htmlBody)
31-
{
32-
$htmlPart = new Part($htmlBody);
33-
$htmlPart->setCharset($this->getEncoding());
34-
$htmlPart->setType(Mime::TYPE_HTML);
35-
$mimeMessage = new \Zend\Mime\Message();
36-
$mimeMessage->addPart($htmlPart);
37-
return $mimeMessage;
38-
}
39-
4038
/**
4139
* Set message type
4240
*
@@ -61,4 +59,17 @@ public function setBody($body)
6159
return parent::setBody($body);
6260
}
6361

62+
/**
63+
* @param string $htmlBody
64+
* @return \Zend\Mime\Message
65+
*/
66+
private function htmlMimeFromString($htmlBody)
67+
{
68+
$htmlPart = new Part($htmlBody);
69+
$htmlPart->setCharset($this->getEncoding());
70+
$htmlPart->setType(Mime::TYPE_HTML);
71+
$mimeMessage = new \Zend\Mime\Message();
72+
$mimeMessage->addPart($htmlPart);
73+
return $mimeMessage;
74+
}
6475
}

lib/internal/Magento/Framework/Mail/Test/Unit/MessageTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class MessageTest extends \PHPUnit_Framework_TestCase
1414

1515
protected function setUp()
1616
{
17+
$this->markTestSkipped('obsolete ZF 1 test');
1718
$this->_messageMock = $this->getMock(
1819
\Magento\Framework\Mail\Message::class,
1920
['getBodyText', 'getBodyHtml', 'setBodyText', 'setBodyHtml']

lib/internal/Magento/Framework/Mail/Test/Unit/Template/TransportBuilderTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
use Magento\Framework\App\TemplateTypesInterface;
99
use Magento\Framework\Mail\MessageInterface;
10+
use Zend\Mail\Headers;
1011

1112
class TransportBuilderTest extends \PHPUnit_Framework_TestCase
1213
{
@@ -53,6 +54,7 @@ protected function setUp()
5354
$objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
5455
$this->templateFactoryMock = $this->getMock(\Magento\Framework\Mail\Template\FactoryInterface::class);
5556
$this->messageMock = $this->getMock(\Magento\Framework\Mail\Message::class);
57+
$this->messageMock->method('getHeaders')->willReturn(new Headers());
5658
$this->objectManagerMock = $this->getMock(\Magento\Framework\ObjectManagerInterface::class);
5759
$this->senderResolverMock = $this->getMock(\Magento\Framework\Mail\Template\SenderResolverInterface::class);
5860
$this->mailTransportFactoryMock = $this->getMockBuilder(

lib/internal/Magento/Framework/Mail/Test/Unit/TransportTest.php

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,45 +5,32 @@
55
*/
66
namespace Magento\Framework\Mail\Test\Unit;
77

8+
use Zend\Mail\Headers;
9+
810
class TransportTest extends \PHPUnit_Framework_TestCase
911
{
10-
/**
11-
* @var \PHPUnit_Framework_MockObject
12-
*/
13-
protected $_messageMock;
14-
15-
/**
16-
* @var \Magento\Framework\Mail\Transport
17-
*/
18-
protected $_transport;
19-
20-
protected function setUp()
21-
{
22-
$this->_messageMock = $this->getMock(\Magento\Framework\Mail\Message::class, [], [], '', false);
23-
$this->_transport = new \Magento\Framework\Mail\Transport($this->_messageMock);
24-
}
25-
2612
/**
2713
* @expectedException \InvalidArgumentException
2814
* @expectedExceptionMessage The message should be an instance of \Zend\Mail\Message
2915
*/
3016
public function testTransportWithIncorrectMessageObject()
3117
{
32-
$this->_messageMock = $this->getMock(\Magento\Framework\Mail\MessageInterface::class);
33-
$this->_transport = new \Magento\Framework\Mail\Transport($this->_messageMock);
18+
new \Magento\Framework\Mail\Transport(
19+
$this->getMock(\Magento\Framework\Mail\MessageInterface::class)
20+
);
3421
}
3522

3623
/**
3724
* @covers \Magento\Framework\Mail\Transport::sendMessage
3825
* @expectedException \Magento\Framework\Exception\MailException
39-
* @expectedExceptionMessage No body specified
26+
* @expectedExceptionMessage Invalid email; contains no "To" header
4027
*/
4128
public function testSendMessageBrokenMessage()
4229
{
43-
$this->_messageMock->expects($this->any())
44-
->method('getParts')
45-
->will($this->returnValue(['a', 'b']));
30+
$transport = new \Magento\Framework\Mail\Transport(
31+
new \Magento\Framework\Mail\Message()
32+
);
4633

47-
$this->_transport->sendMessage();
34+
$transport->sendMessage();
4835
}
4936
}

0 commit comments

Comments
 (0)