332393eead2fcf8a895081de5be8f744d640f215
[yaffs-website] / vendor / symfony / http-kernel / Tests / EventListener / LocaleListenerTest.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\HttpKernel\Tests\EventListener;
13
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\HttpFoundation\Request;
16 use Symfony\Component\HttpKernel\EventListener\LocaleListener;
17 use Symfony\Component\HttpKernel\HttpKernelInterface;
18 use Symfony\Component\HttpKernel\Event\GetResponseEvent;
19
20 class LocaleListenerTest extends TestCase
21 {
22     private $requestStack;
23
24     protected function setUp()
25     {
26         $this->requestStack = $this->getMockBuilder('Symfony\Component\HttpFoundation\RequestStack')->disableOriginalConstructor()->getMock();
27     }
28
29     public function testDefaultLocaleWithoutSession()
30     {
31         $listener = new LocaleListener($this->requestStack, 'fr');
32         $event = $this->getEvent($request = Request::create('/'));
33
34         $listener->onKernelRequest($event);
35         $this->assertEquals('fr', $request->getLocale());
36     }
37
38     public function testLocaleFromRequestAttribute()
39     {
40         $request = Request::create('/');
41         $request->cookies->set(session_name(), 'value');
42
43         $request->attributes->set('_locale', 'es');
44         $listener = new LocaleListener($this->requestStack, 'fr');
45         $event = $this->getEvent($request);
46
47         $listener->onKernelRequest($event);
48         $this->assertEquals('es', $request->getLocale());
49     }
50
51     public function testLocaleSetForRoutingContext()
52     {
53         // the request context is updated
54         $context = $this->getMockBuilder('Symfony\Component\Routing\RequestContext')->getMock();
55         $context->expects($this->once())->method('setParameter')->with('_locale', 'es');
56
57         $router = $this->getMockBuilder('Symfony\Component\Routing\Router')->setMethods(array('getContext'))->disableOriginalConstructor()->getMock();
58         $router->expects($this->once())->method('getContext')->will($this->returnValue($context));
59
60         $request = Request::create('/');
61
62         $request->attributes->set('_locale', 'es');
63         $listener = new LocaleListener($this->requestStack, 'fr', $router);
64         $listener->onKernelRequest($this->getEvent($request));
65     }
66
67     public function testRouterResetWithParentRequestOnKernelFinishRequest()
68     {
69         // the request context is updated
70         $context = $this->getMockBuilder('Symfony\Component\Routing\RequestContext')->getMock();
71         $context->expects($this->once())->method('setParameter')->with('_locale', 'es');
72
73         $router = $this->getMockBuilder('Symfony\Component\Routing\Router')->setMethods(array('getContext'))->disableOriginalConstructor()->getMock();
74         $router->expects($this->once())->method('getContext')->will($this->returnValue($context));
75
76         $parentRequest = Request::create('/');
77         $parentRequest->setLocale('es');
78
79         $this->requestStack->expects($this->once())->method('getParentRequest')->will($this->returnValue($parentRequest));
80
81         $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\FinishRequestEvent')->disableOriginalConstructor()->getMock();
82
83         $listener = new LocaleListener($this->requestStack, 'fr', $router);
84         $listener->onKernelFinishRequest($event);
85     }
86
87     public function testRequestLocaleIsNotOverridden()
88     {
89         $request = Request::create('/');
90         $request->setLocale('de');
91         $listener = new LocaleListener($this->requestStack, 'fr');
92         $event = $this->getEvent($request);
93
94         $listener->onKernelRequest($event);
95         $this->assertEquals('de', $request->getLocale());
96     }
97
98     private function getEvent(Request $request)
99     {
100         return new GetResponseEvent($this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(), $request, HttpKernelInterface::MASTER_REQUEST);
101     }
102 }