TransportBuilderTest.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Newsletter\Test\Unit\Model\Queue;
  7. use Magento\Framework\App\TemplateTypesInterface;
  8. use Magento\Framework\Mail\MessageInterface;
  9. class TransportBuilderTest extends \PHPUnit\Framework\TestCase
  10. {
  11. /**
  12. * @var string
  13. */
  14. protected $builderClassName = \Magento\Newsletter\Model\Queue\TransportBuilder::class;
  15. /**
  16. * @var \Magento\Newsletter\Model\Queue\TransportBuilder
  17. */
  18. protected $builder;
  19. /**
  20. * @var \Magento\Framework\Mail\Template\FactoryInterface | \PHPUnit_Framework_MockObject_MockObject
  21. */
  22. protected $templateFactoryMock;
  23. /**
  24. * @var \Magento\Framework\Mail\Message | \PHPUnit_Framework_MockObject_MockObject
  25. */
  26. protected $messageMock;
  27. /**
  28. * @var \Magento\Framework\ObjectManagerInterface | \PHPUnit_Framework_MockObject_MockObject
  29. */
  30. protected $objectManagerMock;
  31. /**
  32. * @var \Magento\Framework\Mail\Template\SenderResolverInterface | \PHPUnit_Framework_MockObject_MockObject
  33. */
  34. protected $senderResolverMock;
  35. /**
  36. * @var \PHPUnit_Framework_MockObject_MockObject
  37. */
  38. protected $mailTransportFactoryMock;
  39. /**
  40. * @var \Magento\Framework\Mail\MessageInterfaceFactory | \PHPUnit_Framework_MockObject_MockObject
  41. */
  42. private $messageFactoryMock;
  43. /**
  44. * @return void
  45. */
  46. public function setUp()
  47. {
  48. $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  49. $this->templateFactoryMock = $this->createMock(\Magento\Framework\Mail\Template\FactoryInterface::class);
  50. $this->messageMock = $this->getMockBuilder(\Magento\Framework\Mail\MessageInterface::class)
  51. ->disableOriginalConstructor()
  52. ->setMethods(['setBodyHtml', 'setSubject'])
  53. ->getMockForAbstractClass();
  54. $this->objectManagerMock = $this->createMock(\Magento\Framework\ObjectManagerInterface::class);
  55. $this->senderResolverMock = $this->createMock(\Magento\Framework\Mail\Template\SenderResolverInterface::class);
  56. $this->mailTransportFactoryMock = $this->getMockBuilder(
  57. \Magento\Framework\Mail\TransportInterfaceFactory::class
  58. )->disableOriginalConstructor()
  59. ->setMethods(['create'])
  60. ->getMock();
  61. $this->messageFactoryMock = $this->getMockBuilder(\Magento\Framework\Mail\MessageInterfaceFactory::class)
  62. ->disableOriginalConstructor()
  63. ->setMethods(['create'])
  64. ->getMockForAbstractClass();
  65. $this->messageFactoryMock->expects($this->atLeastOnce())->method('create')->willReturn($this->messageMock);
  66. $this->builder = $objectManagerHelper->getObject(
  67. $this->builderClassName,
  68. [
  69. 'templateFactory' => $this->templateFactoryMock,
  70. 'message' => $this->messageMock,
  71. 'objectManager' => $this->objectManagerMock,
  72. 'senderResolver' => $this->senderResolverMock,
  73. 'mailTransportFactory' => $this->mailTransportFactoryMock,
  74. 'messageFactory' => $this->messageFactoryMock
  75. ]
  76. );
  77. }
  78. /**
  79. * @param int $templateType
  80. * @param string $bodyText
  81. * @return void
  82. * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  83. */
  84. public function testGetTransport(
  85. $templateType = TemplateTypesInterface::TYPE_HTML,
  86. $bodyText = '<h1>Html message</h1>'
  87. ) {
  88. $filter = $this->createMock(\Magento\Email\Model\Template\Filter::class);
  89. $data = [
  90. 'template_subject' => 'Email Subject',
  91. 'template_text' => $bodyText,
  92. 'template_styles' => 'Styles',
  93. 'template_type' => $templateType,
  94. 'template_filter' => $filter,
  95. ];
  96. $vars = ['reason' => 'Reason', 'customer' => 'Customer'];
  97. $options = ['area' => 'frontend', 'store' => 1];
  98. $template = $this->createMock(\Magento\Email\Model\Template::class);
  99. $template->expects($this->once())->method('setVars')->with($this->equalTo($vars))->will($this->returnSelf());
  100. $template->expects(
  101. $this->once()
  102. )->method(
  103. 'setOptions'
  104. )->with(
  105. $this->equalTo($options)
  106. )->will(
  107. $this->returnSelf()
  108. );
  109. $template->expects($this->once())->method('getSubject')->will($this->returnValue('Email Subject'));
  110. $template->expects($this->once())->method('setData')->with($this->equalTo($data))->will($this->returnSelf());
  111. $template->expects($this->once())
  112. ->method('getProcessedTemplate')
  113. ->with($vars)
  114. ->willReturn($bodyText);
  115. $template->expects($this->once())
  116. ->method('setTemplateFilter')
  117. ->with($filter);
  118. $this->templateFactoryMock->expects(
  119. $this->once()
  120. )->method(
  121. 'get'
  122. )->with(
  123. $this->equalTo('identifier')
  124. )->will(
  125. $this->returnValue($template)
  126. );
  127. $this->messageMock->expects($this->once())->method('setBodyHtml')->willReturnSelf();
  128. $this->messageMock->expects($this->once())->method('setSubject')->willReturnSelf();
  129. $this->builder->setTemplateIdentifier(
  130. 'identifier'
  131. )->setTemplateVars(
  132. $vars
  133. )->setTemplateOptions(
  134. $options
  135. )->setTemplateData(
  136. $data
  137. );
  138. $this->builder->getTransport();
  139. }
  140. }