getEvent($request); $listener->onKernelRequest($event); $this->assertSame('en', $request->getLocale()); } public function testWithPreviousSession() { $request = Request::create('/'); // generate a previous session $request->cookies->set('MOCKSESSID', 'foo'); $request->setSession(new Session(new MockArraySessionStorage())); $listener = new LocaleListener('fr'); $event = $this->getEvent($request); $listener->onKernelRequest($event); $this->assertSame('fr', $request->getLocale()); } public function testLocaleFromRequestAttribute() { $request = Request::create('/'); // generate a previous session $request->cookies->set('MOCKSESSID', 'foo'); $request->setSession(new Session(new MockArraySessionStorage())); $request->attributes->set('_locale', 'es'); $listener = new LocaleListener('fr'); $event = $this->getEvent($request); $listener->onKernelRequest($event); $this->assertSame('en', $request->getLocale()); $this->assertSame('es', $request->getSession()->get('_locale')); } public function testSubscribedEvents() { $request = Request::create('/'); // generate a previous session $request->cookies->set('MOCKSESSID', 'foo'); $request->setSession(new Session(new MockArraySessionStorage())); $listener = new LocaleListener('fr'); $event = $this->getEvent($request); $dispatcher = new EventDispatcher(); $dispatcher->addSubscriber($listener); $dispatcher->dispatch( KernelEvents::REQUEST, $event ); $this->assertSame('fr', $request->getLocale()); } private function getEvent(Request $request) { $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface') ->disableOriginalConstructor() ->getMock(); return new GetResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST); } }