public function testChainingAssemblyWithRegex() { $chain = new RouterChainRule(); $foo = RouterHostnameRule::create('www.example.com')->setDefaults(array('foo' => 'foo')); $bar = RouterRegexpRule::create('bar')->setDefaults(array('bar' => 'bar'))->setReverse('bar'); $chain->chain($foo)->chain($bar); $request = $this->buildRequest('http://www.example.com/bar'); $res = $chain->match($request); $this->assertInternalType('array', $res); $this->assertRegexp('#[^a-z0-9]?www\\.example\\.com/bar$#i', $chain->assembly()); }
/** * @return Router */ protected function getRouter() { return RouterRewrite::me()->addRoute(self::DEFAULT_ROUTE_NAME, RouterRegexpRule::create(self::ROUTE_REGEXP)->setMap(array(1 => 'area', 4 => 'id', 6 => 'action', 8 => 'format'))->setDefaults(array('area' => self::DEFAULT_CONTROLLER, 'action' => self::DEFAULT_ACTION, 'id' => 0, 'format' => self::DEFAULT_FORMAT))); }
public function testAssemblyOfRouteWithMergedMatchedParts() { $route = RouterRegexpRule::create('itemlist(?:/(\\d+))?')->setDefaults(array('page' => 1))->setMap(array(1 => 'page'))->setReverse('itemlist/%d'); $this->assertEquals(array('page' => 1), $route->match($this->buildRequest('http://localhost/itemlist/'))); $this->assertEquals('itemlist/1', $route->assembly()); $this->assertEquals(array('page' => 2), $route->match($this->buildRequest('http://localhost/itemlist/2'))); $this->assertEquals('itemlist/2', $route->assembly()); $this->assertEquals('itemlist/3', $route->assembly(array('page' => 3))); $this->assertEquals('itemlist/1', $route->assembly(array('page' => null))); }
public function testRouteWithHostnameMaskAndRegexpAndBaseUrlRuleChain() { $base = 'http://www.example.com/~user/public_html/www/'; $request = $this->buildRequest('http://test123d.example.com/~user/public_html/www/test/123.html'); $host = RouterHostnameRule::create(':subdomain.example.com')->setDefaults(array('module' => 'nope-bla', 'area' => 'test'))->setRequirements(array('subdomain' => '[\\da-z][\\da-z\\_]*[\\da-z]')); $transparent = RouterRegexpRule::create('test/(\\d+)\\.html')->setDefaults(array(1 => 345))->setMap(array(1 => 'testId')); $chain = new RouterChainRule(); $chain->chain($host)->chain($transparent); $this->router->setBaseUrl(HttpUrl::create()->parse($base)); $this->router->addRoute('HostnameMaskWithRegexp', $chain); $token = $this->router->route($request); $this->assertEquals(4, count($token->getAttached())); $this->assertEquals('test', $token->getAttachedVar('area')); $this->assertEquals(123, $token->getAttachedVar('testId')); $this->assertEquals('nope-bla', $token->getAttachedVar('module')); $this->assertEquals('test123d', $token->getAttachedVar('subdomain')); }