Skip to content
Snippets Groups Projects
Commit 33e7ece7 authored by Sergey Semenov's avatar Sergey Semenov
Browse files

Merge remote-tracking branch 'tango/MAGETWO-42869' into MAGETWO-42867

parents c077da60 f750b8c4
No related merge requests found
...@@ -33,6 +33,11 @@ class DebugHints ...@@ -33,6 +33,11 @@ class DebugHints
*/ */
private $scopeConfig; private $scopeConfig;
/**
* @var \Magento\Store\Model\StoreManagerInterface
*/
private $storeManager;
/** /**
* @var \Magento\Developer\Helper\Data * @var \Magento\Developer\Helper\Data
*/ */
...@@ -41,15 +46,18 @@ class DebugHints ...@@ -41,15 +46,18 @@ class DebugHints
/** /**
* @param \Magento\Framework\ObjectManagerInterface $objectManager * @param \Magento\Framework\ObjectManagerInterface $objectManager
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
* @param \Magento\Developer\Helper\Data $devHelper * @param \Magento\Developer\Helper\Data $devHelper
*/ */
public function __construct( public function __construct(
\Magento\Framework\ObjectManagerInterface $objectManager, \Magento\Framework\ObjectManagerInterface $objectManager,
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Magento\Developer\Helper\Data $devHelper \Magento\Developer\Helper\Data $devHelper
) { ) {
$this->objectManager = $objectManager; $this->objectManager = $objectManager;
$this->scopeConfig = $scopeConfig; $this->scopeConfig = $scopeConfig;
$this->storeManager = $storeManager;
$this->devHelper = $devHelper; $this->devHelper = $devHelper;
} }
...@@ -66,11 +74,13 @@ class DebugHints ...@@ -66,11 +74,13 @@ class DebugHints
\Magento\Framework\View\TemplateEngineFactory $subject, \Magento\Framework\View\TemplateEngineFactory $subject,
\Magento\Framework\View\TemplateEngineInterface $invocationResult \Magento\Framework\View\TemplateEngineInterface $invocationResult
) { ) {
if ($this->scopeConfig->getValue(self::XML_PATH_DEBUG_TEMPLATE_HINTS, ScopeInterface::SCOPE_STORE) && $storeCode = $this->storeManager->getStore()->getCode();
$this->devHelper->isDevAllowed()) { if ($this->scopeConfig->getValue(self::XML_PATH_DEBUG_TEMPLATE_HINTS, ScopeInterface::SCOPE_STORE, $storeCode)
&& $this->devHelper->isDevAllowed()) {
$showBlockHints = $this->scopeConfig->getValue( $showBlockHints = $this->scopeConfig->getValue(
self::XML_PATH_DEBUG_TEMPLATE_HINTS_BLOCKS, self::XML_PATH_DEBUG_TEMPLATE_HINTS_BLOCKS,
ScopeInterface::SCOPE_STORE ScopeInterface::SCOPE_STORE,
$storeCode
); );
return $this->objectManager->create( return $this->objectManager->create(
'Magento\Developer\Model\TemplateEngine\Decorator\DebugHints', 'Magento\Developer\Model\TemplateEngine\Decorator\DebugHints',
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
namespace Magento\Developer\Test\Unit\Model\TemplateEngine\Plugin; namespace Magento\Developer\Test\Unit\Model\TemplateEngine\Plugin;
use Magento\Developer\Model\TemplateEngine\Plugin\DebugHints; use Magento\Developer\Model\TemplateEngine\Plugin\DebugHints;
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
class DebugHintsTest extends \PHPUnit_Framework_TestCase class DebugHintsTest extends \PHPUnit_Framework_TestCase
{ {
...@@ -15,63 +16,86 @@ class DebugHintsTest extends \PHPUnit_Framework_TestCase ...@@ -15,63 +16,86 @@ class DebugHintsTest extends \PHPUnit_Framework_TestCase
protected $model; protected $model;
/** /**
* @var \PHPUnit_Framework_MockObject_MockObject * @var \Magento\Framework\ObjectManagerInterface|\PHPUnit_Framework_MockObject_MockObject
*/ */
protected $objectManagerMock; protected $objectManagerMock;
/** /**
* @var \PHPUnit_Framework_MockObject_MockObject * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
*/ */
protected $scopeConfigMock; protected $scopeConfigMock;
/** /**
* @var \PHPUnit_Framework_MockObject_MockObject * @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject
*/
protected $storeManager;
/**
* @var \Magento\Developer\Helper\Data|\PHPUnit_Framework_MockObject_MockObject
*/ */
protected $devHelperMock; protected $devHelperMock;
/** /**
* @var \PHPUnit_Framework_MockObject_MockObject * @var \Magento\Framework\View\TemplateEngineFactory|\PHPUnit_Framework_MockObject_MockObject
*/ */
protected $subjectMock; protected $subjectMock;
/**
* @var ObjectManagerHelper
*/
protected $objectManagerHelper;
/**
* @return void
*/
protected function setUp() protected function setUp()
{ {
$this->objectManagerHelper = new ObjectManagerHelper($this);
$this->objectManagerMock = $this->getMock('Magento\Framework\ObjectManagerInterface'); $this->objectManagerMock = $this->getMock('Magento\Framework\ObjectManagerInterface');
$this->scopeConfigMock = $this->getMock('Magento\Framework\App\Config\ScopeConfigInterface'); $this->scopeConfigMock = $this->getMock('Magento\Framework\App\Config\ScopeConfigInterface');
$this->storeManager = $this->getMock('Magento\Store\Model\StoreManagerInterface');
$this->devHelperMock = $this->getMock('Magento\Developer\Helper\Data', [], [], '', false); $this->devHelperMock = $this->getMock('Magento\Developer\Helper\Data', [], [], '', false);
$this->subjectMock = $this->getMock( $this->subjectMock = $this->getMock('Magento\Framework\View\TemplateEngineFactory', [], [], '', false);
'Magento\Framework\View\TemplateEngineFactory',
[], $this->model = $this->objectManagerHelper->getObject(
[], 'Magento\Developer\Model\TemplateEngine\Plugin\DebugHints',
'', [
false 'objectManager' => $this->objectManagerMock,
'scopeConfig' => $this->scopeConfigMock,
'storeManager' => $this->storeManager,
'devHelper' => $this->devHelperMock
]
); );
$this->model = new \Magento\Developer\Model\TemplateEngine\Plugin\DebugHints($this->objectManagerMock, $this->scopeConfigMock, $this->devHelperMock);
} }
/** /**
* @param bool $showBlockHints * @param bool $showBlockHints
* @return void
* @dataProvider afterCreateActiveDataProvider * @dataProvider afterCreateActiveDataProvider
*/ */
public function testAfterCreateActive($showBlockHints) public function testAfterCreateActive($showBlockHints)
{ {
$this->devHelperMock->expects($this->once())->method('isDevAllowed')->will($this->returnValue(true)); $this->devHelperMock->expects($this->once())
$this->_setupConfigFixture(true, $showBlockHints); ->method('isDevAllowed')
->willReturn(true);
$this->setupConfigFixture(true, $showBlockHints);
$engine = $this->getMock('Magento\Framework\View\TemplateEngineInterface'); $engine = $this->getMock('Magento\Framework\View\TemplateEngineInterface');
$engineDecorated = $this->getMock('Magento\Framework\View\TemplateEngineInterface'); $engineDecorated = $this->getMock('Magento\Framework\View\TemplateEngineInterface');
$this->objectManagerMock->expects( $this->objectManagerMock->expects($this->once())
$this->once() ->method('create')
)->method( ->with(
'create' 'Magento\Developer\Model\TemplateEngine\Decorator\DebugHints',
)->with( $this->identicalTo(['subject' => $engine, 'showBlockHints' => $showBlockHints])
'Magento\Developer\Model\TemplateEngine\Decorator\DebugHints', )
$this->identicalTo(['subject' => $engine, 'showBlockHints' => $showBlockHints]) ->willReturn($engineDecorated);
)->will(
$this->returnValue($engineDecorated)
);
$this->assertEquals($engineDecorated, $this->model->afterCreate($this->subjectMock, $engine)); $this->assertEquals($engineDecorated, $this->model->afterCreate($this->subjectMock, $engine));
} }
/**
* @return array
*/
public function afterCreateActiveDataProvider() public function afterCreateActiveDataProvider()
{ {
return ['block hints disabled' => [false], 'block hints enabled' => [true]]; return ['block hints disabled' => [false], 'block hints enabled' => [true]];
...@@ -80,17 +104,25 @@ class DebugHintsTest extends \PHPUnit_Framework_TestCase ...@@ -80,17 +104,25 @@ class DebugHintsTest extends \PHPUnit_Framework_TestCase
/** /**
* @param bool $isDevAllowed * @param bool $isDevAllowed
* @param bool $showTemplateHints * @param bool $showTemplateHints
* @return void
* @dataProvider afterCreateInactiveDataProvider * @dataProvider afterCreateInactiveDataProvider
*/ */
public function testAfterCreateInactive($isDevAllowed, $showTemplateHints) public function testAfterCreateInactive($isDevAllowed, $showTemplateHints)
{ {
$this->devHelperMock->expects($this->any())->method('isDevAllowed')->will($this->returnValue($isDevAllowed)); $this->devHelperMock->expects($this->any())
$this->_setupConfigFixture($showTemplateHints, true); ->method('isDevAllowed')
$this->objectManagerMock->expects($this->never())->method('create'); ->willReturn($isDevAllowed);
$engine = $this->getMock('Magento\Framework\View\TemplateEngineInterface', [], [], '', false); $this->setupConfigFixture($showTemplateHints, true);
$this->objectManagerMock->expects($this->never())
->method('create');
$engine = $this->getMock('Magento\Framework\View\TemplateEngineInterface');
$this->assertSame($engine, $this->model->afterCreate($this->subjectMock, $engine)); $this->assertSame($engine, $this->model->afterCreate($this->subjectMock, $engine));
} }
/**
* @return array
*/
public function afterCreateInactiveDataProvider() public function afterCreateInactiveDataProvider()
{ {
return [ return [
...@@ -105,30 +137,34 @@ class DebugHintsTest extends \PHPUnit_Framework_TestCase ...@@ -105,30 +137,34 @@ class DebugHintsTest extends \PHPUnit_Framework_TestCase
* *
* @param bool $showTemplateHints * @param bool $showTemplateHints
* @param bool $showBlockHints * @param bool $showBlockHints
* @return void
*/ */
protected function _setupConfigFixture($showTemplateHints, $showBlockHints) protected function setupConfigFixture($showTemplateHints, $showBlockHints)
{ {
$this->scopeConfigMock->expects( $storeCode = 'default';
$this->atLeastOnce() $storeMock = $this->getMock('Magento\Store\Api\Data\StoreInterface');
)->method( $storeMock->expects($this->once())
'getValue' ->method('getCode')
)->will( ->willReturn($storeCode);
$this->returnValueMap( $this->storeManager->expects($this->once())
->method('getStore')
->willReturn($storeMock);
$this->scopeConfigMock->expects($this->atLeastOnce())
->method('getValue')
->willReturnMap([
[
DebugHints::XML_PATH_DEBUG_TEMPLATE_HINTS,
\Magento\Store\Model\ScopeInterface::SCOPE_STORE,
$storeCode,
$showTemplateHints,
],
[ [
[ DebugHints::XML_PATH_DEBUG_TEMPLATE_HINTS_BLOCKS,
DebugHints::XML_PATH_DEBUG_TEMPLATE_HINTS, \Magento\Store\Model\ScopeInterface::SCOPE_STORE,
\Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeCode,
null, $showBlockHints
$showTemplateHints,
],
[
DebugHints::XML_PATH_DEBUG_TEMPLATE_HINTS_BLOCKS,
\Magento\Store\Model\ScopeInterface::SCOPE_STORE,
null,
$showBlockHints
],
] ]
) ]);
);
} }
} }
...@@ -10,9 +10,6 @@ ...@@ -10,9 +10,6 @@
<preference for="Magento\Framework\Css\PreProcessor\ErrorHandlerInterface" type="Magento\Framework\Css\PreProcessor\ErrorHandler" /> <preference for="Magento\Framework\Css\PreProcessor\ErrorHandlerInterface" type="Magento\Framework\Css\PreProcessor\ErrorHandler" />
<preference for="Magento\Framework\Css\PreProcessor\AdapterInterface" type="Magento\Framework\Css\PreProcessor\Adapter\Less\Oyejorge" /> <preference for="Magento\Framework\Css\PreProcessor\AdapterInterface" type="Magento\Framework\Css\PreProcessor\Adapter\Less\Oyejorge" />
<type name="Magento\Framework\View\TemplateEngineFactory">
<plugin name="debug_hints" type="Magento\Developer\Model\TemplateEngine\Plugin\DebugHints" sortOrder="10"/>
</type>
<type name="Magento\Framework\View\Result\Page"> <type name="Magento\Framework\View\Result\Page">
<arguments> <arguments>
<argument name="pageConfigRendererFactory" xsi:type="object">Magento\Developer\Model\View\Page\Config\RendererFactory</argument> <argument name="pageConfigRendererFactory" xsi:type="object">Magento\Developer\Model\View\Page\Config\RendererFactory</argument>
......
<?xml version="1.0"?>
<!--
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
<type name="Magento\Framework\View\TemplateEngineFactory">
<plugin name="debug_hints" type="Magento\Developer\Model\TemplateEngine\Plugin\DebugHints" sortOrder="10"/>
</type>
</config>
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment