Updating Media dependent modules to versions compatible with core Media.
[yaffs-website] / vendor / symfony / http-kernel / Tests / EventListener / TranslatorListenerTest.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\Event\FinishRequestEvent;
17 use Symfony\Component\HttpKernel\Event\GetResponseEvent;
18 use Symfony\Component\HttpKernel\EventListener\TranslatorListener;
19 use Symfony\Component\HttpKernel\HttpKernelInterface;
20
21 class TranslatorListenerTest extends TestCase
22 {
23     private $listener;
24     private $translator;
25     private $requestStack;
26
27     protected function setUp()
28     {
29         $this->translator = $this->getMockBuilder('Symfony\Component\Translation\TranslatorInterface')->getMock();
30         $this->requestStack = $this->getMockBuilder('Symfony\Component\HttpFoundation\RequestStack')->getMock();
31         $this->listener = new TranslatorListener($this->translator, $this->requestStack);
32     }
33
34     public function testLocaleIsSetInOnKernelRequest()
35     {
36         $this->translator
37             ->expects($this->once())
38             ->method('setLocale')
39             ->with($this->equalTo('fr'));
40
41         $event = new GetResponseEvent($this->createHttpKernel(), $this->createRequest('fr'), HttpKernelInterface::MASTER_REQUEST);
42         $this->listener->onKernelRequest($event);
43     }
44
45     public function testDefaultLocaleIsUsedOnExceptionsInOnKernelRequest()
46     {
47         $this->translator
48             ->expects($this->at(0))
49             ->method('setLocale')
50             ->will($this->throwException(new \InvalidArgumentException()));
51         $this->translator
52             ->expects($this->at(1))
53             ->method('setLocale')
54             ->with($this->equalTo('en'));
55
56         $event = new GetResponseEvent($this->createHttpKernel(), $this->createRequest('fr'), HttpKernelInterface::MASTER_REQUEST);
57         $this->listener->onKernelRequest($event);
58     }
59
60     public function testLocaleIsSetInOnKernelFinishRequestWhenParentRequestExists()
61     {
62         $this->translator
63             ->expects($this->once())
64             ->method('setLocale')
65             ->with($this->equalTo('fr'));
66
67         $this->setMasterRequest($this->createRequest('fr'));
68         $event = new FinishRequestEvent($this->createHttpKernel(), $this->createRequest('de'), HttpKernelInterface::SUB_REQUEST);
69         $this->listener->onKernelFinishRequest($event);
70     }
71
72     public function testLocaleIsNotSetInOnKernelFinishRequestWhenParentRequestDoesNotExist()
73     {
74         $this->translator
75             ->expects($this->never())
76             ->method('setLocale');
77
78         $event = new FinishRequestEvent($this->createHttpKernel(), $this->createRequest('de'), HttpKernelInterface::SUB_REQUEST);
79         $this->listener->onKernelFinishRequest($event);
80     }
81
82     public function testDefaultLocaleIsUsedOnExceptionsInOnKernelFinishRequest()
83     {
84         $this->translator
85             ->expects($this->at(0))
86             ->method('setLocale')
87             ->will($this->throwException(new \InvalidArgumentException()));
88         $this->translator
89             ->expects($this->at(1))
90             ->method('setLocale')
91             ->with($this->equalTo('en'));
92
93         $this->setMasterRequest($this->createRequest('fr'));
94         $event = new FinishRequestEvent($this->createHttpKernel(), $this->createRequest('de'), HttpKernelInterface::SUB_REQUEST);
95         $this->listener->onKernelFinishRequest($event);
96     }
97
98     private function createHttpKernel()
99     {
100         return $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
101     }
102
103     private function createRequest($locale)
104     {
105         $request = new Request();
106         $request->setLocale($locale);
107
108         return $request;
109     }
110
111     private function setMasterRequest($request)
112     {
113         $this->requestStack
114             ->expects($this->any())
115             ->method('getParentRequest')
116             ->will($this->returnValue($request));
117     }
118 }