diff --git a/app/code/Magento/Developer/Model/TemplateEngine/Plugin/DebugHints.php b/app/code/Magento/Developer/Model/TemplateEngine/Plugin/DebugHints.php index 33f9eea54015be86a303b36ce309b83340cd7331..9d816ef52028891ba125124379e6be7cdb6ebf96 100644 --- a/app/code/Magento/Developer/Model/TemplateEngine/Plugin/DebugHints.php +++ b/app/code/Magento/Developer/Model/TemplateEngine/Plugin/DebugHints.php @@ -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', diff --git a/app/code/Magento/Developer/Test/Unit/Model/TemplateEngine/Plugin/DebugHintsTest.php b/app/code/Magento/Developer/Test/Unit/Model/TemplateEngine/Plugin/DebugHintsTest.php index 00cc776db30eb9e2195366971f391957be16f2a1..c38333a08506da0685cb844f8a482292445ed742 100644 --- a/app/code/Magento/Developer/Test/Unit/Model/TemplateEngine/Plugin/DebugHintsTest.php +++ b/app/code/Magento/Developer/Test/Unit/Model/TemplateEngine/Plugin/DebugHintsTest.php @@ -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 ] - ) - ); + ]); } } diff --git a/app/code/Magento/Developer/etc/di.xml b/app/code/Magento/Developer/etc/di.xml index ea0f67f38bed507d85c70467b78457555a012136..436385046bc060fdce294221979dae5a5f6383a4 100644 --- a/app/code/Magento/Developer/etc/di.xml +++ b/app/code/Magento/Developer/etc/di.xml @@ -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> diff --git a/app/code/Magento/Developer/etc/frontend/di.xml b/app/code/Magento/Developer/etc/frontend/di.xml new file mode 100644 index 0000000000000000000000000000000000000000..0c1a3a45d3b261f71ec977b2ee6a2201b6d37650 --- /dev/null +++ b/app/code/Magento/Developer/etc/frontend/di.xml @@ -0,0 +1,12 @@ +<?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>