InvoiceEmailSenderHandlerTest.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\Sales\Model;
  8. use Magento\Config\Model\Config;
  9. use Magento\Framework\App\Config\ScopeConfigInterface;
  10. use Magento\Store\Model\ScopeInterface;
  11. class InvoiceEmailSenderHandlerTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /**
  14. * @var \Magento\Sales\Model\ResourceModel\Order\Invoice\Collection
  15. */
  16. private $entityCollection;
  17. /**
  18. * @var \Magento\Sales\Model\EmailSenderHandler
  19. */
  20. private $emailSender;
  21. protected function setUp()
  22. {
  23. /** @var \Magento\Sales\Model\Order\Email\Container\InvoiceIdentity $invoiceIdentity */
  24. $invoiceIdentity = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  25. \Magento\Sales\Model\Order\Email\Container\InvoiceIdentity::class
  26. );
  27. /** @var \Magento\Sales\Model\Order\Email\Sender\InvoiceSender $invoiceSender */
  28. $invoiceSender = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
  29. ->create(
  30. \Magento\Sales\Model\Order\Email\Sender\InvoiceSender::class,
  31. [
  32. 'identityContainer' => $invoiceIdentity,
  33. ]
  34. );
  35. $entityResource = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
  36. ->create(\Magento\Sales\Model\ResourceModel\Order\Invoice::class);
  37. $this->entityCollection = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  38. \Magento\Sales\Model\ResourceModel\Order\Invoice\Collection::class
  39. );
  40. $this->emailSender = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  41. \Magento\Sales\Model\EmailSenderHandler::class,
  42. [
  43. 'emailSender' => $invoiceSender,
  44. 'entityResource' => $entityResource,
  45. 'entityCollection' => $this->entityCollection,
  46. 'identityContainer' => $invoiceIdentity,
  47. ]
  48. );
  49. }
  50. /**
  51. * @magentoAppIsolation enabled
  52. * @magentoDbIsolation disabled
  53. * @magentoDataFixture Magento/Sales/_files/invoice_list_different_stores.php
  54. */
  55. public function testInvoiceEmailSenderExecute()
  56. {
  57. $expectedResult = 1;
  58. $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
  59. /** @var Config $defConfig */
  60. $defConfig = $objectManager->create(Config::class);
  61. $defConfig->setScope(ScopeConfigInterface::SCOPE_TYPE_DEFAULT);
  62. $defConfig->setDataByPath('sales_email/general/async_sending', 1);
  63. $defConfig->save();
  64. /** @var Config $storeConfig */
  65. $storeConfig = $objectManager->create(Config::class);
  66. $storeConfig->setScope(ScopeInterface::SCOPE_STORES);
  67. $storeConfig->setStore('fixture_second_store');
  68. $storeConfig->setDataByPath('sales_email/invoice/enabled', 0);
  69. $storeConfig->save();
  70. $sendCollection = clone $this->entityCollection;
  71. $sendCollection->addFieldToFilter('send_email', ['eq' => 1]);
  72. $sendCollection->addFieldToFilter('email_sent', ['null' => true]);
  73. $this->emailSender->sendEmails();
  74. $this->assertCount($expectedResult, $sendCollection->getItems());
  75. }
  76. /**
  77. * @inheritdoc
  78. * @throws \Magento\Framework\Exception\LocalizedException
  79. * @throws \Exception
  80. */
  81. protected function tearDown()
  82. {
  83. /** @var \Magento\Config\Model\Config $defConfig */
  84. $defConfig = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
  85. ->create(\Magento\Config\Model\Config::class);
  86. $defConfig->setScope(\Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT);
  87. $defConfig->setDataByPath('sales_email/general/async_sending', 0);
  88. $defConfig->save();
  89. }
  90. }