wallabag/tests/Wallabag/CoreBundle/EventListener/LocaleListenerTest.php

87 lines
2.8 KiB
PHP
Raw Normal View History

2015-10-16 05:40:09 +00:00
<?php
2016-06-01 19:27:35 +00:00
namespace Tests\Wallabag\CoreBundle\EventListener;
2015-10-16 05:40:09 +00:00
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
2015-10-16 05:40:09 +00:00
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpKernel\KernelEvents;
2015-10-16 05:40:09 +00:00
use Wallabag\CoreBundle\EventListener\LocaleListener;
class LocaleListenerTest extends \PHPUnit_Framework_TestCase
2015-10-16 05:40:09 +00:00
{
private function getEvent(Request $request)
{
$kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')
->disableOriginalConstructor()
->getMock();
return new GetResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
2015-10-16 05:40:09 +00:00
}
public function testWithoutSession()
{
$request = Request::create('/');
$listener = new LocaleListener('fr');
$event = $this->getEvent($request);
$listener->onKernelRequest($event);
$this->assertEquals('en', $request->getLocale());
}
public function testWithPreviousSession()
{
$request = Request::create('/');
// generate a previous session
$request->cookies->set('MOCKSESSID', 'foo');
$request->setSession(new Session(new MockArraySessionStorage()));
$listener = new LocaleListener('fr');
$event = $this->getEvent($request);
$listener->onKernelRequest($event);
$this->assertEquals('fr', $request->getLocale());
}
public function testLocaleFromRequestAttribute()
{
$request = Request::create('/');
// generate a previous session
$request->cookies->set('MOCKSESSID', 'foo');
$request->setSession(new Session(new MockArraySessionStorage()));
$request->attributes->set('_locale', 'es');
$listener = new LocaleListener('fr');
$event = $this->getEvent($request);
$listener->onKernelRequest($event);
$this->assertEquals('en', $request->getLocale());
$this->assertEquals('es', $request->getSession()->get('_locale'));
}
public function testSubscribedEvents()
{
$request = Request::create('/');
// generate a previous session
$request->cookies->set('MOCKSESSID', 'foo');
$request->setSession(new Session(new MockArraySessionStorage()));
$listener = new LocaleListener('fr');
$event = $this->getEvent($request);
$dispatcher = new EventDispatcher();
$dispatcher->addSubscriber($listener);
$dispatcher->dispatch(
KernelEvents::REQUEST,
$event
);
$this->assertEquals('fr', $request->getLocale());
}
}