magento2-docker/dev/tests/integration/testsuite/Magento/Backend/App/RouterTest.php

100 lines
3.4 KiB
PHP
Executable File

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Backend\App;
/**
* @magentoAppArea adminhtml
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class RouterTest extends \PHPUnit\Framework\TestCase
{
/**
* @var \Magento\Backend\App\Router
*/
protected $model;
/**
* @var \Magento\Framework\ObjectManagerInterface
*/
protected $objectManager;
protected function setUp(): void
{
$this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
$this->model = $this->objectManager->create(\Magento\Backend\App\Router::class);
}
public function testRouterCanProcessRequestsWithProperPathInfo()
{
$request = $this->createMock(\Magento\Framework\App\Request\Http::class);
$request->expects($this->once())->method('getPathInfo')->willReturn('backend/admin/dashboard');
$this->assertInstanceOf(\Magento\Backend\Controller\Adminhtml\Dashboard::class, $this->model->match($request));
}
/**
* @param string $module
* @param string $controller
* @param string $className
*
* @dataProvider getControllerClassNameDataProvider
*/
public function testGetControllerClassName($module, $controller, $className)
{
$this->assertEquals($className, $this->model->getActionClassName($module, $controller));
}
public function getControllerClassNameDataProvider()
{
return [
['Magento_TestModule', 'controller', \Magento\TestModule\Controller\Adminhtml\Controller::class],
];
}
public function testMatchCustomNoRouteAction()
{
if (!\Magento\TestFramework\Helper\Bootstrap::canTestHeaders()) {
$this->markTestSkipped('Can\'t test get match without sending headers');
}
$routers = [
'testmodule' => [
'frontName' => 'testfixture',
'id' => 'testfixture',
'modules' => ['Magento_TestFixture'],
],
];
$routeConfig = $this->getMockBuilder(\Magento\Framework\App\Route\Config::class)
->setMethods(['_getRoutes'])
->setConstructorArgs(
[
'reader' => $this->objectManager->get(\Magento\Framework\App\Route\Config\Reader::class),
'cache' => $this->objectManager->get(\Magento\Framework\Config\CacheInterface::class),
'configScope' => $this->objectManager->get(\Magento\Framework\Config\ScopeInterface::class),
'areaList' => $this->objectManager->get(\Magento\Framework\App\AreaList::class),
'cacheId' => 'RoutesConfig'
]
)
->getMock();
$routeConfig->expects($this->any())->method('_getRoutes')->willReturn($routers);
$defaultRouter = $this->objectManager->create(
\Magento\Backend\App\Router::class,
['routeConfig' => $routeConfig]
);
/** @var $request \Magento\TestFramework\Request */
$request = $this->objectManager->get(\Magento\TestFramework\Request::class);
$request->setPathInfo('backend/testfixture/test_controller');
$controller = $defaultRouter->match($request);
$this->assertInstanceOf(\Magento\TestFixture\Controller\Adminhtml\Noroute::class, $controller);
$this->assertEquals('noroute', $request->getActionName());
}
}