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