public function testRemovesModuleRouteListenerParamsWhenReusingMatchedParameters() { $router = new \Zend\Mvc\Router\Http\TreeRouteStack(); $router->addRoute('default', array('type' => 'Zend\\Mvc\\Router\\Http\\Segment', 'options' => array('route' => '/:controller/:action', 'defaults' => array(ModuleRouteListener::MODULE_NAMESPACE => 'ZendTest\\Mvc\\Controller\\TestAsset', 'controller' => 'SampleController', 'action' => 'Dash')), 'child_routes' => array('wildcard' => array('type' => 'Zend\\Mvc\\Router\\Http\\Wildcard', 'options' => array('param_delimiter' => '=', 'key_value_delimiter' => '%'))))); $routeMatch = new RouteMatch(array(ModuleRouteListener::MODULE_NAMESPACE => 'ZendTest\\Mvc\\Controller\\TestAsset', 'controller' => 'Rainbow')); $routeMatch->setMatchedRouteName('default/wildcard'); $event = new MvcEvent(); $event->setRouter($router)->setRouteMatch($routeMatch); $moduleRouteListener = new ModuleRouteListener(); $moduleRouteListener->onRoute($event); $controller = new SampleController(); $controller->setEvent($event); $url = $controller->plugin('url')->fromRoute('default/wildcard', array('Twenty' => 'Cooler'), true); $this->assertEquals('/Rainbow/Dash=Twenty%Cooler', $url); }
public function testUsingNamespaceRouteParameterGivesSameResultAsFullControllerParameter() { $controller1 = 'MappedNs\\Foo\\Controller\\Bar\\Baz\\Sample'; $this->routeMatch->setParam('controller', $controller1); $this->listener->injectActionHandles($this->event); $handles1 = $this->updater->getHandles(); $controller2 = 'MappedNs\\Foo\\Controller\\Bar'; $this->routeMatch->setParam(ModuleRouteListener::MODULE_NAMESPACE, $controller2); $this->routeMatch->setParam('controller', 'Baz\\Sample'); $moduleRouteListener = new ModuleRouteListener(); $moduleRouteListener->onRoute($this->event); $this->listener->injectActionHandles($this->event); $handles2 = $this->updater->getHandles(); $this->assertEquals($handles1, $handles2); }
public function testIsActiveReturnsTrueWhenMatchingRouteWhileUsingModuleRouteListener() { $page = new Page\Mvc(array( 'label' => 'mpinkstonwashere', 'route' => 'roflcopter', 'controller' => 'index' )); $route = new LiteralRoute('/roflcopter'); $router = new TreeRouteStack; $router->addRoute('roflcopter', $route); $routeMatch = new RouteMatch(array( ModuleRouteListener::MODULE_NAMESPACE => 'Application\Controller', 'controller' => 'index' )); $routeMatch->setMatchedRouteName('roflcopter'); $event = new MvcEvent(); $event->setRouter($router) ->setRouteMatch($routeMatch); $moduleRouteListener = new ModuleRouteListener(); $moduleRouteListener->onRoute($event); $page->setRouter($event->getRouter()); $page->setRouteMatch($event->getRouteMatch()); $this->assertEquals(true, $page->isActive()); }
public function testKeepUrlQueryParameters() { $expects = '/ctl/sample'; $this->request->setMethod('POST'); $this->request->setUri($expects); $this->request->setQuery(new Parameters(['id' => '123'])); $routeMatch = $this->event->getRouter()->match($this->request); $this->event->setRouteMatch($routeMatch); $moduleRouteListener = new ModuleRouteListener(); $moduleRouteListener->onRoute($this->event); $this->controller->dispatch($this->request, $this->response); $plugin = $this->plugin; $prgResultRoute = $plugin(); $this->assertInstanceOf('Zend\\Http\\Response', $prgResultRoute); $this->assertTrue($prgResultRoute->getHeaders()->has('Location')); $this->assertEquals($expects . '?id=123', $prgResultRoute->getHeaders()->get('Location')->getUri(), 'expects to redirect for the same url'); $this->assertEquals(303, $prgResultRoute->getStatusCode()); }
public function testReuseMatchedParametersWithSegmentController() { $expects = '/ctl/sample'; $this->request->setMethod('POST'); $this->request->setUri($expects); $this->request->setPost(new Parameters(['postval1' => 'value1'])); $routeMatch = $this->event->getRouter()->match($this->request); $this->event->setRouteMatch($routeMatch); $moduleRouteListener = new ModuleRouteListener(); $moduleRouteListener->onRoute($this->event); $this->controller->dispatch($this->request, $this->response); $plugin = $this->plugin; $prgResultRoute = $plugin($this->form); $this->assertInstanceOf(Response::class, $prgResultRoute); $this->assertTrue($prgResultRoute->getHeaders()->has('Location')); $this->assertEquals($expects, $prgResultRoute->getHeaders()->get('Location')->getUri(), 'redirect to the same url'); $this->assertEquals(303, $prgResultRoute->getStatusCode()); }
public function testInheritedRouteMatchParamsWorkWithModuleRouteListener() { $page = new Page\Mvc(array('label' => 'mpinkstonwashere', 'route' => 'lmaoplane')); $route = new SegmentRoute('/lmaoplane[/:controller]'); $router = new TreeRouteStack(); $router->addRoute('lmaoplane', $route); $routeMatch = new RouteMatch(array(ModuleRouteListener::MODULE_NAMESPACE => 'Application\\Controller', 'controller' => 'index')); $routeMatch->setMatchedRouteName('lmaoplane'); $event = new MvcEvent(); $event->setRouter($router)->setRouteMatch($routeMatch); $moduleRouteListener = new ModuleRouteListener(); $moduleRouteListener->onRoute($event); $page->setRouter($event->getRouter()); $page->setRouteMatch($event->getRouteMatch()); $this->assertEquals('/lmaoplane', $page->getHref()); $page->setUseRouteMatch(true); $this->assertEquals('/lmaoplane/index', $page->getHref()); }
public function testRecursiveDetectIsActiveWhenRouteNameIsKnown() { $parentPage = new Page\Mvc(array('label' => 'some Label', 'route' => 'parentPageRoute')); $childPage = new Page\Mvc(array('label' => 'child', 'route' => 'childPageRoute')); $parentPage->addPage($childPage); $router = new TreeRouteStack(); $router->addRoutes(array('parentPageRoute' => array('type' => 'literal', 'options' => array('route' => '/foo', 'defaults' => array('controller' => 'fooController', 'action' => 'fooAction'))), 'childPageRoute' => array('type' => 'literal', 'options' => array('route' => '/bar', 'defaults' => array('controller' => 'barController', 'action' => 'barAction'))))); $routeMatch = new RouteMatch(array(ModuleRouteListener::MODULE_NAMESPACE => 'Application\\Controller', 'controller' => 'barController', 'action' => 'barAction')); $routeMatch->setMatchedRouteName('childPageRoute'); $event = new MvcEvent(); $event->setRouter($router)->setRouteMatch($routeMatch); $moduleRouteListener = new ModuleRouteListener(); $moduleRouteListener->onRoute($event); $parentPage->setRouter($event->getRouter()); $parentPage->setRouteMatch($event->getRouteMatch()); $childPage->setRouter($event->getRouter()); $childPage->setRouteMatch($event->getRouteMatch()); $this->assertTrue($childPage->isActive(true)); $this->assertTrue($parentPage->isActive(true)); }
public function testUsingNamespaceRouteParameterGivesSameResultAsFullControllerParameter() { $this->routeMatch->setParam('controller', 'MappedNs\\Foo\\Controller\\Bar\\Baz\\Sample'); $myViewModel = new ViewModel(); $this->event->setResult($myViewModel); $this->listener->injectTemplate($this->event); $template1 = $myViewModel->getTemplate(); $this->routeMatch->setParam(ModuleRouteListener::MODULE_NAMESPACE, 'MappedNs\\Foo\\Controller\\Bar'); $this->routeMatch->setParam('controller', 'Baz\\Sample'); $moduleRouteListener = new ModuleRouteListener(); $moduleRouteListener->onRoute($this->event); $myViewModel = new ViewModel(); $this->event->setResult($myViewModel); $this->listener->injectTemplate($this->event); $this->assertEquals($template1, $myViewModel->getTemplate()); }