Skip to content

Commit 5191b90

Browse files
authored
Merge pull request #64 from magento-epam/MAGETWO-91493
MAGETWO-91493: MDC Framework Issues. Message passed as a service to T…
2 parents 7058877 + 51b29a5 commit 5191b90

File tree

2 files changed

+30
-9
lines changed

2 files changed

+30
-9
lines changed

lib/internal/Magento/Framework/Mail/Template/TransportBuilder.php

+15-3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Magento\Framework\App\TemplateTypesInterface;
1212
use Magento\Framework\Exception\LocalizedException;
1313
use Magento\Framework\Mail\MessageInterface;
14+
use Magento\Framework\Mail\MessageInterfaceFactory;
1415
use Magento\Framework\Mail\TransportInterfaceFactory;
1516
use Magento\Framework\ObjectManagerInterface;
1617
use Magento\Framework\Phrase;
@@ -88,25 +89,36 @@ class TransportBuilder
8889
*/
8990
protected $mailTransportFactory;
9091

92+
/**
93+
* @var \Magento\Framework\Mail\MessageInterfaceFactory
94+
*/
95+
private $messageFactory;
96+
9197
/**
9298
* @param FactoryInterface $templateFactory
9399
* @param MessageInterface $message
94100
* @param SenderResolverInterface $senderResolver
95101
* @param ObjectManagerInterface $objectManager
96102
* @param TransportInterfaceFactory $mailTransportFactory
103+
* @param MessageInterfaceFactory $messageFactory
104+
*
105+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
97106
*/
98107
public function __construct(
99108
FactoryInterface $templateFactory,
100109
MessageInterface $message,
101110
SenderResolverInterface $senderResolver,
102111
ObjectManagerInterface $objectManager,
103-
TransportInterfaceFactory $mailTransportFactory
112+
TransportInterfaceFactory $mailTransportFactory,
113+
MessageInterfaceFactory $messageFactory = null
104114
) {
105115
$this->templateFactory = $templateFactory;
106-
$this->message = $message;
107116
$this->objectManager = $objectManager;
108117
$this->_senderResolver = $senderResolver;
109118
$this->mailTransportFactory = $mailTransportFactory;
119+
$this->messageFactory = $messageFactory ?: \Magento\Framework\App\ObjectManager::getInstance()
120+
->get(MessageInterfaceFactory::class);
121+
$this->message = $this->messageFactory->create();
110122
}
111123

112124
/**
@@ -242,7 +254,7 @@ public function getTransport()
242254
*/
243255
protected function reset()
244256
{
245-
$this->message = $this->objectManager->create(\Magento\Framework\Mail\Message::class);
257+
$this->message = $this->messageFactory->create();
246258
$this->templateIdentifier = null;
247259
$this->templateVars = null;
248260
$this->templateOptions = null;

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

+15-6
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
use Magento\Framework\App\TemplateTypesInterface;
1010
use Magento\Framework\Mail\MessageInterface;
11+
use Magento\Framework\Mail\MessageInterfaceFactory;
1112

1213
class TransportBuilderTest extends \PHPUnit\Framework\TestCase
1314
{
@@ -41,6 +42,11 @@ class TransportBuilderTest extends \PHPUnit\Framework\TestCase
4142
*/
4243
protected $senderResolverMock;
4344

45+
/**
46+
* @var \Magento\Framework\Mail\MessageInterfaceFactory| \PHPUnit_Framework_MockObject_MockObject
47+
*/
48+
private $messageFactoryMock;
49+
4450
/**
4551
* @var \PHPUnit_Framework_MockObject_MockObject
4652
*/
@@ -60,15 +66,21 @@ protected function setUp()
6066
\Magento\Framework\Mail\TransportInterfaceFactory::class
6167
)->disableOriginalConstructor()
6268
->setMethods(['create'])
63-
->getMock();
69+
->getMockForAbstractClass();
70+
$this->messageFactoryMock = $this->getMockBuilder(\Magento\Framework\Mail\MessageInterfaceFactory::class)
71+
->disableOriginalConstructor()
72+
->setMethods(['create'])
73+
->getMockForAbstractClass();
74+
$this->messageFactoryMock->expects($this->atLeastOnce())->method('create')->willReturn($this->messageMock);
6475
$this->builder = $objectManagerHelper->getObject(
6576
$this->builderClassName,
6677
[
6778
'templateFactory' => $this->templateFactoryMock,
6879
'message' => $this->messageMock,
6980
'objectManager' => $this->objectManagerMock,
7081
'senderResolver' => $this->senderResolverMock,
71-
'mailTransportFactory' => $this->mailTransportFactoryMock
82+
'mailTransportFactory' => $this->mailTransportFactoryMock,
83+
'messageFactory' => $this->messageFactoryMock
7284
]
7385
);
7486
}
@@ -122,10 +134,7 @@ public function testGetTransport($templateType, $messageType, $bodyText, $templa
122134
->with($this->equalTo(['message' => $this->messageMock]))
123135
->willReturn($transport);
124136

125-
$this->objectManagerMock->expects($this->at(0))
126-
->method('create')
127-
->with($this->equalTo(\Magento\Framework\Mail\Message::class))
128-
->willReturn($transport);
137+
$this->messageFactoryMock->expects($this->once())->method('create')->willReturn($transport);
129138

130139
$this->builder->setTemplateIdentifier('identifier')->setTemplateVars($vars)->setTemplateOptions($options);
131140
$this->assertInstanceOf(\Magento\Framework\Mail\TransportInterface::class, $this->builder->getTransport());

0 commit comments

Comments
 (0)