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
Branches
No related merge requests found
......@@ -33,6 +33,11 @@ class DebugHints
*/
private $scopeConfig;
/**
* @var \Magento\Store\Model\StoreManagerInterface
*/
private $storeManager;
/**
* @var \Magento\Developer\Helper\Data
*/
......@@ -41,15 +46,18 @@ class DebugHints
/**
* @param \Magento\Framework\ObjectManagerInterface $objectManager
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
* @param \Magento\Developer\Helper\Data $devHelper
*/
public function __construct(
\Magento\Framework\ObjectManagerInterface $objectManager,
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Magento\Developer\Helper\Data $devHelper
) {
$this->objectManager = $objectManager;
$this->scopeConfig = $scopeConfig;
$this->storeManager = $storeManager;
$this->devHelper = $devHelper;
}
......@@ -66,11 +74,13 @@ class DebugHints
\Magento\Framework\View\TemplateEngineFactory $subject,
\Magento\Framework\View\TemplateEngineInterface $invocationResult
) {
if ($this->scopeConfig->getValue(self::XML_PATH_DEBUG_TEMPLATE_HINTS, ScopeInterface::SCOPE_STORE) &&
$this->devHelper->isDevAllowed()) {
$storeCode = $this->storeManager->getStore()->getCode();
if ($this->scopeConfig->getValue(self::XML_PATH_DEBUG_TEMPLATE_HINTS, ScopeInterface::SCOPE_STORE, $storeCode)
&& $this->devHelper->isDevAllowed()) {
$showBlockHints = $this->scopeConfig->getValue(
self::XML_PATH_DEBUG_TEMPLATE_HINTS_BLOCKS,
ScopeInterface::SCOPE_STORE
ScopeInterface::SCOPE_STORE,
$storeCode
);
return $this->objectManager->create(
'Magento\Developer\Model\TemplateEngine\Decorator\DebugHints',
......
......@@ -6,6 +6,7 @@
namespace Magento\Developer\Test\Unit\Model\TemplateEngine\Plugin;
use Magento\Developer\Model\TemplateEngine\Plugin\DebugHints;
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
class DebugHintsTest extends \PHPUnit_Framework_TestCase
{
......@@ -15,63 +16,86 @@ class DebugHintsTest extends \PHPUnit_Framework_TestCase
protected $model;
/**
* @var \PHPUnit_Framework_MockObject_MockObject
* @var \Magento\Framework\ObjectManagerInterface|\PHPUnit_Framework_MockObject_MockObject
*/
protected $objectManagerMock;
/**
* @var \PHPUnit_Framework_MockObject_MockObject
* @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
*/
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;
/**
* @var \PHPUnit_Framework_MockObject_MockObject
* @var \Magento\Framework\View\TemplateEngineFactory|\PHPUnit_Framework_MockObject_MockObject
*/
protected $subjectMock;
/**
* @var ObjectManagerHelper
*/
protected $objectManagerHelper;
/**
* @return void
*/
protected function setUp()
{
$this->objectManagerHelper = new ObjectManagerHelper($this);
$this->objectManagerMock = $this->getMock('Magento\Framework\ObjectManagerInterface');
$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->subjectMock = $this->getMock(
'Magento\Framework\View\TemplateEngineFactory',
[],
[],
'',
false
$this->subjectMock = $this->getMock('Magento\Framework\View\TemplateEngineFactory', [], [], '', false);
$this->model = $this->objectManagerHelper->getObject(
'Magento\Developer\Model\TemplateEngine\Plugin\DebugHints',
[
'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
* @return void
* @dataProvider afterCreateActiveDataProvider
*/
public function testAfterCreateActive($showBlockHints)
{
$this->devHelperMock->expects($this->once())->method('isDevAllowed')->will($this->returnValue(true));
$this->_setupConfigFixture(true, $showBlockHints);
$this->devHelperMock->expects($this->once())
->method('isDevAllowed')
->willReturn(true);
$this->setupConfigFixture(true, $showBlockHints);
$engine = $this->getMock('Magento\Framework\View\TemplateEngineInterface');
$engineDecorated = $this->getMock('Magento\Framework\View\TemplateEngineInterface');
$this->objectManagerMock->expects(
$this->once()
)->method(
'create'
)->with(
'Magento\Developer\Model\TemplateEngine\Decorator\DebugHints',
$this->identicalTo(['subject' => $engine, 'showBlockHints' => $showBlockHints])
)->will(
$this->returnValue($engineDecorated)
);
$this->objectManagerMock->expects($this->once())
->method('create')
->with(
'Magento\Developer\Model\TemplateEngine\Decorator\DebugHints',
$this->identicalTo(['subject' => $engine, 'showBlockHints' => $showBlockHints])
)
->willReturn($engineDecorated);
$this->assertEquals($engineDecorated, $this->model->afterCreate($this->subjectMock, $engine));
}
/**
* @return array
*/
public function afterCreateActiveDataProvider()
{
return ['block hints disabled' => [false], 'block hints enabled' => [true]];
......@@ -80,17 +104,25 @@ class DebugHintsTest extends \PHPUnit_Framework_TestCase
/**
* @param bool $isDevAllowed
* @param bool $showTemplateHints
* @return void
* @dataProvider afterCreateInactiveDataProvider
*/
public function testAfterCreateInactive($isDevAllowed, $showTemplateHints)
{
$this->devHelperMock->expects($this->any())->method('isDevAllowed')->will($this->returnValue($isDevAllowed));
$this->_setupConfigFixture($showTemplateHints, true);
$this->objectManagerMock->expects($this->never())->method('create');
$engine = $this->getMock('Magento\Framework\View\TemplateEngineInterface', [], [], '', false);
$this->devHelperMock->expects($this->any())
->method('isDevAllowed')
->willReturn($isDevAllowed);
$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));
}
/**
* @return array
*/
public function afterCreateInactiveDataProvider()
{
return [
......@@ -105,30 +137,34 @@ class DebugHintsTest extends \PHPUnit_Framework_TestCase
*
* @param bool $showTemplateHints
* @param bool $showBlockHints
* @return void
*/
protected function _setupConfigFixture($showTemplateHints, $showBlockHints)
protected function setupConfigFixture($showTemplateHints, $showBlockHints)
{
$this->scopeConfigMock->expects(
$this->atLeastOnce()
)->method(
'getValue'
)->will(
$this->returnValueMap(
$storeCode = 'default';
$storeMock = $this->getMock('Magento\Store\Api\Data\StoreInterface');
$storeMock->expects($this->once())
->method('getCode')
->willReturn($storeCode);
$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,
\Magento\Store\Model\ScopeInterface::SCOPE_STORE,
null,
$showTemplateHints,
],
[
DebugHints::XML_PATH_DEBUG_TEMPLATE_HINTS_BLOCKS,
\Magento\Store\Model\ScopeInterface::SCOPE_STORE,
null,
$showBlockHints
],
DebugHints::XML_PATH_DEBUG_TEMPLATE_HINTS_BLOCKS,
\Magento\Store\Model\ScopeInterface::SCOPE_STORE,
$storeCode,
$showBlockHints
]
)
);
]);
}
}
......@@ -10,9 +10,6 @@
<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" />
<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">
<arguments>
<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