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