Вход Регистрация
Файл: gapps/vendor/symfony/http-kernel/Tests/EventListener/LocaleListenerTest.php
Строк: 179
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SymfonyComponentHttpKernelTestsEventListener;

use 
SymfonyComponentHttpFoundationRequest;
use 
SymfonyComponentHttpKernelEventListenerLocaleListener;
use 
SymfonyComponentHttpKernelHttpKernelInterface;
use 
SymfonyComponentHttpKernelEventGetResponseEvent;

class 
LocaleListenerTest extends PHPUnit_Framework_TestCase
{
    private 
$requestStack;

    protected function 
setUp()
    {
        
$this->requestStack $this->getMock('SymfonyComponentHttpFoundationRequestStack', array(), array(), ''false);
    }

    public function 
testDefaultLocaleWithoutSession()
    {
        
$listener = new LocaleListener($this->requestStack'fr');
        
$event $this->getEvent($request Request::create('/'));

        
$listener->onKernelRequest($event);
        
$this->assertEquals('fr'$request->getLocale());
    }

    public function 
testLocaleFromRequestAttribute()
    {
        
$request Request::create('/');
        
session_name('foo');
        
$request->cookies->set('foo''value');

        
$request->attributes->set('_locale''es');
        
$listener = new LocaleListener($this->requestStack'fr');
        
$event $this->getEvent($request);

        
$listener->onKernelRequest($event);
        
$this->assertEquals('es'$request->getLocale());
    }

    public function 
testLocaleSetForRoutingContext()
    {
        
// the request context is updated
        
$context $this->getMock('SymfonyComponentRoutingRequestContext');
        
$context->expects($this->once())->method('setParameter')->with('_locale''es');

        
$router $this->getMock('SymfonyComponentRoutingRouter', array('getContext'), array(), ''false);
        
$router->expects($this->once())->method('getContext')->will($this->returnValue($context));

        
$request Request::create('/');

        
$request->attributes->set('_locale''es');
        
$listener = new LocaleListener($this->requestStack'fr'$router);
        
$listener->onKernelRequest($this->getEvent($request));
    }

    public function 
testRouterResetWithParentRequestOnKernelFinishRequest()
    {
        
// the request context is updated
        
$context $this->getMock('SymfonyComponentRoutingRequestContext');
        
$context->expects($this->once())->method('setParameter')->with('_locale''es');

        
$router $this->getMock('SymfonyComponentRoutingRouter', array('getContext'), array(), ''false);
        
$router->expects($this->once())->method('getContext')->will($this->returnValue($context));

        
$parentRequest Request::create('/');
        
$parentRequest->setLocale('es');

        
$this->requestStack->expects($this->once())->method('getParentRequest')->will($this->returnValue($parentRequest));

        
$event $this->getMock('SymfonyComponentHttpKernelEventFinishRequestEvent', array(), array(), ''false);

        
$listener = new LocaleListener($this->requestStack'fr'$router);
        
$listener->onKernelFinishRequest($event);
    }

    public function 
testRequestLocaleIsNotOverridden()
    {
        
$request Request::create('/');
        
$request->setLocale('de');
        
$listener = new LocaleListener($this->requestStack'fr');
        
$event $this->getEvent($request);

        
$listener->onKernelRequest($event);
        
$this->assertEquals('de'$request->getLocale());
    }

    private function 
getEvent(Request $request)
    {
        return new 
GetResponseEvent($this->getMock('SymfonyComponentHttpKernelHttpKernelInterface'), $requestHttpKernelInterface::MASTER_REQUEST);
    }
}
Онлайн: 4
Реклама