tests for the TranslatorListener

This commit is contained in:
Christian Flothmann 2014-10-03 17:48:46 +02:00
parent 9b2195c17b
commit 26b619b337
3 changed files with 89 additions and 1 deletions

View File

@ -11,11 +11,12 @@
namespace Symfony\Component\HttpKernel\EventListener;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Translator\TranslatorInterface;
use Symfony\Component\Translation\TranslatorInterface;
/**
* Synchronizes the locale between the request and the translator.

View File

@ -0,0 +1,86 @@
<?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 Symfony\Component\HttpKernel\Tests\EventListener;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\EventListener\TranslatorListener;
use Symfony\Component\HttpKernel\HttpKernelInterface;
class TranslatorListenerTest extends \PHPUnit_Framework_TestCase
{
private $listener;
private $translator;
private $requestStack;
protected function setUp()
{
$this->translator = $this->getMock('Symfony\Component\Translation\TranslatorInterface');
$this->requestStack = $this->getMock('Symfony\Component\HttpFoundation\RequestStack');
$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 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);
}
private function createHttpKernel()
{
return $this->getMock('Symfony\Component\HttpKernel\HttpKernelInterface');
}
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));
}
}

View File

@ -28,6 +28,7 @@
"symfony/config": "~2.0",
"symfony/console": "~2.2",
"symfony/dependency-injection": "~2.0",
"symfony/event-dispatcher": "~2.3",
"symfony/expression-language": "~2.4",
"symfony/finder": "~2.0",
"symfony/process": "~2.0",