119 lines
4.9 KiB
PHP
Executable File
119 lines
4.9 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\Framework\App;
|
|
|
|
use Laminas\Stdlib\Parameters;
|
|
|
|
class AreaTest extends \PHPUnit\Framework\TestCase
|
|
{
|
|
/**
|
|
* @var \Magento\Framework\App\Area
|
|
*/
|
|
protected $_model;
|
|
|
|
public static function tearDownAfterClass(): void
|
|
{
|
|
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(\Magento\Framework\App\CacheInterface::class)
|
|
->clean([\Magento\Theme\Model\Design::CACHE_TAG]);
|
|
}
|
|
|
|
protected function setUp(): void
|
|
{
|
|
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(\Magento\Framework\App\State::class)
|
|
->setAreaCode('frontend');
|
|
/** @var $_model \Magento\Framework\App\Area */
|
|
$this->_model = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
|
|
\Magento\Framework\App\Area::class,
|
|
['areaCode' => 'frontend']
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @magentoAppIsolation enabled
|
|
*/
|
|
public function testInitDesign()
|
|
{
|
|
$defaultTheme = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Framework\View\DesignInterface::class
|
|
)->setDefaultDesignTheme()->getDesignTheme();
|
|
$this->_model->load(\Magento\Framework\App\Area::PART_DESIGN);
|
|
$design = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Framework\View\DesignInterface::class
|
|
)->setDefaultDesignTheme();
|
|
|
|
$this->assertEquals($defaultTheme->getThemePath(), $design->getDesignTheme()->getThemePath());
|
|
$this->assertEquals('frontend', $design->getArea());
|
|
|
|
// try second time and make sure it won't load second time
|
|
$this->_model->load(\Magento\Framework\App\Area::PART_DESIGN);
|
|
$designArea = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Framework\View\DesignInterface::class
|
|
)->getArea();
|
|
$sameDesign = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Framework\View\DesignInterface::class
|
|
)->setArea(
|
|
$designArea
|
|
);
|
|
$this->assertSame($design, $sameDesign);
|
|
}
|
|
|
|
// @codingStandardsIgnoreStart
|
|
/**
|
|
* @magentoConfigFixture current_store design/theme/ua_regexp {"_":{"regexp":"\/firefox\/i","value":"Magento\/blank"}}
|
|
* @magentoAppIsolation enabled
|
|
*/
|
|
// @codingStandardsIgnoreEnd
|
|
public function testDetectDesignUserAgent()
|
|
{
|
|
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
|
|
/** @var $request \Magento\TestFramework\Request */
|
|
$request = $objectManager->create(\Magento\TestFramework\Request::class);
|
|
$request->setServer(new Parameters(['HTTP_USER_AGENT' => 'Mozilla Firefox']));
|
|
$this->_model->detectDesign($request);
|
|
$design = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Framework\View\DesignInterface::class
|
|
);
|
|
$this->assertEquals('Magento/blank', $design->getDesignTheme()->getThemePath());
|
|
}
|
|
|
|
// @codingStandardsIgnoreStart
|
|
/**
|
|
* @magentoConfigFixture current_store design/theme/ua_regexp {"_":{"regexp":"\/firefox\/i","value":"Magento\/blank"}}
|
|
* @magentoDataFixture Magento/Theme/_files/design_change.php
|
|
* @magentoAppIsolation enabled
|
|
*/
|
|
// @codingStandardsIgnoreEnd
|
|
public function testDetectDesignDesignChange()
|
|
{
|
|
$this->_model->detectDesign();
|
|
$design = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Framework\View\DesignInterface::class
|
|
);
|
|
$this->assertEquals('Magento/luma', $design->getDesignTheme()->getThemePath());
|
|
}
|
|
|
|
// @codingStandardsIgnoreStart
|
|
/**
|
|
* Test that non-frontend areas are not affected neither by user-agent reg expressions, nor by the "design change"
|
|
*
|
|
* @magentoConfigFixture current_store design/theme/ua_regexp {"_":{"regexp":"\/firefox\/i","value":"Magento\/blank"}}
|
|
* magentoDataFixture Magento/Theme/_files/design_change.php
|
|
* @magentoAppIsolation enabled
|
|
*/
|
|
// @codingStandardsIgnoreEnd
|
|
public function testDetectDesignNonFrontend()
|
|
{
|
|
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
|
|
$model = $objectManager->create(\Magento\Framework\App\Area::class, ['areaCode' => 'adminhtml']);
|
|
/** @var $request \Magento\TestFramework\Request */
|
|
$request = $objectManager->create(\Magento\TestFramework\Request::class);
|
|
$request->setServer(new Parameters(['HTTP_USER_AGENT' => 'Mozilla Firefox']));
|
|
$model->detectDesign($request);
|
|
$design = $objectManager->get(\Magento\Framework\View\DesignInterface::class);
|
|
$this->assertNotEquals('Magento/blank', $design->getDesignTheme()->getThemePath());
|
|
}
|
|
}
|