123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Robots\Test\Unit\Controller;
- class RouterTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var \Magento\Framework\App\ActionFactory|\PHPUnit_Framework_MockObject_MockObject
- */
- private $actionFactoryMock;
- /**
- * @var \Magento\Framework\App\Router\ActionList|\PHPUnit_Framework_MockObject_MockObject
- */
- private $actionListMock;
- /**
- * @var \Magento\Framework\App\Route\ConfigInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- private $routeConfigMock;
- /**
- * @var \Magento\Robots\Controller\Router
- */
- private $router;
- protected function setUp()
- {
- $this->actionFactoryMock = $this->getMockBuilder(\Magento\Framework\App\ActionFactory::class)
- ->disableOriginalConstructor()
- ->setMethods(['create'])
- ->getMock();
- $this->actionListMock = $this->getMockBuilder(\Magento\Framework\App\Router\ActionList::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->routeConfigMock = $this->getMockBuilder(\Magento\Framework\App\Route\ConfigInterface::class)
- ->getMockForAbstractClass();
- $this->router = new \Magento\Robots\Controller\Router(
- $this->actionFactoryMock,
- $this->actionListMock,
- $this->routeConfigMock
- );
- }
- /**
- * Check case when robots.txt file is not requested
- */
- public function testMatchNoRobotsRequested()
- {
- $identifier = 'test';
- $requestMock = $this->getMockBuilder(\Magento\Framework\App\RequestInterface::class)
- ->setMethods(['getPathInfo'])
- ->getMockForAbstractClass();
- $requestMock->expects($this->once())
- ->method('getPathInfo')
- ->willReturn($identifier);
- $this->assertNull($this->router->match($requestMock));
- }
- /**
- * Check case, when no existed modules in Magento to process 'robots' route
- */
- public function testMatchNoRobotsModules()
- {
- $identifier = 'robots.txt';
- $requestMock = $this->getMockBuilder(\Magento\Framework\App\RequestInterface::class)
- ->setMethods(['getPathInfo'])
- ->getMockForAbstractClass();
- $requestMock->expects($this->once())
- ->method('getPathInfo')
- ->willReturn($identifier);
- $this->routeConfigMock->expects($this->once())
- ->method('getModulesByFrontName')
- ->with('robots')
- ->willReturn([]);
- $this->assertNull($this->router->match($requestMock));
- }
- /**
- * Check the basic flow of match() method
- */
- public function testMatch()
- {
- $identifier = 'robots.txt';
- $moduleName = 'Magento_Robots';
- $actionClassName = \Magento\Robots\Controller\Index\Index::class;
- $requestMock = $this->getMockBuilder(\Magento\Framework\App\RequestInterface::class)
- ->setMethods(['getPathInfo'])
- ->getMockForAbstractClass();
- $requestMock->expects($this->once())
- ->method('getPathInfo')
- ->willReturn($identifier);
- $this->routeConfigMock->expects($this->once())
- ->method('getModulesByFrontName')
- ->with('robots')
- ->willReturn([$moduleName]);
- $this->actionListMock->expects($this->once())
- ->method('get')
- ->with($moduleName, null, 'index', 'index')
- ->willReturn($actionClassName);
- $actionClassMock = $this->getMockBuilder(\Magento\Robots\Controller\Index\Index::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->actionFactoryMock->expects($this->once())
- ->method('create')
- ->with($actionClassName)
- ->willReturn($actionClassMock);
- $this->assertInstanceOf($actionClassName, $this->router->match($requestMock));
- }
- }
|