]> git.immae.eu Git - github/wallabag/wallabag.git/blame - tests/Wallabag/CoreBundle/Event/Listener/LocaleListenerTest.php
Add missing TestCase namespace
[github/wallabag/wallabag.git] / tests / Wallabag / CoreBundle / Event / Listener / LocaleListenerTest.php
CommitLineData
2aac2f27
JB
1<?php
2
48656e0e 3namespace Tests\Wallabag\CoreBundle\Event\Listener;
2aac2f27 4
4b6942d2 5use PHPUnit\Framework\TestCase;
2aac2f27
JB
6use Symfony\Component\EventDispatcher\EventDispatcher;
7use Symfony\Component\HttpFoundation\Request;
619cc453
JB
8use Symfony\Component\HttpFoundation\Session\Session;
9use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
2aac2f27
JB
10use Symfony\Component\HttpKernel\Event\GetResponseEvent;
11use Symfony\Component\HttpKernel\HttpKernelInterface;
619cc453 12use Symfony\Component\HttpKernel\KernelEvents;
48656e0e 13use Wallabag\CoreBundle\Event\Listener\LocaleListener;
2aac2f27 14
4b6942d2 15class LocaleListenerTest extends TestCase
2aac2f27 16{
2aac2f27
JB
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);
f808b016 25 $this->assertSame('en', $request->getLocale());
2aac2f27
JB
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);
f808b016 39 $this->assertSame('fr', $request->getLocale());
2aac2f27
JB
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);
f808b016
JB
54 $this->assertSame('en', $request->getLocale());
55 $this->assertSame('es', $request->getSession()->get('_locale'));
2aac2f27
JB
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
f808b016
JB
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);
2aac2f27
JB
86 }
87}