3 namespace Tests\Wallabag\CoreBundle\EventListener
;
5 use Symfony\Component\EventDispatcher\EventDispatcher
;
6 use Symfony\Component\HttpFoundation\Request
;
7 use Symfony\Component\HttpFoundation\Session\Session
;
8 use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage
;
9 use Symfony\Component\HttpKernel\Event\GetResponseEvent
;
10 use Symfony\Component\HttpKernel\HttpKernelInterface
;
11 use Symfony\Component\HttpKernel\KernelEvents
;
12 use Wallabag\CoreBundle\EventListener\LocaleListener
;
14 class LocaleListenerTest
extends \PHPUnit_Framework_TestCase
16 private function getEvent(Request
$request)
18 return new GetResponseEvent($this->getMock('Symfony\Component\HttpKernel\HttpKernelInterface'), $request, HttpKernelInterface
::MASTER_REQUEST
);
21 public function testWithoutSession()
23 $request = Request
::create('/');
25 $listener = new LocaleListener('fr');
26 $event = $this->getEvent($request);
28 $listener->onKernelRequest($event);
29 $this->assertEquals('en', $request->getLocale());
32 public function testWithPreviousSession()
34 $request = Request
::create('/');
35 // generate a previous session
36 $request->cookies
->set('MOCKSESSID', 'foo');
37 $request->setSession(new Session(new MockArraySessionStorage()));
39 $listener = new LocaleListener('fr');
40 $event = $this->getEvent($request);
42 $listener->onKernelRequest($event);
43 $this->assertEquals('fr', $request->getLocale());
46 public function testLocaleFromRequestAttribute()
48 $request = Request
::create('/');
49 // generate a previous session
50 $request->cookies
->set('MOCKSESSID', 'foo');
51 $request->setSession(new Session(new MockArraySessionStorage()));
52 $request->attributes
->set('_locale', 'es');
54 $listener = new LocaleListener('fr');
55 $event = $this->getEvent($request);
57 $listener->onKernelRequest($event);
58 $this->assertEquals('en', $request->getLocale());
59 $this->assertEquals('es', $request->getSession()->get('_locale'));
62 public function testSubscribedEvents()
64 $request = Request
::create('/');
65 // generate a previous session
66 $request->cookies
->set('MOCKSESSID', 'foo');
67 $request->setSession(new Session(new MockArraySessionStorage()));
69 $listener = new LocaleListener('fr');
70 $event = $this->getEvent($request);
72 $dispatcher = new EventDispatcher();
73 $dispatcher->addSubscriber($listener);
75 $dispatcher->dispatch(
76 KernelEvents
::REQUEST
,
80 $this->assertEquals('fr', $request->getLocale());