123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\App\Test\Unit;
- use \Magento\Framework\App\Area;
- /**
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class AreaTest extends \PHPUnit\Framework\TestCase
- {
- const SCOPE_ID = '1';
- /**
- * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
- */
- protected $objectManager;
- /**
- * @var \Magento\Framework\Event\ManagerInterface | \PHPUnit_Framework_MockObject_MockObject
- */
- protected $eventManagerMock;
- /**
- * @var \Magento\Framework\ObjectManagerInterface | \PHPUnit_Framework_MockObject_MockObject
- */
- protected $objectManagerMock;
- /**
- * @var \Magento\Framework\App\ObjectManager\ConfigLoader | \PHPUnit_Framework_MockObject_MockObject
- */
- protected $diConfigLoaderMock;
- /**
- * @var \Magento\Framework\TranslateInterface | \PHPUnit_Framework_MockObject_MockObject
- */
- protected $translatorMock;
- /**
- * @var \Psr\Log\LoggerInterface | \PHPUnit_Framework_MockObject_MockObject
- */
- protected $loggerMock;
- /**
- * @var \Magento\Framework\App\DesignInterface | \PHPUnit_Framework_MockObject_MockObject
- */
- protected $designMock;
- /**
- * @var \Magento\Framework\App\ScopeResolverInterface | \PHPUnit_Framework_MockObject_MockObject
- */
- protected $scopeResolverMock;
- /**
- * @var \Magento\Framework\View\DesignExceptions | \PHPUnit_Framework_MockObject_MockObject
- */
- protected $designExceptionsMock;
- /**
- * @var string
- */
- protected $areaCode;
- /**
- * @var Area
- */
- protected $object;
- /** @var \Magento\Framework\Phrase\RendererInterface */
- private $defaultRenderer;
- protected function setUp()
- {
- $this->defaultRenderer = \Magento\Framework\Phrase::getRenderer();
- $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
- $this->loggerMock = $this->getMockBuilder(\Psr\Log\LoggerInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->eventManagerMock = $this->getMockBuilder(\Magento\Framework\Event\ManagerInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->translatorMock = $this->getMockBuilder(\Magento\Framework\TranslateInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->diConfigLoaderMock = $this->getMockBuilder(\Magento\Framework\App\ObjectManager\ConfigLoader::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->objectManagerMock = $this->getMockBuilder(\Magento\Framework\ObjectManagerInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->designMock = $this->getMockBuilder(\Magento\Framework\App\DesignInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->scopeResolverMock = $this->getMockBuilder(\Magento\Framework\App\ScopeResolverInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $scopeMock = $this->getMockBuilder(\Magento\Framework\App\ScopeInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $scopeMock->expects($this->any())
- ->method('getId')
- ->will($this->returnValue(self::SCOPE_ID));
- $this->scopeResolverMock->expects($this->any())
- ->method('getScope')
- ->will($this->returnValue($scopeMock));
- $this->designExceptionsMock = $this->getMockBuilder(\Magento\Framework\View\DesignExceptions::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->areaCode = Area::AREA_FRONTEND;
- $this->object = $this->objectManager->getObject(
- \Magento\Framework\App\Area::class,
- [
- 'logger' => $this->loggerMock,
- 'objectManager' => $this->objectManagerMock,
- 'eventManager' => $this->eventManagerMock,
- 'translator' => $this->translatorMock,
- 'diConfigLoader' => $this->diConfigLoaderMock,
- 'design' => $this->designMock,
- 'scopeResolver' => $this->scopeResolverMock,
- 'designExceptions' => $this->designExceptionsMock,
- 'areaCode' => $this->areaCode,
- ]
- );
- }
- public function tearDown()
- {
- \Magento\Framework\Phrase::setRenderer($this->defaultRenderer);
- }
- public function testLoadConfig()
- {
- $this->verifyLoadConfig();
- $this->object->load(Area::PART_CONFIG);
- }
- public function testLoadTranslate()
- {
- $this->translatorMock->expects($this->once())
- ->method('loadData');
- $renderMock = $this->getMockBuilder(\Magento\Framework\Phrase\RendererInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->objectManagerMock->expects($this->once())
- ->method('get')
- ->with(\Magento\Framework\Phrase\RendererInterface::class)
- ->will($this->returnValue($renderMock));
- $this->object->load(Area::PART_TRANSLATE);
- }
- public function testLoadDesign()
- {
- $designMock = $this->getMockBuilder(\Magento\Framework\View\DesignInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->objectManagerMock->expects($this->once())
- ->method('get')
- ->with(\Magento\Framework\View\DesignInterface::class)
- ->will($this->returnValue($designMock));
- $designMock->expects($this->once())
- ->method('setArea')
- ->with($this->areaCode)
- ->willReturnSelf();
- $designMock->expects($this->once())
- ->method('setDefaultDesignTheme');
- $this->object->load(Area::PART_DESIGN);
- }
- public function testLoadUnknownPart()
- {
- $this->objectManagerMock->expects($this->never())
- ->method('configure');
- $this->objectManagerMock->expects($this->never())
- ->method('get');
- $this->object->load('unknown part');
- }
- public function testLoad()
- {
- $this->verifyLoadConfig();
- $this->translatorMock->expects($this->once())
- ->method('loadData');
- $renderMock = $this->getMockBuilder(\Magento\Framework\Phrase\RendererInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $designMock = $this->getMockBuilder(\Magento\Framework\View\DesignInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $designMock->expects($this->once())
- ->method('setArea')
- ->with($this->areaCode)
- ->willReturnSelf();
- $designMock->expects($this->once())
- ->method('setDefaultDesignTheme');
- $this->objectManagerMock->expects($this->exactly(2))
- ->method('get')
- ->will($this->returnValueMap(
- [
- [\Magento\Framework\Phrase\RendererInterface::class, $renderMock],
- [\Magento\Framework\View\DesignInterface::class, $designMock],
- ]
- ));
- $this->object->load();
- }
- private function verifyLoadConfig()
- {
- $configs = ['dummy configs'];
- $this->diConfigLoaderMock->expects($this->once())
- ->method('load')
- ->with($this->areaCode)
- ->will($this->returnValue($configs));
- $this->objectManagerMock->expects($this->once())
- ->method('configure')
- ->with($configs);
- }
- public function testDetectDesign()
- {
- $this->designExceptionsMock->expects($this->never())
- ->method('getThemeByRequest');
- $this->designMock->expects($this->once())
- ->method('loadChange')
- ->with(self::SCOPE_ID)
- ->willReturnSelf();
- $designMock = $this->getMockBuilder(\Magento\Framework\View\DesignInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->objectManagerMock->expects($this->once())
- ->method('get')
- ->with(\Magento\Framework\View\DesignInterface::class)
- ->will($this->returnValue($designMock));
- $this->designMock->expects($this->once())
- ->method('changeDesign')
- ->with($designMock)
- ->willReturnSelf();
- $this->object->detectDesign();
- }
- /**
- * @param string|bool $value
- * @param int $callNum
- * @param int $callNum2
- * @dataProvider detectDesignByRequestDataProvider
- */
- public function testDetectDesignByRequest($value, $callNum, $callNum2)
- {
- $this->designExceptionsMock->expects($this->once())
- ->method('getThemeByRequest')
- ->will($this->returnValue($value));
- $designMock = $this->getMockBuilder(\Magento\Framework\View\DesignInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $designMock->expects($this->exactly($callNum))
- ->method('setDesignTheme');
- $this->objectManagerMock->expects($this->once())
- ->method('get')
- ->with(\Magento\Framework\View\DesignInterface::class)
- ->will($this->returnValue($designMock));
- $this->designMock->expects($this->exactly($callNum2))
- ->method('loadChange')
- ->with(self::SCOPE_ID)
- ->willReturnSelf();
- $this->designMock->expects($this->exactly($callNum2))
- ->method('changeDesign')
- ->with($designMock)
- ->willReturnSelf();
- $requestMock = $this->getMockBuilder(\Magento\Framework\App\Request\Http::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->object->detectDesign($requestMock);
- }
- /**
- * @return array
- */
- public function detectDesignByRequestDataProvider()
- {
- return [
- [false, 0, 1],
- ['theme', 1, 0],
- ];
- }
- public function testDetectDesignByRequestWithException()
- {
- $exception = new \Exception('exception');
- $this->designExceptionsMock->expects($this->once())
- ->method('getThemeByRequest')
- ->will($this->throwException($exception));
- $designMock = $this->getMockBuilder(\Magento\Framework\View\DesignInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $designMock->expects($this->never())
- ->method('setDesignTheme');
- $this->objectManagerMock->expects($this->once())
- ->method('get')
- ->with(\Magento\Framework\View\DesignInterface::class)
- ->will($this->returnValue($designMock));
- $this->designMock->expects($this->once())
- ->method('loadChange')
- ->with(self::SCOPE_ID)
- ->willReturnSelf();
- $this->designMock->expects($this->once())
- ->method('changeDesign')
- ->with($designMock)
- ->willReturnSelf();
- $requestMock = $this->getMockBuilder(\Magento\Framework\App\Request\Http::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->loggerMock->expects($this->once())
- ->method('critical')
- ->with($exception);
- $this->object->detectDesign($requestMock);
- }
- }
|