3 namespace Tests\Wallabag\CoreBundle\Event\Listener
;
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\Event\Listener\LocaleListener
;
14 class LocaleListenerTest
extends \PHPUnit_Framework_TestCase
16 private function getEvent(Request
$request)
18 $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')
19 ->disableOriginalConstructor()
22 return new GetResponseEvent($kernel, $request, HttpKernelInterface
::MASTER_REQUEST
);
25 public function testWithoutSession()
27 $request = Request
::create('/');
29 $listener = new LocaleListener('fr');
30 $event = $this->getEvent($request);
32 $listener->onKernelRequest($event);
33 $this->assertEquals('en', $request->getLocale());
36 public function testWithPreviousSession()
38 $request = Request
::create('/');
39 // generate a previous session
40 $request->cookies
->set('MOCKSESSID', 'foo');
41 $request->setSession(new Session(new MockArraySessionStorage()));
43 $listener = new LocaleListener('fr');
44 $event = $this->getEvent($request);
46 $listener->onKernelRequest($event);
47 $this->assertEquals('fr', $request->getLocale());
50 public function testLocaleFromRequestAttribute()
52 $request = Request
::create('/');
53 // generate a previous session
54 $request->cookies
->set('MOCKSESSID', 'foo');
55 $request->setSession(new Session(new MockArraySessionStorage()));
56 $request->attributes
->set('_locale', 'es');
58 $listener = new LocaleListener('fr');
59 $event = $this->getEvent($request);
61 $listener->onKernelRequest($event);
62 $this->assertEquals('en', $request->getLocale());
63 $this->assertEquals('es', $request->getSession()->get('_locale'));
66 public function testSubscribedEvents()
68 $request = Request
::create('/');
69 // generate a previous session
70 $request->cookies
->set('MOCKSESSID', 'foo');
71 $request->setSession(new Session(new MockArraySessionStorage()));
73 $listener = new LocaleListener('fr');
74 $event = $this->getEvent($request);
76 $dispatcher = new EventDispatcher();
77 $dispatcher->addSubscriber($listener);
79 $dispatcher->dispatch(
80 KernelEvents
::REQUEST
,
84 $this->assertEquals('fr', $request->getLocale());