TemplateTest.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Newsletter\Model;
  7. /**
  8. * @magentoDataFixture Magento/Store/_files/core_fixturestore.php
  9. */
  10. class TemplateTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /**
  13. * @var \Magento\Newsletter\Model\Template
  14. */
  15. protected $_model = null;
  16. protected function setUp()
  17. {
  18. $this->_model = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  19. \Magento\Newsletter\Model\Template::class
  20. );
  21. }
  22. /**
  23. * This test expects next themes for areas:
  24. * current_store design/theme/full_name Magento/luma
  25. * fixturestore_store design/theme/full_name Magento/blank
  26. *
  27. * @magentoAppIsolation enabled
  28. * @magentoAppArea adminhtml
  29. * @dataProvider getProcessedTemplateFrontendDataProvider
  30. */
  31. public function testGetProcessedTemplateFrontend($store, $design)
  32. {
  33. $this->_model->setTemplateText('{{view url="Magento_Theme::favicon.ico"}}');
  34. if ($store != 'default') {
  35. \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
  36. \Magento\Framework\App\Config\MutableScopeConfigInterface::class
  37. )->setValue(
  38. \Magento\Theme\Model\View\Design::XML_PATH_THEME_ID,
  39. $design,
  40. 'store',
  41. $store
  42. );
  43. }
  44. $this->_model->emulateDesign($store, 'frontend');
  45. $processedTemplate = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
  46. \Magento\Framework\App\State::class
  47. )->emulateAreaCode(
  48. 'frontend',
  49. [$this->_model, 'getProcessedTemplate']
  50. );
  51. $expectedTemplateText = "frontend/{$design}/en_US/Magento_Theme/favicon.ico";
  52. $this->assertStringEndsWith($expectedTemplateText, $processedTemplate);
  53. $this->_model->revertDesign();
  54. }
  55. /**
  56. * @return array
  57. */
  58. public function getProcessedTemplateFrontendDataProvider()
  59. {
  60. return [
  61. 'frontend' => ['default', 'Magento/luma'],
  62. 'frontend store' => ['fixturestore', 'Magento/blank']
  63. ];
  64. }
  65. /**
  66. * This test expects next themes for areas:
  67. * adminhtml/design/theme/full_name Magento/backend
  68. *
  69. * @magentoAppIsolation enabled
  70. * @dataProvider getProcessedTemplateAreaDataProvider
  71. */
  72. public function testGetProcessedTemplateArea($area, $design)
  73. {
  74. $this->_model->setTemplateText('{{view url="Magento_Theme::favicon.ico"}}');
  75. $this->_model->emulateDesign('default', $area);
  76. $processedTemplate = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
  77. \Magento\Framework\App\State::class
  78. )->emulateAreaCode(
  79. $area,
  80. [$this->_model, 'getProcessedTemplate']
  81. );
  82. $expectedTemplateText = "{$area}/{$design}/en_US/Magento_Theme/favicon.ico";
  83. $this->assertStringEndsWith($expectedTemplateText, $processedTemplate);
  84. }
  85. /**
  86. * @return array
  87. */
  88. public function getProcessedTemplateAreaDataProvider()
  89. {
  90. return [
  91. 'backend' => ['adminhtml', 'Magento/backend']
  92. ];
  93. }
  94. /**
  95. * @magentoConfigFixture current_store system/smtp/disable 0
  96. * @magentoAppIsolation enabled
  97. * @dataProvider isValidToSendDataProvider
  98. */
  99. public function testIsValidToSend($senderEmail, $senderName, $subject, $isValid)
  100. {
  101. $this->_model->setTemplateSenderEmail(
  102. $senderEmail
  103. )->setTemplateSenderName(
  104. $senderName
  105. )->setTemplateSubject(
  106. $subject
  107. );
  108. $this->assertSame($isValid, $this->_model->isValidForSend());
  109. }
  110. /**
  111. * @return array
  112. */
  113. public function isValidToSendDataProvider()
  114. {
  115. return [
  116. ['john.doe@example.com', 'john.doe', 'Test Subject', true],
  117. ['john.doe@example.com', 'john.doe', '', false],
  118. ['john.doe@example.com', '', 'Test Subject', false],
  119. ['john.doe@example.com', '', '', false],
  120. ['', 'john.doe', 'Test Subject', false],
  121. ['', '', 'Test Subject', false],
  122. ['', 'john.doe', '', false],
  123. ['', '', '', false]
  124. ];
  125. }
  126. }