Networking\InitCmsBundle\Tests\Controller\FrontendPageControllerTest::testHomeAction PHP Метод

testHomeAction() публичный Метод

home
public testHomeAction ( )
    public function testHomeAction()
    {
        $mockPage = $this->getMock('\\Networking\\InitCmsBundle\\Model\\Page');
        $mockSnapshot = $this->getMockForAbstractClass('\\Networking\\InitCmsBundle\\Model\\PageSnapshot', array($mockPage));
        $mockPage->expects($this->once())->method('getVisibility')->will($this->returnValue(PageInterface::VISIBILITY_PUBLIC));
        $mockPage->expects($this->once())->method('isActive')->will($this->returnValue(true));
        $pageHelper = new \Networking\InitCmsBundle\Helper\PageHelper();
        $mockSerializer = $this->getMockBuilder('\\JMS\\Serializer\\SerializerInterface')->disableOriginalConstructor()->getMock();
        $mockSerializer->expects($this->once())->method('deserialize')->willReturn($mockPage);
        //security context
        $mockTokenStorage = $this->getMockBuilder('Symfony\\Component\\Security\\Core\\Authentication\\Token\\Storage\\TokenStorage')->disableOriginalConstructor()->getMock();
        $mockTokenStorage->expects($this->any())->method('isGranted')->with('ROLE_USER')->will($this->returnValue(true));
        $_SERVER = array('PATH_INFO' => '/', 'SCRIPT_NAME' => 'app.php');
        $templateParams = array('template' => 'DemoInitCmsBundle:Default:one_column.html.twig', 'engine' => 'twig', 'vars' => array(), 'isStreamable' => false);
        $template = new Template($templateParams);
        $requestParams = array('_content' => $mockSnapshot, '_template' => $template);
        //templating
        $mockTemplating = $this->getMockBuilder('\\Symfony\\Bundle\\TwigBundle\\Debug\\TimedTwigEngine')->disableOriginalConstructor()->getMock();
        $mockResponse = $this->getMockBuilder('\\Symfony\\Component\\HttpFoundation\\Response')->getMock();
        $mockTemplating->expects($this->once())->method('render')->will($this->returnValue($mockResponse));
        //request
        $request = new Request(array(), array(), array(), array(), array(), $_SERVER);
        $request->attributes->set('_route', 'networking_init_cms_default');
        $request->attributes->set('_locale', 'en');
        //dynamic router
        $mockDynamicRouter = $this->getMockBuilder('\\Symfony\\Cmf\\Component\\Routing\\DynamicRouter')->disableOriginalConstructor()->getMock();
        $mockDynamicRouter->expects($this->once())->method('matchRequest')->with($request)->willReturn($requestParams);
        //container
        $mockContainer = $this->getMockBuilder('Symfony\\Component\\DependencyInjection\\Container')->disableOriginalConstructor()->getMock();
        //cache class
        $mockCacheClass = $this->getMockBuilder('Networking\\InitCmsBundle\\Lib\\PhpCache')->disableOriginalConstructor()->getMock();
        $mockContainer->expects($this->at(0))->method('get')->with('networking_init_cms.helper.page_helper')->will($this->returnValue($pageHelper));
        $mockContainer->expects($this->at(1))->method('get')->with('networking_init_cms.cms_router')->will($this->returnValue($mockDynamicRouter));
        $mockContainer->expects($this->at(2))->method('get')->with('networking_init_cms.lib.php_cache')->will($this->returnValue($mockCacheClass));
        $mockContainer->expects($this->at(3))->method('has')->with('security.token_storage')->will($this->returnValue(true));
        $mockContainer->expects($this->at(4))->method('get')->with('security.token_storage')->will($this->returnValue($mockTokenStorage));
        $mockContainer->expects($this->at(5))->method('get')->with('networking_init_cms.helper.page_helper')->will($this->returnValue($pageHelper));
        $mockContainer->expects($this->at(6))->method('get')->with('serializer')->willReturn($mockSerializer);
        $mockContainer->expects($this->at(7))->method('get')->with('security.token_storage')->will($this->returnValue($mockTokenStorage));
        $mockContainer->expects($this->at(8))->method('has')->with('templating')->will($this->returnValue(true));
        $mockContainer->expects($this->at(9))->method('get')->with('templating')->will($this->returnValue($mockTemplating));
        $requestAfter = clone $request;
        $requestAfter->attributes->add($requestParams);
        unset($requestParams['_route']);
        unset($requestParams['_controller']);
        $requestAfter->attributes->set('_route_params', $requestParams);
        $configuration = $requestAfter->attributes->get('_template');
        $requestAfter->attributes->set('_template', $configuration->getTemplate());
        $requestAfter->attributes->set('_template_vars', $configuration->getVars());
        $requestAfter->attributes->set('_template_streamable', $configuration->isStreamable());
        $pageHelper->setContainer($mockContainer);
        $controller = new FrontendPageController();
        $controller->setContainer($mockContainer);
        $response = $controller->homeAction($request);
        $this->assertInstanceOf('\\Symfony\\Component\\HttpFoundation\\Response', $response, 'response object returned');
    }