/**
  * @return RouterHostnameRule
  **/
 protected function buildHostnameRuleWithDefault()
 {
     $route = RouterHostnameRule::create(':subdomain.example.com')->setDefaults(array('area' => 'ctrl', 'action' => 'act', 'subdomain' => 'bar'))->setRequirements(array('subdomain' => '(foo|bar)'));
     return $route;
 }
 public function testAssemblyWithHostnameAndTransparent()
 {
     $chain = new RouterChainRule();
     $host = RouterHostnameRule::create(':subdomain.example.com')->setDefaults(array('subdomain' => 'www'));
     $transparent = RouterTransparentRule::create(':bar/:area/:action')->setDefaults(array('bar' => 'barvalue', 'area' => 'controller', 'action' => 'create'));
     $chain->chain($host)->chain($transparent);
     $this->assertEquals('http://www.example.com/', $chain->assembly());
     $this->assertEquals('http://www.example.com/barvalue/controller/misc', $chain->assembly(array('action' => 'misc')));
     $this->assertEquals('http://www.example.com/barvalue/misc', $chain->assembly(array('area' => 'misc')));
     $this->assertEquals('http://www.example.com/misc', $chain->assembly(array('bar' => 'misc')));
 }
 public function testAssemblingWithHostnameAndTransparentWithBaseUrl()
 {
     $base = 'http://www.example.com/~users/public/www/';
     $hostname = RouterHostnameRule::create(':subdomain.example.com')->setDefaults(array('subdomain' => 'www'));
     $transparent = RouterTransparentRule::create('/company/:id')->setRequirements(array('id' => '\\d+'));
     $chain = RouterChainRule::create()->chain($hostname)->chain($transparent);
     $this->router->setBaseUrl(HttpUrl::create()->parse($base));
     $this->router->addRoute('chain', $chain);
     $this->assertEquals('http://test.example.com/~users/public/www/company/123', $this->router->assembly(array('subdomain' => 'test', 'id' => 123), 'chain'));
 }