]>
Commit | Line | Data |
---|---|---|
2aac2f27 JB |
1 | <?php |
2 | ||
3 | namespace Wallabag\CoreBundle\Tests\EventListener; | |
4 | ||
5 | use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; | |
6 | use Symfony\Component\EventDispatcher\EventDispatcher; | |
7 | use Symfony\Component\HttpFoundation\Request; | |
8 | use Symfony\Component\HttpKernel\KernelEvents; | |
9 | use Symfony\Component\HttpKernel\Event\GetResponseEvent; | |
10 | use Symfony\Component\HttpKernel\HttpKernelInterface; | |
11 | use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage; | |
12 | use Symfony\Component\HttpFoundation\Session\Session; | |
13 | use Wallabag\CoreBundle\EventListener\LocaleListener; | |
14 | ||
15 | class 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 | } |