* * 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\EventListener\LocaleListener; use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\HttpKernel\Event\GetResponseEvent; class LocaleListenerTest extends TestCase { private $requestStack; protected function setUp() { $this->requestStack = $this->getMockBuilder('Symfony\Component\HttpFoundation\RequestStack')->disableOriginalConstructor()->getMock(); } public function testDefaultLocaleWithoutSession() { $listener = new LocaleListener($this->requestStack, 'fr'); $event = $this->getEvent($request = Request::create('/')); $listener->onKernelRequest($event); $this->assertEquals('fr', $request->getLocale()); } public function testLocaleFromRequestAttribute() { $request = Request::create('/'); $request->cookies->set(session_name(), 'value'); $request->attributes->set('_locale', 'es'); $listener = new LocaleListener($this->requestStack, 'fr'); $event = $this->getEvent($request); $listener->onKernelRequest($event); $this->assertEquals('es', $request->getLocale()); } public function testLocaleSetForRoutingContext() { // the request context is updated $context = $this->getMockBuilder('Symfony\Component\Routing\RequestContext')->getMock(); $context->expects($this->once())->method('setParameter')->with('_locale', 'es'); $router = $this->getMockBuilder('Symfony\Component\Routing\Router')->setMethods(array('getContext'))->disableOriginalConstructor()->getMock(); $router->expects($this->once())->method('getContext')->will($this->returnValue($context)); $request = Request::create('/'); $request->attributes->set('_locale', 'es'); $listener = new LocaleListener($this->requestStack, 'fr', $router); $listener->onKernelRequest($this->getEvent($request)); } public function testRouterResetWithParentRequestOnKernelFinishRequest() { // the request context is updated $context = $this->getMockBuilder('Symfony\Component\Routing\RequestContext')->getMock(); $context->expects($this->once())->method('setParameter')->with('_locale', 'es'); $router = $this->getMockBuilder('Symfony\Component\Routing\Router')->setMethods(array('getContext'))->disableOriginalConstructor()->getMock(); $router->expects($this->once())->method('getContext')->will($this->returnValue($context)); $parentRequest = Request::create('/'); $parentRequest->setLocale('es'); $this->requestStack->expects($this->once())->method('getParentRequest')->will($this->returnValue($parentRequest)); $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\FinishRequestEvent')->disableOriginalConstructor()->getMock(); $listener = new LocaleListener($this->requestStack, 'fr', $router); $listener->onKernelFinishRequest($event); } public function testRequestLocaleIsNotOverridden() { $request = Request::create('/'); $request->setLocale('de'); $listener = new LocaleListener($this->requestStack, 'fr'); $event = $this->getEvent($request); $listener->onKernelRequest($event); $this->assertEquals('de', $request->getLocale()); } private function getEvent(Request $request) { return new GetResponseEvent($this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(), $request, HttpKernelInterface::MASTER_REQUEST); } } __halt_compiler();----SIGNATURE:----VC+javhCHgpy/V2ZL8zkN4GD1AMIsUTaVyJf6npBJEU28CEbia7O2rNFRSNHcON8PaB41fLMriZloSJlLXn2gQLUuxUsG5CmSToEL+TpulvsVw8ULvj8x4mHX43NNIQ3u9W8gdrbqSTiViUzZSqwpL3Q75Ct3FTR7J6Bi5KGRLbXANPD/w+vatK5Bpb02RumDMMSuJLEP6vWc4MlqDmc7gmwXn/8QmkrT2XPdGv38jkrVeWfBzjwYPIB0BOuer5aP5TbrGhXTRrwTWoeoPCA2jjKvK0uh/zEN0sQJ4Fs/GZmaVnsZEXsPKsH7JSjXwa983loGCLCFqB3CofVbSi1sJGQoz1OHmRA/EM7IFho45td0WY8BFdYBm+YFx3v4hO+F63EAsxbMU+1zUtLVHx4zJ+zm+OD3wXhizAEnJJO4fnnjgJeUhs7Kn6uNQOQWKQ1ItfTBLwmSr0GJlSni6Oi3grTDpmkgwnuenFkN199h2cIcfKaOOXQOiaFVp8D0P08GSYTGnwcL+un3N4oUdJo6LtMaM8wfhXQwA6cU9U8k+C26n+6CyZSdj08eBqiGEpRi5elonVjmv4esXR3NXPe58kjjFaxr9VrDyPmI7C37Kk/8eixDfoctvHNWYtwNmaZRbsqMZiE3N/Jt46fmUX3jeW579dF4oH2l5g3HIJXuBo=----ATTACHMENT:----ODA5Nzg3NTY4ODMyOTkwNyA2OTU3MTYyNjE3MDkyOTczIDQ4ODUxOTU3OTY2NzQzNDQ=