magento2-docker/dev/tests/integration/testsuite/Magento/Framework/App/AreaTest.php

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());
}
}