]> git.immae.eu Git - github/wallabag/wallabag.git/blob - tests/Wallabag/CoreBundle/Event/Listener/LocaleListenerTest.php
Add a real configuration for CS-Fixer
[github/wallabag/wallabag.git] / tests / Wallabag / CoreBundle / Event / Listener / LocaleListenerTest.php
1 <?php
2
3 namespace Tests\Wallabag\CoreBundle\Event\Listener;
4
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;
13
14 class LocaleListenerTest extends \PHPUnit_Framework_TestCase
15 {
16 public function testWithoutSession()
17 {
18 $request = Request::create('/');
19
20 $listener = new LocaleListener('fr');
21 $event = $this->getEvent($request);
22
23 $listener->onKernelRequest($event);
24 $this->assertSame('en', $request->getLocale());
25 }
26
27 public function testWithPreviousSession()
28 {
29 $request = Request::create('/');
30 // generate a previous session
31 $request->cookies->set('MOCKSESSID', 'foo');
32 $request->setSession(new Session(new MockArraySessionStorage()));
33
34 $listener = new LocaleListener('fr');
35 $event = $this->getEvent($request);
36
37 $listener->onKernelRequest($event);
38 $this->assertSame('fr', $request->getLocale());
39 }
40
41 public function testLocaleFromRequestAttribute()
42 {
43 $request = Request::create('/');
44 // generate a previous session
45 $request->cookies->set('MOCKSESSID', 'foo');
46 $request->setSession(new Session(new MockArraySessionStorage()));
47 $request->attributes->set('_locale', 'es');
48
49 $listener = new LocaleListener('fr');
50 $event = $this->getEvent($request);
51
52 $listener->onKernelRequest($event);
53 $this->assertSame('en', $request->getLocale());
54 $this->assertSame('es', $request->getSession()->get('_locale'));
55 }
56
57 public function testSubscribedEvents()
58 {
59 $request = Request::create('/');
60 // generate a previous session
61 $request->cookies->set('MOCKSESSID', 'foo');
62 $request->setSession(new Session(new MockArraySessionStorage()));
63
64 $listener = new LocaleListener('fr');
65 $event = $this->getEvent($request);
66
67 $dispatcher = new EventDispatcher();
68 $dispatcher->addSubscriber($listener);
69
70 $dispatcher->dispatch(
71 KernelEvents::REQUEST,
72 $event
73 );
74
75 $this->assertSame('fr', $request->getLocale());
76 }
77
78 private function getEvent(Request $request)
79 {
80 $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')
81 ->disableOriginalConstructor()
82 ->getMock();
83
84 return new GetResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
85 }
86 }