![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/dev/tests/integration/testsuite/Magento/Newsletter/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Newsletter\Model; use Magento\Framework\App\TemplateTypesInterface; use Magento\Framework\View\DesignInterface; use Magento\Store\Model\ScopeInterface; use Magento\TestFramework\Helper\Bootstrap; /** * @magentoDataFixture Magento/Store/_files/core_fixturestore.php */ class TemplateTest extends \PHPUnit\Framework\TestCase { /** * @var \Magento\Newsletter\Model\Template */ protected $_model = null; protected function setUp(): void { $this->_model = Bootstrap::getObjectManager()->create( \Magento\Newsletter\Model\Template::class ); } /** * This test expects next themes for areas: * current_store design/theme/full_name Magento/luma * fixturestore_store design/theme/full_name Magento/blank * * @magentoAppIsolation enabled * @magentoAppArea adminhtml * @dataProvider getProcessedTemplateFrontendDataProvider */ public function testGetProcessedTemplateFrontend($store, $design) { $this->_model->setTemplateText('{{view url="Magento_Theme::favicon.ico"}}'); if ($store != 'default') { Bootstrap::getObjectManager()->get( \Magento\Framework\App\Config\MutableScopeConfigInterface::class )->setValue( \Magento\Theme\Model\View\Design::XML_PATH_THEME_ID, $design, 'store', $store ); } $this->_model->emulateDesign($store, 'frontend'); $processedTemplate = Bootstrap::getObjectManager()->get( \Magento\Framework\App\State::class )->emulateAreaCode( 'frontend', [$this->_model, 'getProcessedTemplate'] ); $expectedTemplateText = "frontend/{$design}/en_US/Magento_Theme/favicon.ico"; $this->assertStringEndsWith($expectedTemplateText, $processedTemplate); $this->_model->revertDesign(); } /** * @return array */ public function getProcessedTemplateFrontendDataProvider() { return [ 'frontend' => ['default', 'Magento/luma'], 'frontend store' => ['fixturestore', 'Magento/blank'] ]; } /** * This test expects next themes for areas: * adminhtml/design/theme/full_name Magento/backend * * @magentoAppIsolation enabled * @dataProvider getProcessedTemplateAreaDataProvider */ public function testGetProcessedTemplateArea($area, $design) { $this->_model->setTemplateText('{{view url="Magento_Theme::favicon.ico"}}'); $this->_model->emulateDesign('default', $area); $processedTemplate = Bootstrap::getObjectManager()->get( \Magento\Framework\App\State::class )->emulateAreaCode( $area, [$this->_model, 'getProcessedTemplate'] ); $expectedTemplateText = "{$area}/{$design}/en_US/Magento_Theme/favicon.ico"; $this->assertStringEndsWith($expectedTemplateText, $processedTemplate); } /** * @return array */ public function getProcessedTemplateAreaDataProvider() { $designTheme = Bootstrap::getObjectManager() ->get(DesignInterface::class) ->getConfigurationDesignTheme('adminhtml'); return [ 'backend' => ['adminhtml', $designTheme] ]; } /** * @magentoConfigFixture current_store system/smtp/disable 0 * @magentoAppIsolation enabled * @dataProvider isValidToSendDataProvider */ public function testIsValidToSend($senderEmail, $senderName, $subject, $isValid) { $this->_model->setTemplateSenderEmail( $senderEmail )->setTemplateSenderName( $senderName )->setTemplateSubject( $subject ); $this->assertSame($isValid, $this->_model->isValidForSend()); } /** * @return array */ public function isValidToSendDataProvider() { return [ ['[email protected]', 'john.doe', 'Test Subject', true], ['[email protected]', 'john.doe', '', false], ['[email protected]', '', 'Test Subject', false], ['[email protected]', '', '', false], ['', 'john.doe', 'Test Subject', false], ['', '', 'Test Subject', false], ['', 'john.doe', '', false], ['', '', '', false] ]; } /** * @magentoAppIsolation enabled * @magentoDbIsolation enabled */ public function testLegacyTemplateFromDbLoadsInStrictMode() { $objectManager = Bootstrap::getObjectManager(); $this->_model->setTemplateType(TemplateTypesInterface::TYPE_HTML); $templateText = '{{var store.isSaveAllowed()}} - {{template config_path="foobar"}}'; $this->_model->setTemplateText($templateText); $this->_model->setTemplateId('abc'); $template = $objectManager->create(\Magento\Email\Model\Template::class); $templateData = [ 'template_code' => 'some_unique_code', 'template_type' => TemplateTypesInterface::TYPE_HTML, 'template_text' => '{{var this.template_code}}' . ' - {{var store.isSaveAllowed()}} - {{var this.getTemplateCode()}}', ]; $template->setData($templateData); $template->save(); // Store the ID of the newly created template in the system config so that this template will be loaded $objectManager->get(\Magento\Framework\App\Config\MutableScopeConfigInterface::class) ->setValue('foobar', $template->getId(), ScopeInterface::SCOPE_STORE, 'default'); $this->_model->emulateDesign('default', 'frontend'); $processedTemplate = Bootstrap::getObjectManager()->get( \Magento\Framework\App\State::class )->emulateAreaCode( 'frontend', [$this->_model, 'getProcessedTemplate'] ); self::assertEquals(' - some_unique_code - - some_unique_code', $processedTemplate); } /** * @magentoAppIsolation enabled * @magentoDbIsolation enabled */ public function testTemplateFromDbLoadsInStrictMode() { $objectManager = Bootstrap::getObjectManager(); $this->_model->setTemplateType(TemplateTypesInterface::TYPE_HTML); $templateText = '{{var store.isSaveAllowed()}} - {{template config_path="foobar"}}'; $this->_model->setTemplateText($templateText); $this->_model->setTemplateId('abc'); $template = $objectManager->create(\Magento\Email\Model\Template::class); $templateData = [ 'template_code' => 'some_unique_code', 'template_type' => TemplateTypesInterface::TYPE_HTML, 'template_text' => '{{var this.template_code}}' . ' - {{var store.isSaveAllowed()}} - {{var this.getTemplateCode()}}', ]; $template->setData($templateData); $template->save(); // Store the ID of the newly created template in the system config so that this template will be loaded $objectManager->get(\Magento\Framework\App\Config\MutableScopeConfigInterface::class) ->setValue('foobar', $template->getId(), ScopeInterface::SCOPE_STORE, 'default'); $this->_model->emulateDesign('default', 'frontend'); $processedTemplate = Bootstrap::getObjectManager()->get( \Magento\Framework\App\State::class )->emulateAreaCode( 'frontend', [$this->_model, 'getProcessedTemplate'] ); self::assertEquals(' - some_unique_code - - some_unique_code', $processedTemplate); } }