123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- <?php
- namespace Dotdigitalgroup\Email\Test\Unit\Plugin;
- use Dotdigitalgroup\Email\Helper\Transactional;
- use Dotdigitalgroup\Email\Plugin\MessagePlugin;
- use Magento\Email\Model\ResourceModel\Template;
- use Magento\Email\Model\TemplateFactory;
- use Magento\Framework\Mail\MessageInterface;
- use Magento\Framework\Registry;
- use PHPUnit\Framework\TestCase;
- class MessagePluginTest extends TestCase
- {
- /**
- * @var Registry|\PHPUnit_Framework_MockObject_MockObject
- */
- private $registryMock;
- /**
- * @var Transactional|\PHPUnit_Framework_MockObject_MockObject
- */
- private $transactionalHelperMock;
- /**
- * @var Template|\PHPUnit_Framework_MockObject_MockObject
- */
- private $templateResourceModelMock;
- /**
- * @var TemplateFactory|\PHPUnit_Framework_MockObject_MockObject
- */
- private $templateModelMock;
- /**
- * @var MessagePlugin
- */
- private $plugin;
- /**
- * @var MessageInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- private $messageMock;
- /**
- * @return void
- */
- protected function setUp()
- {
- $this->messageMock = $this->createMock(MessageInterface::class);
- $this->registryMock = $this->createMock(Registry::class);
- $this->transactionalHelperMock = $this->createMock(Transactional::class);
- $this->templateResourceModelMock = $this->createMock(Template::class);
- $this->templateModelMock = $this->createMock(TemplateFactory::class);
- $this->plugin = new MessagePlugin(
- $this->registryMock,
- $this->transactionalHelperMock,
- $this->templateResourceModelMock,
- $this->templateModelMock
- );
- }
- public function testNoActionTakenIfNotFromTemplateRoute()
- {
- $storeId = 1;
- $this->mockRegistry(null, $storeId);
- $this->mockTransactionalHelperToReturnValueForSMTPEnabled($storeId, true);
- $this->templateModelMock->expects($this->never())
- ->method('create');
- $this->plugin->afterSetBody($this->messageMock, null);
- }
- public function testNoActionTakenIfDotmailerSMTPIsDisabled()
- {
- $storeId = 1;
- $this->mockRegistry(123456, $storeId);
- $this->mockTransactionalHelperToReturnValueForSMTPEnabled($storeId, false);
- $this->templateModelMock->expects($this->never())
- ->method('create');
- $this->plugin->afterSetBody($this->messageMock, null);
- }
- public function testFromAddressNotSetWhenNotADotmailerTemplate()
- {
- $templateId = 123456;
- $storeId = 1;
- $this->mockRegistry($templateId, $storeId);
- $this->mockTransactionalHelperToReturnValueForSMTPEnabled($storeId, true);
- $this->mockTemplateCollectionToReturnTemplate(false, $templateId, '', '');
- $this->messageMock->expects($this->never())
- ->method('setFrom');
- $this->plugin->afterSetBody($this->messageMock, null);
- }
- public function testFromSetWhenDotmailerTemplateAndDotmailerSmtpIsEnabled()
- {
- $templateId = 123456;
- $storeId = 1;
- $senderEmail = 'test@dotmailer.com';
- $senderName = 'dotmailer';
- $this->mockRegistry($templateId, $storeId);
- $this->mockTransactionalHelperToReturnValueForSMTPEnabled($storeId, true);
- $this->mockTemplateCollectionToReturnTemplate(true, $templateId, $senderEmail, $senderName);
- $this->messageMock->expects($this->once())
- ->method('setFrom')
- ->with($senderEmail, $senderName);
- $this->plugin->afterSetBody($this->messageMock, null);
- }
- public function testFromClearedWhenZendMail()
- {
- $templateId = 123456;
- $storeId = 1;
- $senderEmail = 'test@dotmailer.com';
- $senderName = 'dotmailer';
- $this->mockRegistry($templateId, $storeId);
- $this->mockTransactionalHelperToReturnValueForSMTPEnabled($storeId, true);
- $this->mockTemplateCollectionToReturnTemplate(true, $templateId, $senderEmail, $senderName);
- $this->messageMock = $this->createMock(Magento22MailClassTestDouble::class);
- $this->messageMock->expects($this->once())
- ->method('clearFrom');
- $this->messageMock->expects($this->once())
- ->method('setFrom')
- ->with($senderEmail, $senderName);
- $this->plugin->afterSetBody($this->messageMock, null);
- }
- private function mockRegistry($templateId, $storeId)
- {
- $this->registryMock->method('registry')
- ->withConsecutive(
- ['dotmailer_current_template_id'],
- ['transportBuilderPluginStoreId']
- )
- ->willReturnOnConsecutiveCalls($templateId, $storeId);
- }
- private function mockTransactionalHelperToReturnValueForSMTPEnabled($storeId, $value)
- {
- $this->transactionalHelperMock->method('isEnabled')
- ->with($storeId)
- ->willReturn($value);
- }
- private function mockTemplateCollectionToReturnTemplate(
- $isDotmailerTemplate,
- $templateId,
- $senderEmail,
- $senderName
- ) {
- $templateCode = 'dm_template_code';
- $templateModelMock = $this->createMock(\Magento\Email\Model\Template::class);
- $templateModelMock->method('__call')
- ->withConsecutive(
- [$this->equalTo('getTemplateCode')],
- [$this->equalTo('getTemplateSenderEmail')],
- [$this->equalTo('getTemplateSenderName')]
- )
- ->willReturnOnConsecutiveCalls(
- $templateCode,
- $senderEmail,
- $senderName
- );
- $this->templateModelMock->method('create')
- ->willReturn($templateModelMock);
- $this->templateResourceModelMock->expects($this->once())
- ->method('load')
- ->with($templateModelMock, $this->stringContains($templateId));
- $this->transactionalHelperMock->method('isDotmailerTemplate')
- ->willReturn($isDotmailerTemplate);
- return $templateModelMock;
- }
- }
|