public function testToOptionArray() { $collection = $this->getMock('Magento\\Email\\Model\\Resource\\Template\\Collection', [], [], '', false); $collection->expects($this->once())->method('toOptionArray')->will($this->returnValue([['value' => 'template_one', 'label' => 'Template One'], ['value' => 'template_two', 'label' => 'Template Two']])); $this->_coreRegistry->expects($this->once())->method('registry')->with('config_system_email_template')->will($this->returnValue($collection)); $this->_emailConfig->expects($this->once())->method('getTemplateLabel')->with('template_new')->will($this->returnValue('Template New')); $expectedResult = [['value' => 'template_new', 'label' => 'Template New (Default)'], ['value' => 'template_one', 'label' => 'Template One'], ['value' => 'template_two', 'label' => 'Template Two']]; $this->_model->setPath('template/new'); $this->assertEquals($expectedResult, $this->_model->toOptionArray()); }
public function testGetAvailableTemplates() { $this->_model->expects($this->atLeastOnce())->method('getThemeTemplates')->will($this->returnValue([])); $expectedTemplates = (require __DIR__ . '/Config/_files/email_templates_merged.php'); foreach ($this->_model->getAvailableTemplates() as $templateOptions) { $this->assertArrayHasKey($templateOptions['value'], $expectedTemplates); $expectedOptions = $expectedTemplates[$templateOptions['value']]; $this->assertEquals($expectedOptions['label'], (string) $templateOptions['label']); $this->assertEquals($expectedOptions['module'], (string) $templateOptions['group']); } }
/** * @param $templateType string * @param $templateText string * @param $parsedTemplateText string * @param $expectedTemplateSubject string|null * @param $expectedOrigTemplateVariables array|null * @param $expectedTemplateStyles string|null * @dataProvider loadDefaultDataProvider */ public function testLoadDefault($templateType, $templateText, $parsedTemplateText, $expectedTemplateSubject, $expectedOrigTemplateVariables, $expectedTemplateStyles) { $model = $this->getModelMock(['getDesignParams']); $designParams = ['area' => Area::AREA_FRONTEND, 'theme' => 'Magento/blank', 'locale' => Locale::DEFAULT_SYSTEM_LOCALE]; $model->expects($this->once())->method('getDesignParams')->will($this->returnValue($designParams)); $templateId = 'templateId'; $templateFile = 'templateFile'; $this->emailConfig->expects($this->once())->method('getTemplateFilename')->with($templateId)->will($this->returnValue($templateFile)); $this->emailConfig->expects($this->once())->method('getTemplateType')->with($templateId)->will($this->returnValue($templateType)); $modulesDir = $this->getMockBuilder('Magento\\Framework\\Filesystem\\Directory\\ReadInterface')->setMethods(['readFile', 'getRelativePath'])->getMockForAbstractClass(); $relativePath = 'relativePath'; $modulesDir->expects($this->once())->method('getRelativePath')->with($templateFile)->will($this->returnValue($relativePath)); $modulesDir->expects($this->once())->method('readFile')->will($this->returnValue($templateText)); $this->filesystem->expects($this->once())->method('getDirectoryRead')->with(DirectoryList::ROOT)->will($this->returnValue($modulesDir)); $model->loadDefault($templateId); if ($templateType === 'html') { $this->assertEquals(TemplateTypesInterface::TYPE_HTML, $model->getTemplateType()); } else { $this->assertEquals(TemplateTypesInterface::TYPE_TEXT, $model->getTemplateType()); } $this->assertEquals($templateId, $model->getId()); $this->assertEquals($parsedTemplateText, $model->getTemplateText()); $this->assertEquals($expectedTemplateSubject, $model->getTemplateSubject()); $this->assertEquals($expectedOrigTemplateVariables, $model->getData('orig_template_variables')); $this->assertEquals($expectedTemplateStyles, $model->getTemplateStyles()); }
public function testGetDefaultTemplatesAsOptionsArray() { $directoryMock = $this->getMock('\\Magento\\Framework\\Filesystem\\Directory\\Read', [], [], '', false); $this->filesystemMock->expects($this->any())->method('getDirectoryRead')->will($this->returnValue($directoryMock)); $this->_emailConfigMock->expects($this->once())->method('getAvailableTemplates')->will($this->returnValue([['value' => 'template_b2', 'label' => 'Template B2', 'group' => 'Fixture_ModuleB'], ['value' => 'template_a', 'label' => 'Template A', 'group' => 'Fixture_ModuleA'], ['value' => 'template_b1', 'label' => 'Template B1', 'group' => 'Fixture_ModuleB']])); $this->assertEmpty($this->_block->getData('template_options')); $this->_block->setTemplate('my/custom\\template.phtml'); $this->_block->toHtml(); $expectedResult = ['' => [['value' => '', 'label' => '', 'group' => '']], 'Fixture_ModuleA' => [['value' => 'template_a', 'label' => 'Template A', 'group' => 'Fixture_ModuleA']], 'Fixture_ModuleB' => [['value' => 'template_b1', 'label' => 'Template B1', 'group' => 'Fixture_ModuleB'], ['value' => 'template_b2', 'label' => 'Template B2', 'group' => 'Fixture_ModuleB']]]; $this->assertEquals($expectedResult, $this->_block->getData('template_options'), 'Options are expected to be sorted by modules and by labels of email templates within modules'); }
public function testGetDefaultTemplatesAsOptionsArray() { $dirValueMap = array(array(\Magento\Framework\App\Filesystem::ROOT_DIR, 'var/www/magento\\rootdir/'), array(\Magento\Framework\App\Filesystem::APP_DIR, 'var/www/magento\\rootdir\\app/'), array(\Magento\Framework\App\Filesystem::THEMES_DIR, 'var\\www/magento\\rootdir\\app/themes/')); $this->directoryMock = $this->getMock('\\Magento\\Framework\\Filesystem\\Directory\\Read', array(), array(), '', false); $this->directoryMock->expects($this->any())->method('isFile')->will($this->returnValue(false)); $this->directoryMock->expects($this->any())->method('getRelativePath')->will($this->returnValue('')); $this->filesystemMock->expects($this->any())->method('getDirectoryRead')->will($this->returnValue($this->directoryMock)); $this->filesystemMock->expects($this->any())->method('getPath')->will($this->returnValueMap($dirValueMap)); $this->_emailConfigMock->expects($this->once())->method('getAvailableTemplates')->will($this->returnValue(array('template_b2', 'template_a', 'template_b1'))); $this->_emailConfigMock->expects($this->exactly(3))->method('getTemplateModule')->will($this->onConsecutiveCalls('Fixture_ModuleB', 'Fixture_ModuleA', 'Fixture_ModuleB')); $this->_emailConfigMock->expects($this->exactly(3))->method('getTemplateLabel')->will($this->onConsecutiveCalls('Template B2', 'Template A', 'Template B1')); $this->assertEmpty($this->_block->getData('template_options')); $this->_block->setTemplate('my/custom\\template.phtml'); $this->_block->toHtml(); $expectedResult = array('' => array(array('value' => '', 'label' => '', 'group' => '')), 'Fixture_ModuleA' => array(array('value' => 'template_a', 'label' => 'Template A', 'group' => 'Fixture_ModuleA')), 'Fixture_ModuleB' => array(array('value' => 'template_b1', 'label' => 'Template B1', 'group' => 'Fixture_ModuleB'), array('value' => 'template_b2', 'label' => 'Template B2', 'group' => 'Fixture_ModuleB'))); $this->assertEquals($expectedResult, $this->_block->getData('template_options'), 'Options are expected to be sorted by modules and by labels of email templates within modules'); }
/** * @param $templateType string * @param $templateText string * @param $parsedTemplateText string * @param $expectedTemplateSubject string|null * @param $expectedOrigTemplateVariables array|null * @param $expectedTemplateStyles string|null * @dataProvider loadDefaultDataProvider */ public function testLoadDefault($templateType, $templateText, $parsedTemplateText, $expectedTemplateSubject, $expectedOrigTemplateVariables, $expectedTemplateStyles) { $model = $this->getModelMock(); $templateId = 'templateId'; $templateFile = 'templateFile'; $this->emailConfig->expects($this->once())->method('getTemplateFilename')->with($templateId)->will($this->returnValue($templateFile)); $this->emailConfig->expects($this->once())->method('getTemplateType')->with($templateId)->will($this->returnValue($templateType)); $modulesDir = $this->getMockBuilder('Magento\\Framework\\Filesystem\\Directory\\ReadInterface')->setMethods(['readFile', 'getRelativePath'])->getMockForAbstractClass(); $relativePath = 'relativePath'; $modulesDir->expects($this->once())->method('getRelativePath')->with($templateFile)->will($this->returnValue($relativePath)); $modulesDir->expects($this->once())->method('readFile')->will($this->returnValue($templateText)); $this->filesystem->expects($this->once())->method('getDirectoryRead')->with(\Magento\Framework\App\Filesystem\DirectoryList::MODULES)->will($this->returnValue($modulesDir)); $model->loadDefault($templateId); if ($templateType === 'html') { $this->assertEquals(\Magento\Email\Model\Template::TYPE_HTML, $model->getTemplateType()); } else { $this->assertEquals(\Magento\Email\Model\Template::TYPE_TEXT, $model->getTemplateType()); } $this->assertEquals($templateId, $model->getId()); $this->assertEquals($parsedTemplateText, $model->getTemplateText()); $this->assertEquals($expectedTemplateSubject, $model->getTemplateSubject()); $this->assertEquals($expectedOrigTemplateVariables, $model->getData('orig_template_variables')); $this->assertEquals($expectedTemplateStyles, $model->getTemplateStyles()); }