/**
  * testHasAndGetRoute
  *
  * @return  void
  *
  * @covers Windwalker\Router\Router::hasRoutes
  * @covers Windwalker\Router\Router::getRoutes
  */
 public function testHasAndGetRoute()
 {
     $this->instance->addRoute($route = new Route('foo', '/foo'));
     $this->assertFalse($this->instance->hasRoute('bar'));
     $this->assertTrue($this->instance->hasRoute('foo'));
     $this->assertNull($this->instance->getRoute('bar'));
     $this->assertSame($route, $this->instance->getRoute('foo'));
 }
Example #2
0
 /**
  * Method to test addRoute().
  *
  * @return void
  *
  * @covers Windwalker\Router\Router::addRoute
  */
 public function testAddRoute()
 {
     $this->instance->addRoute(new Route(null, 'flower/(id)/(alias)', array('_controller' => 'FlowerController')));
     $routes = $this->instance->getRoutes();
     $this->assertInstanceOf('Windwalker\\Router\\Route', $routes[0]);
     $result = $this->instance->match('flower/5/foo');
     $this->assertInstanceOf('Windwalker\\Router\\Route', $result);
     $result = $result->getVariables();
     $this->assertEquals('FlowerController', $result['_controller']);
     $this->assertEquals('foo', $result['alias']);
     $this->instance->addRoute(new Route('sakura', 'flower/(id)/sakura', array('_controller' => 'SakuraController')));
     $routes = $this->instance->getRoutes();
     $this->assertInstanceOf('Windwalker\\Router\\Route', $routes['sakura']);
     $this->instance->addRoute('foo', 'foo/bar/baz', array('_ctrl' => 'yoo'));
     $routes = $this->instance->getRoutes();
     $this->assertInstanceOf('Windwalker\\Router\\Route', $routes['foo']);
 }
Example #3
0
 /**
  * addRoute
  *
  * @param string $pattern
  * @param string $controller
  *
  * @throws  \LogicException
  * @throws  \InvalidArgumentException
  * @return  static
  */
 public function addMap($pattern, $controller = null)
 {
     if (!is_string($controller)) {
         throw new \InvalidArgumentException('Please give me controller name string. ' . ucfirst(gettype($controller)) . ' given.');
     }
     if ($pattern instanceof Route) {
         throw new \LogicException('Do not use Route object in ' . get_called_class());
     }
     return parent::addRoute(null, $pattern, array('_controller' => $controller));
 }
 /**
  * Register routing.
  *
  * @param Router  $router Router object.
  * @param string  $option The component option name.
  * @param string  $type   The routing file type.
  *
  * @return RouterInterface
  */
 public static function registerRouting(Router $router, $option, $type = self::TYPE_JSON)
 {
     // Don't register twice.
     if (self::$registered) {
         return $router;
     }
     // Register routers.
     $maps = static::getRouting($option, $type);
     $default = array('pattern' => null, 'view' => null, 'task' => null, 'layout' => null, 'format' => null, 'methods' => null, 'requirements' => null, 'extra' => null, 'buildHandler' => null, 'parseHandler' => null);
     foreach ((array) $maps as $name => $map) {
         $map = array_merge($default, $map);
         if (empty($map['pattern'])) {
             throw new \LogicException('Are you kidding me? Add pattern to: ' . $name);
         }
         $variables = array('view' => $map['view'], 'task' => $map['task'], 'layout' => $map['layout'], 'format' => $map['format']);
         $allowMethods = (array) $map['methods'];
         $options['requirements'] = (array) $map['requirements'];
         $options['extra'] = (array) $map['extra'];
         $options['extra']['buildHandler'] = !empty($map['buildHandler']) ? $map['buildHandler'] : '';
         $options['extra']['parseHandler'] = !empty($map['parseHandler']) ? $map['parseHandler'] : '';
         $router->addRoute(new Route($name, $map['pattern'], $variables, $allowMethods, $options));
     }
     return $router;
 }