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