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