EmailTest.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\ProductAlert\Model;
  7. /**
  8. * @magentoAppIsolation enabled
  9. */
  10. class EmailTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /**
  13. * @var \Magento\ProductAlert\Model\Email
  14. */
  15. protected $_emailModel;
  16. /**
  17. * @var \Magento\TestFramework\ObjectManager
  18. */
  19. protected $_objectManager;
  20. /**
  21. * @var \Magento\Customer\Api\AccountManagementInterface
  22. */
  23. protected $customerAccountManagement;
  24. /**
  25. * @var \Magento\Customer\Helper\View
  26. */
  27. protected $_customerViewHelper;
  28. protected function setUp()
  29. {
  30. $this->_objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
  31. $this->customerAccountManagement = $this->_objectManager->create(
  32. \Magento\Customer\Api\AccountManagementInterface::class
  33. );
  34. $this->_customerViewHelper = $this->_objectManager->create(\Magento\Customer\Helper\View::class);
  35. }
  36. /**
  37. * @magentoDataFixture Magento/Customer/_files/customer.php
  38. * @magentoDataFixture Magento/Catalog/_files/product_simple.php
  39. * @dataProvider customerFunctionDataProvider
  40. *
  41. * @param bool isCustomerIdUsed
  42. */
  43. public function testSend($isCustomerIdUsed)
  44. {
  45. \Magento\TestFramework\Helper\Bootstrap::getInstance()
  46. ->loadArea(\Magento\Framework\App\Area::AREA_FRONTEND);
  47. $this->_emailModel = $this->_objectManager->create(\Magento\ProductAlert\Model\Email::class);
  48. /** @var \Magento\Store\Model\Website $website */
  49. $website = $this->_objectManager->create(\Magento\Store\Model\Website::class);
  50. $website->load(1);
  51. $this->_emailModel->setWebsite($website);
  52. /** @var \Magento\Customer\Api\Data\CustomerInterface $customer */
  53. $customerRepository = $this->_objectManager->create(\Magento\Customer\Api\CustomerRepositoryInterface::class);
  54. $customer = $customerRepository->getById(1);
  55. if ($isCustomerIdUsed) {
  56. $this->_emailModel->setCustomerId(1);
  57. } else {
  58. $this->_emailModel->setCustomerData($customer);
  59. }
  60. /** @var \Magento\Catalog\Model\Product $product */
  61. $product = $this->_objectManager->create(\Magento\Catalog\Model\Product::class);
  62. $product->load(1);
  63. $this->_emailModel->addPriceProduct($product);
  64. $this->_emailModel->send();
  65. /** @var \Magento\TestFramework\Mail\Template\TransportBuilderMock $transportBuilder */
  66. $transportBuilder = $this->_objectManager->get(
  67. \Magento\TestFramework\Mail\Template\TransportBuilderMock::class
  68. );
  69. $this->assertContains(
  70. 'John Smith,',
  71. $transportBuilder->getSentMessage()->getRawMessage()
  72. );
  73. }
  74. public function customerFunctionDataProvider()
  75. {
  76. return [
  77. [true],
  78. [false],
  79. ];
  80. }
  81. }