Вход Регистрация
Файл: gapps/vendor/symfony/http-kernel/Tests/EventListener/TranslatorListenerTest.php
Строк: 211
<?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 
SymfonyComponentHttpKernelEventFinishRequestEvent;
use 
SymfonyComponentHttpKernelEventGetResponseEvent;
use 
SymfonyComponentHttpKernelEventListenerTranslatorListener;
use 
SymfonyComponentHttpKernelHttpKernelInterface;

class 
TranslatorListenerTest extends PHPUnit_Framework_TestCase
{
    private 
$listener;
    private 
$translator;
    private 
$requestStack;

    protected function 
setUp()
    {
        
$this->translator $this->getMock('SymfonyComponentTranslationTranslatorInterface');
        
$this->requestStack $this->getMock('SymfonyComponentHttpFoundationRequestStack');
        
$this->listener = new TranslatorListener($this->translator$this->requestStack);
    }

    public function 
testLocaleIsSetInOnKernelRequest()
    {
        
$this->translator
            
->expects($this->once())
            ->
method('setLocale')
            ->
with($this->equalTo('fr'));

        
$event = new GetResponseEvent($this->createHttpKernel(), $this->createRequest('fr'), HttpKernelInterface::MASTER_REQUEST);
        
$this->listener->onKernelRequest($event);
    }

    public function 
testDefaultLocaleIsUsedOnExceptionsInOnKernelRequest()
    {
        
$this->translator
            
->expects($this->at(0))
            ->
method('setLocale')
            ->
will($this->throwException(new InvalidArgumentException()));
        
$this->translator
            
->expects($this->at(1))
            ->
method('setLocale')
            ->
with($this->equalTo('en'));

        
$event = new GetResponseEvent($this->createHttpKernel(), $this->createRequest('fr'), HttpKernelInterface::MASTER_REQUEST);
        
$this->listener->onKernelRequest($event);
    }

    public function 
testLocaleIsSetInOnKernelFinishRequestWhenParentRequestExists()
    {
        
$this->translator
            
->expects($this->once())
            ->
method('setLocale')
            ->
with($this->equalTo('fr'));

        
$this->setMasterRequest($this->createRequest('fr'));
        
$event = new FinishRequestEvent($this->createHttpKernel(), $this->createRequest('de'), HttpKernelInterface::SUB_REQUEST);
        
$this->listener->onKernelFinishRequest($event);
    }

    public function 
testLocaleIsNotSetInOnKernelFinishRequestWhenParentRequestDoesNotExist()
    {
        
$this->translator
            
->expects($this->never())
            ->
method('setLocale');

        
$event = new FinishRequestEvent($this->createHttpKernel(), $this->createRequest('de'), HttpKernelInterface::SUB_REQUEST);
        
$this->listener->onKernelFinishRequest($event);
    }

    public function 
testDefaultLocaleIsUsedOnExceptionsInOnKernelFinishRequest()
    {
        
$this->translator
            
->expects($this->at(0))
            ->
method('setLocale')
            ->
will($this->throwException(new InvalidArgumentException()));
        
$this->translator
            
->expects($this->at(1))
            ->
method('setLocale')
            ->
with($this->equalTo('en'));

        
$this->setMasterRequest($this->createRequest('fr'));
        
$event = new FinishRequestEvent($this->createHttpKernel(), $this->createRequest('de'), HttpKernelInterface::SUB_REQUEST);
        
$this->listener->onKernelFinishRequest($event);
    }

    private function 
createHttpKernel()
    {
        return 
$this->getMock('SymfonyComponentHttpKernelHttpKernelInterface');
    }

    private function 
createRequest($locale)
    {
        
$request = new Request();
        
$request->setLocale($locale);

        return 
$request;
    }

    private function 
setMasterRequest($request)
    {
        
$this->requestStack
            
->expects($this->any())
            ->
method('getParentRequest')
            ->
will($this->returnValue($request));
    }
}
Онлайн: 1
Реклама