public function testLoadDefault()
 {
     $this->_model->loadDefault('customer_create_account_email_template');
     $this->assertNotEmpty($this->_model->getTemplateText());
     $this->assertNotEmpty($this->_model->getTemplateSubject());
     $this->assertNotEmpty($this->_model->getOrigTemplateVariables());
     $this->assertInternalType('array', \Zend_Json::decode($this->_model->getOrigTemplateVariables()));
     $this->assertNotEmpty($this->_model->getTemplateStyles());
 }
 /**
  * Ensure that the template_styles variable contains styles from either <!--@styles @--> or the "Template Styles"
  * textarea in backend, depending on whether template was loaded from filesystem or DB.
  *
  * @magentoDataFixture Magento/Store/_files/core_fixturestore.php
  * @magentoComponentsDir Magento/Email/Model/_files/design
  * @magentoAppIsolation enabled
  * @magentoDbIsolation enabled
  * @dataProvider templateStylesVariableDataProvider
  *
  * @param string $area
  * @param string $expectedOutput
  * @param array $unexpectedOutputs
  * @param array $templateForDatabase
  */
 public function testTemplateStylesVariable($area, $expectedOutput, $unexpectedOutputs, $templateForDatabase = [])
 {
     if (count($templateForDatabase)) {
         $this->mockModel();
         $this->setUpThemeFallback($area);
         $template = $this->objectManager->create('Magento\\Email\\Model\\Template');
         $template->setData($templateForDatabase);
         $template->save();
         $templateId = $template->getId();
         $this->model->load($templateId);
     } else {
         // <!--@styles @--> parsing only via the loadDefault method. Since email template files won't contain
         // @styles comments by default, it is necessary to mock an object to return testable contents
         $themeDirectory = $this->getMockBuilder('Magento\\Framework\\Filesystem\\Directory\\ReadInterface')->disableOriginalConstructor()->setMethods(['readFile'])->getMockForAbstractClass();
         $themeDirectory->expects($this->once())->method('readFile')->will($this->returnValue('<!--@styles p { color: #111; } @--> {{var template_styles}}'));
         $filesystem = $this->getMockBuilder('\\Magento\\Framework\\Filesystem')->disableOriginalConstructor()->setMethods(['getDirectoryRead'])->getMock();
         $filesystem->expects($this->once())->method('getDirectoryRead')->with(DirectoryList::ROOT)->will($this->returnValue($themeDirectory));
         $this->mockModel($filesystem);
         $this->model->loadDefault('design_email_header_template');
     }
     $processedTemplate = $this->model->getProcessedTemplate();
     foreach ($unexpectedOutputs as $unexpectedOutput) {
         $this->assertNotContains($unexpectedOutput, $processedTemplate);
     }
     $this->assertContains($expectedOutput, $processedTemplate);
 }
Example #3
0
 /**
  * Ensure that the template_styles variable contains styles from either <!--@styles @--> or the "Template Styles"
  * textarea in backend, depending on whether template was loaded from filesystem or DB.
  *
  * @magentoDataFixture Magento/Store/_files/core_fixturestore.php
  * @magentoDataFixture Magento/Email/Model/_files/design/themes.php
  * @magentoAppIsolation enabled
  * @dataProvider templateStylesVariableDataProvider
  *
  * @param string $area
  * @param string $expectedOutput
  * @param array $unexpectedOutputs
  * @param array $templateForDatabase
  */
 public function testTemplateStylesVariable($area, $expectedOutput, $unexpectedOutputs, $templateForDatabase = [])
 {
     $this->_mockModel($this->_getMockedFilesystem());
     $this->setUpThemeFallback($area);
     if (count($templateForDatabase)) {
         $template = $this->_objectManager->create('Magento\\Email\\Model\\Template');
         $template->setData($templateForDatabase);
         $template->save();
         $templateId = $template->getId();
         $this->_model->load($templateId);
     } else {
         // <!--@styles @--> parsing only happens when template is loaded from filesystem
         $this->_model->loadDefault('design_email_header_template');
     }
     $processedTemplate = $this->_model->getProcessedTemplate();
     foreach ($unexpectedOutputs as $unexpectedOutput) {
         $this->assertNotContains($unexpectedOutput, $processedTemplate);
     }
     $this->assertContains($expectedOutput, $processedTemplate);
 }
Example #4
0
 public function testGetPreparedTemplateText()
 {
     $this->_model->loadDefault('customer_create_account_email_template');
     $this->assertContains('<body style', $this->_model->getPreparedTemplateText());
 }