diff --git a/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/FetchRates.php b/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/FetchRates.php index a99c5d696096d3acb8c36937e2e78b4553a1ec8c..f6463d67084a9a95a2f7ff27c39385f16e9f937a 100644 --- a/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/FetchRates.php +++ b/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/FetchRates.php @@ -22,7 +22,7 @@ class FetchRates extends \Magento\CurrencySymbol\Controller\Adminhtml\System\Cur $service = $this->getRequest()->getParam('rate_services'); $this->_getSession()->setCurrencyRateService($service); if (!$service) { - throw new \Exception(__('Please specify a correct Import Service.')); + throw new \Magento\Framework\Exception\LocalizedException(__('Please specify a correct Import Service.')); } try { /** @var \Magento\Directory\Model\Currency\Import\ImportInterface $importModel */ diff --git a/app/code/Magento/Integration/Setup/InstallSchema.php b/app/code/Magento/Integration/Setup/InstallSchema.php index 9588da6905210f53b0c47aaecc05c1f483d30107..28d24cab8f3a26047403ded521eba906af078d02 100644 --- a/app/code/Magento/Integration/Setup/InstallSchema.php +++ b/app/code/Magento/Integration/Setup/InstallSchema.php @@ -268,9 +268,6 @@ class InstallSchema implements InstallSchemaInterface \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'OAuth Nonce' - )->setOption( - 'type', - 'MyISAM' ); $installer->getConnection()->createTable($table); diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/CartRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/CartRepositoryTest.php index add493db96a143faf32a0d26e183122067aaa9e6..9169ee6ca6ab690c9d367e7adc33dedaa3f217fe 100644 --- a/dev/tests/api-functional/testsuite/Magento/Quote/Api/CartRepositoryTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/CartRepositoryTest.php @@ -163,8 +163,8 @@ class CartRepositoryTest extends WebapiAbstract ->setValue($cart->getSubtotal()) ->create(); - $yesterdayDate = (new \DateTime())->sub(new \DateInterval('P1D'))->format('Y-m-d'); - $tomorrowDate = (new \DateTime())->add(new \DateInterval('P1D'))->format('Y-m-d'); + $yesterdayDate = (new \DateTime($cart->getCreatedAt()))->sub(new \DateInterval('P1D'))->format('Y-m-d'); + $tomorrowDate = (new \DateTime($cart->getCreatedAt()))->add(new \DateInterval('P1D'))->format('Y-m-d'); $minCreatedAtFilter = $this->filterBuilder->setField('created_at') ->setConditionType('gteq') ->setValue($yesterdayDate) diff --git a/lib/internal/Magento/Framework/Phrase.php b/lib/internal/Magento/Framework/Phrase.php index 02c4e0c063c63a36ae430ad59ac233d43b9417ac..992834a4816e1c14f8a56c488a739ed97c3d70f4 100644 --- a/lib/internal/Magento/Framework/Phrase.php +++ b/lib/internal/Magento/Framework/Phrase.php @@ -9,6 +9,7 @@ namespace Magento\Framework; use Zend\Stdlib\JsonSerializable; use Magento\Framework\Phrase\RendererInterface; +use Magento\Framework\Phrase\Renderer\Placeholder; class Phrase implements JsonSerializable { @@ -51,7 +52,11 @@ class Phrase implements JsonSerializable */ public static function getRenderer() { - return self::$renderer; + if (self::$renderer) { + return self::$renderer; + } else { + self::$renderer = new \Magento\Framework\Phrase\Renderer\Placeholder(); + } } /** @@ -93,7 +98,7 @@ class Phrase implements JsonSerializable */ public function render() { - return self::$renderer ? self::$renderer->render([$this->text], $this->arguments) : $this->text; + return self::getRenderer() ? self::getRenderer()->render([$this->text], $this->arguments) : $this->text; } /** diff --git a/lib/internal/Magento/Framework/Phrase/README.md b/lib/internal/Magento/Framework/Phrase/README.md index 9024d6c5bb29d3806a979904d50363e4b52d1433..779979edbb489f8369cc192f1e19ecb19b578699 100644 --- a/lib/internal/Magento/Framework/Phrase/README.md +++ b/lib/internal/Magento/Framework/Phrase/README.md @@ -1,8 +1,8 @@ -# Phase +# Phrase -Class *\Magento\Framework\Phrase* calls renderer to make the translation of the text. **Phase** provides *RedererInterface* and a few renderers to support different kinds of needs of translation of the text. Here are list of renderers in this library: +Class *\Magento\Framework\Phrase* calls renderer to make the translation of the text. **Phrase** provides *RendererInterface* and a few renderers to support different kinds of needs of translation of the text. Here are list of renderers in this library: + * Placeholder render - it replaces placeholders with parameters for substitution. It is the default render if none is set for the Phrase. * Translate render - it is a base renderer that implements text translations. * Inline render - it adds inline translate part to text translation and returns the strings by a template. - * Placeholder render - it replaces placeholders with parameters for substitution. * Composite render - it can have several renderers, calls each renderer for processing the text. Array of renderer class names pass into composite render constructor as a parameter. \ No newline at end of file diff --git a/lib/internal/Magento/Framework/Test/Unit/PhraseTest.php b/lib/internal/Magento/Framework/Test/Unit/PhraseTest.php index 79a257b4ff77ceb505138f1cc486499c9ee06ca3..f3e8c8d9e0195e9fd64d659d6a020d71c8f93f88 100755 --- a/lib/internal/Magento/Framework/Test/Unit/PhraseTest.php +++ b/lib/internal/Magento/Framework/Test/Unit/PhraseTest.php @@ -19,6 +19,11 @@ class PhraseTest extends \PHPUnit_Framework_TestCase */ protected $rendererMock; + /** + * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager + */ + protected $objectManager; + /** * SetUp method * @@ -29,6 +34,7 @@ class PhraseTest extends \PHPUnit_Framework_TestCase $this->defaultRenderer = Phrase::getRenderer(); $this->rendererMock = $this->getMockBuilder('Magento\Framework\Phrase\RendererInterface') ->getMock(); + $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); } /** @@ -51,7 +57,10 @@ class PhraseTest extends \PHPUnit_Framework_TestCase $text = 'some text'; $arguments = ['arg1', 'arg2']; $result = 'rendered text'; - $phrase = new Phrase($text, $arguments); + $phrase = $this->objectManager->getObject('Magento\Framework\Phrase', [ + 'text' => $text, + 'arguments' => $arguments, + ]); Phrase::setRenderer($this->rendererMock); $this->rendererMock->expects($this->once()) @@ -72,7 +81,9 @@ class PhraseTest extends \PHPUnit_Framework_TestCase $this->rendererMock->expects($this->never()) ->method('render'); - new Phrase('some text'); + $this->objectManager->getObject('Magento\Framework\Phrase', [ + 'text' => 'some text', + ]); } /** @@ -85,7 +96,10 @@ class PhraseTest extends \PHPUnit_Framework_TestCase $text = 'some text'; $arguments = ['arg1', 'arg2']; $result = 'rendered text'; - $phrase = new Phrase($text, $arguments); + $phrase = $this->objectManager->getObject('Magento\Framework\Phrase', [ + 'text' => $text, + 'arguments' => $arguments, + ]); Phrase::setRenderer($this->rendererMock); $this->rendererMock->expects($this->once()) @@ -105,6 +119,9 @@ class PhraseTest extends \PHPUnit_Framework_TestCase { $text = 'some text'; $phrase = new Phrase($text); + $phrase = $this->objectManager->getObject('Magento\Framework\Phrase', [ + 'text' => $text, + ]); $this->assertEquals($text, $phrase->getText()); } @@ -118,10 +135,36 @@ class PhraseTest extends \PHPUnit_Framework_TestCase { $text = 'some text'; $arguments = ['arg1', 'arg2']; - $phrase1 = new Phrase($text); - $phrase2 = new Phrase($text, $arguments); + $phrase1 = $this->objectManager->getObject('Magento\Framework\Phrase', [ + 'text' => $text, + ]); + $phrase2 = $this->objectManager->getObject('Magento\Framework\Phrase', [ + 'text' => $text, + 'arguments' => $arguments, + ]); $this->assertEquals([], $phrase1->getArguments()); $this->assertEquals($arguments, $phrase2->getArguments()); } + + /** + * Test default rendering + * + * @return void + */ + public function testDefaultRendering() + { + $text = 'parameter1 is replaced by %1 parameter2 is replaced by %2'; + $arguments = ['arg1', 'arg2']; + $result = 'parameter1 is replaced by arg1 parameter2 is replaced by arg2'; + $phrase = $this->objectManager->getObject('Magento\Framework\Phrase', [ + 'text' => $text, + 'arguments' => $arguments, + ]); + + $this->assertEquals($text, $phrase->getText()); + $this->assertEquals($arguments, $phrase->getArguments()); + $this->assertTrue($phrase->getRenderer() instanceof \Magento\Framework\Phrase\Renderer\Placeholder); + $this->assertEquals($result, $phrase->render()); + } }