public function testRenderingWithoutRenderer() { $this->removeRendererFromPhrase(); $result = 'some text'; $this->phrase = new \Magento\Framework\Phrase($result); $this->assertEquals($result, $this->phrase->render()); }
protected function tearDown() { Phrase::setRenderer($this->renderer); /** @var \Magento\Framework\App\Cache\Type\Translate $cache */ $cache = $this->objectManager->get('Magento\\Framework\\App\\Cache\\Type\\Translate'); $cache->clean(); }
protected function setUp() { /** @var \Magento\Framework\View\FileSystem $viewFileSystem */ $viewFileSystem = $this->getMock('Magento\\Framework\\View\\FileSystem', ['getLocaleFileName', 'getDesignTheme'], [], '', false); $viewFileSystem->expects($this->any())->method('getLocaleFileName')->will($this->returnValue(dirname(__DIR__) . '/Theme/Model/_files/design/frontend/Test/default/i18n/en_US.csv')); /** @var \Magento\Framework\View\Design\ThemeInterface $theme */ $theme = $this->getMock('Magento\\Framework\\View\\Design\\ThemeInterface', []); $theme->expects($this->any())->method('getId')->will($this->returnValue(10)); $viewFileSystem->expects($this->any())->method('getDesignTheme')->will($this->returnValue($theme)); $objectManager = Bootstrap::getObjectManager(); $objectManager->addSharedInstance($viewFileSystem, 'Magento\\Framework\\View\\FileSystem'); /** @var $moduleReader \Magento\Framework\Module\Dir\Reader */ $moduleReader = $objectManager->get('Magento\\Framework\\Module\\Dir\\Reader'); $moduleReader->setModuleDir('Magento_Store', 'i18n', dirname(__DIR__) . '/Translation/Model/_files/Magento/Store/i18n'); $moduleReader->setModuleDir('Magento_Catalog', 'i18n', dirname(__DIR__) . '/Translation/Model/_files/Magento/Catalog/i18n'); /** @var \Magento\Theme\Model\View\Design $designModel */ $designModel = $this->getMock('Magento\\Theme\\Model\\View\\Design', ['getDesignTheme'], [$objectManager->get('Magento\\Store\\Model\\StoreManagerInterface'), $objectManager->get('Magento\\Framework\\View\\Design\\Theme\\FlyweightFactory'), $objectManager->get('Magento\\Framework\\App\\Config\\ScopeConfigInterface'), $objectManager->get('Magento\\Theme\\Model\\ThemeFactory'), $objectManager->get('Magento\\Framework\\ObjectManagerInterface'), $objectManager->get('Magento\\Framework\\App\\State'), ['frontend' => 'Test/default']]); $designModel->expects($this->any())->method('getDesignTheme')->will($this->returnValue($theme)); $objectManager->addSharedInstance($designModel, 'Magento\\Theme\\Model\\View\\Design\\Proxy'); $model = $objectManager->create('Magento\\Framework\\Translate'); $objectManager->addSharedInstance($model, 'Magento\\Framework\\Translate'); $objectManager->removeSharedInstance('Magento\\Framework\\Phrase\\Renderer\\Composite'); $objectManager->removeSharedInstance('Magento\\Framework\\Phrase\\Renderer\\Translate'); \Magento\Framework\Phrase::setRenderer($objectManager->get('Magento\\Framework\\Phrase\\RendererInterface')); $model->loadData(\Magento\Framework\App\Area::AREA_FRONTEND); }
/** * @param string $message * @param string $expectedMessage * @return void * @dataProvider constantsDataProvider */ public function testConstants($message, $expectedMessage) { $this->renderedMessage = $message; $this->rendererMock->expects($this->once())->method('render')->will($this->returnValue($this->renderedMessage)); \Magento\Framework\Phrase::setRenderer($this->rendererMock); $exception = new NoSuchEntityException(new Phrase($message, ['consumer_id' => 1, 'resources' => 'record2'])); $this->assertSame($expectedMessage, $exception->getMessage()); }
/** * Combine submessages delimited by separator and render them with main message * * @param string $mainMessage * @param MessageInterface[] $subMessages * @param string $separator * @return Phrase */ public function create($mainMessage, $subMessages, $separator = '; ') { $renderedErrors = ''; $eol = ''; /** @var MessageInterface $subMessage */ foreach ($subMessages as $subMessage) { if ($subMessage instanceof MessageInterface) { $phrase = new Phrase($subMessage->getText()); } else { $phrase = new Phrase('Cannot render error message!'); } $renderedErrors .= $eol . $phrase->render(); $eol = $separator; } //$mainMessage should contain %1 to be substituted by concatenated errors return new Phrase($mainMessage, [$renderedErrors]); }
protected function setUp() { $this->_booleanUtils = $this->getMock('\\Magento\\Framework\\Stdlib\\BooleanUtils'); $this->_booleanUtils->expects($this->any())->method('toBoolean')->will($this->returnValueMap([['true', true], ['false', false]])); $this->_model = new String($this->_booleanUtils); $translateRenderer = $this->getMockForAbstractClass('Magento\\Framework\\Phrase\\RendererInterface'); $translateRenderer->expects($this->any())->method('render')->will($this->returnCallback(function ($input) { return end($input) . ' (translated)'; })); \Magento\Framework\Phrase::setRenderer($translateRenderer); }
/** * Intercept core config form block getScopeLabel() method * to add additional override hints. * * @see Magento\Config\Block\System\Config\Form::getScopeLabel() * @param \Magento\Config\Block\System\Config\Form $form * @param callable $getScopeLabel * @param Field $field * @return Phrase */ public function aroundGetScopeLabel(\Magento\Config\Block\System\Config\Form $form, \Closure $getScopeLabel, Field $field) { $currentScopeId = null; switch ($form->getScope()) { case 'websites': $currentScopeId = $form->getWebsiteCode(); break; case 'stores': $currentScopeId = $form->getStoreCode(); break; } $overriddenLevels = $this->helper->getOverriddenLevels($field->getPath(), $form->getScope(), $currentScopeId); /* @var $returnPhrase Phrase */ $labelPhrase = $getScopeLabel($field); if (!empty($overriddenLevels)) { $scopeHintText = $labelPhrase . $this->helper->formatOverriddenScopes($form, $overriddenLevels); // create new phrase, now that constituent strings are translated individually $labelPhrase = new Phrase($scopeHintText, $labelPhrase->getArguments()); } return $labelPhrase; }
/** * Add new error into the list of exceptions * * @param \Magento\Framework\Phrase $phrase * @return $this */ public function addError(Phrase $phrase) { $this->addErrorCalls++; if (empty($this->errors)) { if (1 === $this->addErrorCalls) { // First call: simply overwrite the phrase and message $this->phrase = $phrase; $this->message = $phrase->render(); $this->logMessage = null; } elseif (2 === $this->addErrorCalls) { // Second call: store the error from the first call and the second call in the array // restore the phrase to its original value $this->errors[] = new LocalizedException($this->phrase); $this->errors[] = new LocalizedException($phrase); $this->phrase = $this->originalPhrase; $this->message = $this->originalPhrase->render(); $this->logMessage = null; } } else { // All subsequent calls after the second should reach here $this->errors[] = new LocalizedException($phrase); } return $this; }
/** * @return void */ public function testConstructor() { $this->renderedMessage = 'rendered message'; $this->rendererMock->expects($this->once())->method('render')->will($this->returnValue($this->renderedMessage)); \Magento\Framework\Phrase::setRenderer($this->rendererMock); $message = 'message %1 %2'; $params = ['parameter1', 'parameter2']; $expectedLogMessage = 'message parameter1 parameter2'; $cause = new \Exception(); $localizeException = new NoSuchEntityException(new Phrase($message, $params), $cause); $this->assertEquals(0, $localizeException->getCode()); $this->assertEquals($message, $localizeException->getRawMessage()); $this->assertEquals($this->renderedMessage, $localizeException->getMessage()); $this->assertEquals($expectedLogMessage, $localizeException->getLogMessage()); $this->assertSame($cause, $localizeException->getPrevious()); }
/** * @param $directive * @param $translations * @param $expectedResult * @internal param $translatorData * @dataProvider transDirectiveDataProvider */ public function testTransDirective($directive, $translations, $expectedResult) { $renderer = Phrase::getRenderer(); $translator = $this->getMockBuilder('\\Magento\\Framework\\Translate')->disableOriginalConstructor()->setMethods(['getData'])->getMock(); $translator->expects($this->atLeastOnce())->method('getData')->will($this->returnValue($translations)); $this->_objectManager->addSharedInstance($translator, 'Magento\\Framework\\Translate'); $this->_objectManager->removeSharedInstance('Magento\\Framework\\Phrase\\Renderer\\Translate'); Phrase::setRenderer($this->_objectManager->create('Magento\\Framework\\Phrase\\RendererInterface')); $this->assertEquals($expectedResult, $this->_model->filter($directive)); Phrase::setRenderer($renderer); }
/** * {inheritdoc} */ protected function tearDown() { $this->model = null; \Magento\Framework\Phrase::setRenderer($this->defaultRenderer); }
/** * Test default renderer */ public function testDefaultRenderer() { $this->assertInstanceOf('Magento\\Framework\\Phrase\\Renderer\\Placeholder', Phrase::getRenderer()); }
/** * Set phrase renderer * @return void */ protected function setPhraseRenderer() { \Magento\Framework\Phrase::setRenderer($this->rendererCompositeFactory->create()); }
/** * @param E|string|Phrase $e * @return string|Phrase */ function df_ets($e) { return !$e instanceof E ? $e : ($e instanceof DFE ? $e->message() : $e->getMessage()); }
/** * Test get arguments * * @return void */ public function testGetArguments() { $text = 'some text'; $arguments = ['arg1', 'arg2']; $phrase1 = new Phrase($text); $phrase2 = new Phrase($text, $arguments); $this->assertEquals([], $phrase1->getArguments()); $this->assertEquals($arguments, $phrase2->getArguments()); }
/** * Initialize application * * @param array $overriddenParams * @return void */ public function initialize($overriddenParams = []) { $overriddenParams[\Magento\Framework\App\State::PARAM_MODE] = $this->_appMode; $overriddenParams = $this->_customizeParams($overriddenParams); $directories = isset($overriddenParams[\Magento\Framework\App\Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS]) ? $overriddenParams[\Magento\Framework\App\Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS] : []; $directoryList = new DirectoryList(BP, $directories); /** @var \Magento\TestFramework\ObjectManager $objectManager */ $objectManager = Helper\Bootstrap::getObjectManager(); if (!$objectManager) { $objectManager = $this->_factory->create($overriddenParams); $objectManager->addSharedInstance($directoryList, 'Magento\\Framework\\App\\Filesystem\\DirectoryList'); $objectManager->addSharedInstance($directoryList, 'Magento\\Framework\\Filesystem\\DirectoryList'); } else { $objectManager = $this->_factory->restore($objectManager, $directoryList, $overriddenParams); } /** @var \Magento\TestFramework\App\Filesystem $filesystem */ $filesystem = $objectManager->get('Magento\\TestFramework\\App\\Filesystem'); $objectManager->removeSharedInstance('Magento\\Framework\\Filesystem'); $objectManager->addSharedInstance($filesystem, 'Magento\\Framework\\Filesystem'); /** @var \Psr\Log\LoggerInterface $logger */ $logger = $objectManager->create('Magento\\TestFramework\\ErrorLog\\Logger', ['name' => 'integration-tests', 'handlers' => ['system' => $objectManager->create('Magento\\Framework\\Logger\\Handler\\System', ['exceptionHandler' => $objectManager->create('Magento\\Framework\\Logger\\Handler\\Exception', ['filePath' => $this->installDir]), 'filePath' => $this->installDir]), 'debug' => $objectManager->create('Magento\\Framework\\Logger\\Handler\\Debug', ['filePath' => $this->installDir])]]); $objectManager->removeSharedInstance('Magento\\Framework\\Logger\\Monolog'); $objectManager->addSharedInstance($logger, 'Magento\\Framework\\Logger\\Monolog'); $sequenceBuilder = $objectManager->get('\\Magento\\TestFramework\\Db\\Sequence\\Builder'); $objectManager->addSharedInstance($sequenceBuilder, 'Magento\\SalesSequence\\Model\\Builder'); Helper\Bootstrap::setObjectManager($objectManager); $objectManagerConfiguration = ['preferences' => ['Magento\\Framework\\App\\State' => 'Magento\\TestFramework\\App\\State', 'Magento\\Framework\\Mail\\TransportInterface' => 'Magento\\TestFramework\\Mail\\TransportInterfaceMock', 'Magento\\Framework\\Mail\\Template\\TransportBuilder' => 'Magento\\TestFramework\\Mail\\Template\\TransportBuilderMock']]; if ($this->loadTestExtensionAttributes) { $objectManagerConfiguration = array_merge($objectManagerConfiguration, ['Magento\\Framework\\Api\\ExtensionAttribute\\Config\\Reader' => ['arguments' => ['fileResolver' => ['instance' => 'Magento\\TestFramework\\Api\\Config\\Reader\\FileResolver']]]]); } $objectManager->configure($objectManagerConfiguration); /** Register event observer of Integration Framework */ /** @var \Magento\Framework\Event\Config\Data $eventConfigData */ $eventConfigData = $objectManager->get('Magento\\Framework\\Event\\Config\\Data'); $eventConfigData->merge(['core_app_init_current_store_after' => ['integration_tests' => ['instance' => 'Magento\\TestFramework\\Event\\Magento', 'name' => 'integration_tests']]]); $this->loadArea(\Magento\TestFramework\Application::DEFAULT_APP_AREA); \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->configure($objectManager->get('Magento\\Framework\\ObjectManager\\DynamicConfigInterface')->getConfiguration()); \Magento\Framework\Phrase::setRenderer($objectManager->get('Magento\\Framework\\Phrase\\Renderer\\Placeholder')); /** @var \Magento\TestFramework\Db\Sequence $sequence */ $sequence = $objectManager->get('Magento\\TestFramework\\Db\\Sequence'); $sequence->generateSequences(); $objectManager->create('Magento\\TestFramework\\Config', ['configPath' => $this->globalConfigFile])->rewriteAdditionalConfig(); }
/** * Initialize application * * @param array $overriddenParams */ public function initialize($overriddenParams = array()) { $overriddenParams['base_dir'] = BP; $overriddenParams[\Magento\Framework\App\State::PARAM_MODE] = $this->_appMode; $overriddenParams = $this->_customizeParams($overriddenParams); /** @var \Magento\TestFramework\ObjectManager $objectManager */ $objectManager = Helper\Bootstrap::getObjectManager(); if (!$objectManager) { $objectManager = $this->_factory->create(BP, $overriddenParams); } else { $objectManager = $this->_factory->restore($objectManager, BP, $overriddenParams); } $directories = isset($overriddenParams[Filesystem::PARAM_APP_DIRS]) ? $overriddenParams[Filesystem::PARAM_APP_DIRS] : array(); $directoryList = new \Magento\TestFramework\App\Filesystem\DirectoryList(BP, $directories); $objectManager->addSharedInstance($directoryList, 'Magento\\Framework\\App\\Filesystem\\DirectoryList'); $objectManager->addSharedInstance($directoryList, 'Magento\\Framework\\Filesystem\\DirectoryList'); $objectManager->removeSharedInstance('Magento\\Framework\\App\\Filesystem'); $objectManager->removeSharedInstance('Magento\\Framework\\App\\Filesystem\\DirectoryList\\Verification'); Helper\Bootstrap::setObjectManager($objectManager); $objectManager->configure(array('preferences' => array('Magento\\Framework\\App\\State' => 'Magento\\TestFramework\\App\\State'))); /** Register event observer of Integration Framework */ /** @var \Magento\Framework\Event\Config\Data $eventConfigData */ $eventConfigData = $objectManager->get('Magento\\Framework\\Event\\Config\\Data'); $eventConfigData->merge(array('core_app_init_current_store_after' => array('integration_tests' => array('instance' => 'Magento\\TestFramework\\Event\\Magento', 'method' => 'initStoreAfter', 'name' => 'integration_tests')))); $this->loadArea(\Magento\TestFramework\Application::DEFAULT_APP_AREA); \Magento\Framework\Phrase::setRenderer($objectManager->get('Magento\\Framework\\Phrase\\RendererInterface')); /** @var \Magento\Framework\App\Filesystem\DirectoryList\Verification $verification */ $verification = $objectManager->get('Magento\\Framework\\App\\Filesystem\\DirectoryList\\Verification'); $verification->createAndVerifyDirectories(); $directoryList = $objectManager->get('Magento\\Framework\\App\\Filesystem\\DirectoryList'); $directoryListConfig = $objectManager->get('Magento\\Framework\\App\\Filesystem\\DirectoryList\\Configuration'); $directoryListConfig->configure($directoryList); $directories = isset($overriddenParams[\Magento\Framework\App\Filesystem::PARAM_APP_DIRS]) ? $overriddenParams[\Magento\Framework\App\Filesystem::PARAM_APP_DIRS] : array(); foreach ($directories as $code => $configOverrides) { $config = array_merge($directoryList->getConfig($code), $configOverrides); $directoryList->addDirectory($code, $config); } }
/** * Initialize translate object. * * @return $this */ protected function _initTranslate() { $this->_translator->loadData(null, false); \Magento\Framework\Phrase::setRenderer($this->_objectManager->get('Magento\\Framework\\Phrase\\RendererInterface')); return $this; }
/** * @return void */ public function tearDown() { \Magento\Framework\Phrase::setRenderer($this->defaultRenderer); }
<?php /** * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ require_once __DIR__ . '/../../../../app/autoload.php'; if (!defined('TESTS_TEMP_DIR')) { define('TESTS_TEMP_DIR', dirname(__DIR__) . '/tmp'); } require_once __DIR__ . '/autoload.php'; require BP . '/app/functions.php'; \Magento\Framework\Phrase::setRenderer(new \Magento\Framework\Phrase\Renderer\Placeholder()); error_reporting(E_ALL); ini_set('display_errors', 1);
/** * Get parameters, corresponding to placeholders in raw exception message * * @return array */ public function getParameters() { return $this->phrase->getArguments(); }
/** * Check if server is applicable for Magento * @return $this */ public function checkServer() { \Magento\Framework\Phrase::setRenderer($this->_objectManager->get('Magento\\Framework\\Phrase\\RendererInterface')); $installer = $this->_getInstaller(); $result = $installer->checkServer(); if (!$result) { /** @var \Magento\Framework\Message\ManagerInterface $messageManager*/ $messageManager = $this->_objectManager->get('Magento\\Framework\\Message\\ManagerInterface'); /** @var \Magento\Framework\Message\MessageInterface $message */ foreach ($messageManager->getMessages()->getItems() as $message) { $this->addError($message->toString()); } } return $this; }