* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpKernel\Tests\EventListener; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Event\FinishRequestEvent; use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\EventListener\TranslatorListener; use Symfony\Component\HttpKernel\HttpKernelInterface; class TranslatorListenerTest extends TestCase { private $listener; private $translator; private $requestStack; protected function setUp() { $this->translator = $this->getMockBuilder('Symfony\Component\Translation\TranslatorInterface')->getMock(); $this->requestStack = $this->getMockBuilder('Symfony\Component\HttpFoundation\RequestStack')->getMock(); $this->listener = new TranslatorListener($this->translator, $this->requestStack); } public function testLocaleIsSetInOnKernelRequest() { $this->translator ->expects($this->once()) ->method('setLocale') ->with($this->equalTo('fr')); $event = new GetResponseEvent($this->createHttpKernel(), $this->createRequest('fr'), HttpKernelInterface::MASTER_REQUEST); $this->listener->onKernelRequest($event); } public function testDefaultLocaleIsUsedOnExceptionsInOnKernelRequest() { $this->translator ->expects($this->at(0)) ->method('setLocale') ->will($this->throwException(new \InvalidArgumentException())); $this->translator ->expects($this->at(1)) ->method('setLocale') ->with($this->equalTo('en')); $event = new GetResponseEvent($this->createHttpKernel(), $this->createRequest('fr'), HttpKernelInterface::MASTER_REQUEST); $this->listener->onKernelRequest($event); } public function testLocaleIsSetInOnKernelFinishRequestWhenParentRequestExists() { $this->translator ->expects($this->once()) ->method('setLocale') ->with($this->equalTo('fr')); $this->setMasterRequest($this->createRequest('fr')); $event = new FinishRequestEvent($this->createHttpKernel(), $this->createRequest('de'), HttpKernelInterface::SUB_REQUEST); $this->listener->onKernelFinishRequest($event); } public function testLocaleIsNotSetInOnKernelFinishRequestWhenParentRequestDoesNotExist() { $this->translator ->expects($this->never()) ->method('setLocale'); $event = new FinishRequestEvent($this->createHttpKernel(), $this->createRequest('de'), HttpKernelInterface::SUB_REQUEST); $this->listener->onKernelFinishRequest($event); } public function testDefaultLocaleIsUsedOnExceptionsInOnKernelFinishRequest() { $this->translator ->expects($this->at(0)) ->method('setLocale') ->will($this->throwException(new \InvalidArgumentException())); $this->translator ->expects($this->at(1)) ->method('setLocale') ->with($this->equalTo('en')); $this->setMasterRequest($this->createRequest('fr')); $event = new FinishRequestEvent($this->createHttpKernel(), $this->createRequest('de'), HttpKernelInterface::SUB_REQUEST); $this->listener->onKernelFinishRequest($event); } private function createHttpKernel() { return $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(); } private function createRequest($locale) { $request = new Request(); $request->setLocale($locale); return $request; } private function setMasterRequest($request) { $this->requestStack ->expects($this->any()) ->method('getParentRequest') ->will($this->returnValue($request)); } } __halt_compiler();----SIGNATURE:----iDd7G93IP91d1qRS3qB/Ly+lbXGwKmxS0cu9fmTvsMnXkEoG7+yviRK4YwLUWwVScluDrgnJfpQIuHaM0h2G4DY1tjY0v4L4JplXIMceE9aBm7NH09+W2z3/dg3bbKcGwJjJDxU/GpZ8/2WErdRcZo3z0zn9WYhXKKyTwCd0CyoZpBeVbUFb208cd5zpCE7kif2iJCvHl3cJhGgrwswyeXvThFx5Nio6ufKK8oYg5LEL2P2+Xh2EFSxr+lT/tubKCxZ/g+OB2+0WtM0Y5wpWdm33RmJ3TF/xojx+zaSCYvedmR4pJ07jmF1Ib+bowMOdwJt7Z4nsB9XQ/HC5oD7OVRnzlPrf9Fh6mYnxEvBkPpKrEycga3HJTHGuxNxJwa+0aoi9RR1rTHb6MzNLbnFYApnjny6KhjOSRmf0ksx88zS9xYr56+Q/LbAfE/OsRocY5nTXNUfjaxpRKfr3vcDmb/X9kNnKELMxR2XF16JIa0lCp/VEgtivB0QdyblRa69IHElA2AeSjunCawh5tm1NuRW04oVzCoHwpeLzJ9Qq3ISurTYZsYItywf0HT3VRgwu5wcj5WH2G/19IYwWaVET2u3tpBkKUa5EnoTWgvc+dF2n/aIXkVWo9JR5SJ3tsoD7sBDLP0Dy6vxPp3ucik3fLub1fAC0x07093oQ7YcgVME=----ATTACHMENT:----OTk1NjY5NzYwNjgzNTI0MyA1MzE2Mzk4OTIyODIzMjU1IDQ2NzQ3ODA4NjE3MDkxOTE=