3 namespace Wallabag\CoreBundle\Tests\EventListener
;
5 use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase
;
6 use Symfony\Component\EventDispatcher\EventDispatcher
;
7 use Symfony\Component\HttpFoundation\Request
;
8 use Symfony\Component\HttpKernel\KernelEvents
;
9 use Symfony\Component\HttpKernel\Event\GetResponseEvent
;
10 use Symfony\Component\HttpKernel\HttpKernelInterface
;
11 use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage
;
12 use Symfony\Component\HttpFoundation\Session\Session
;
13 use Wallabag\CoreBundle\EventListener\LocaleListener
;
15 class LocaleListenerTest
extends KernelTestCase
17 private function getEvent(Request
$request)
19 return new GetResponseEvent($this->getMock('Symfony\Component\HttpKernel\HttpKernelInterface'), $request, HttpKernelInterface
::MASTER_REQUEST
);
22 public function testWithoutSession()
24 $request = Request
::create('/');
26 $listener = new LocaleListener('fr');
27 $event = $this->getEvent($request);
29 $listener->onKernelRequest($event);
30 $this->assertEquals('en', $request->getLocale());
33 public function testWithPreviousSession()
35 $request = Request
::create('/');
36 // generate a previous session
37 $request->cookies
->set('MOCKSESSID', 'foo');
38 $request->setSession(new Session(new MockArraySessionStorage()));
40 $listener = new LocaleListener('fr');
41 $event = $this->getEvent($request);
43 $listener->onKernelRequest($event);
44 $this->assertEquals('fr', $request->getLocale());
47 public function testLocaleFromRequestAttribute()
49 $request = Request
::create('/');
50 // generate a previous session
51 $request->cookies
->set('MOCKSESSID', 'foo');
52 $request->setSession(new Session(new MockArraySessionStorage()));
53 $request->attributes
->set('_locale', 'es');
55 $listener = new LocaleListener('fr');
56 $event = $this->getEvent($request);
58 $listener->onKernelRequest($event);
59 $this->assertEquals('en', $request->getLocale());
60 $this->assertEquals('es', $request->getSession()->get('_locale'));
63 public function testSubscribedEvents()
65 $request = Request
::create('/');
66 // generate a previous session
67 $request->cookies
->set('MOCKSESSID', 'foo');
68 $request->setSession(new Session(new MockArraySessionStorage()));
70 $listener = new LocaleListener('fr');
71 $event = $this->getEvent($request);
73 $dispatcher = new EventDispatcher();
74 $dispatcher->addSubscriber($listener);
76 $dispatcher->dispatch(
77 KernelEvents
::REQUEST
,
81 $this->assertEquals('fr', $request->getLocale());