<?php
namespace Symfony\Component\Routing\Tests;
use Symfony\Component\Routing\Router;
class RouterTest extends \PHPUnit_Framework_TestCase {
private $router = null;
private $loader = null;
protected function setUp() {
$this->loader = $this
->getMock('Symfony\\Component\\Config\\Loader\\LoaderInterface');
$this->router = new Router($this->loader, 'routing.yml');
}
public function testSetOptionsWithSupportedOptions() {
$this->router
->setOptions(array(
'cache_dir' => './cache',
'debug' => true,
'resource_type' => 'ResourceType',
));
$this
->assertSame('./cache', $this->router
->getOption('cache_dir'));
$this
->assertTrue($this->router
->getOption('debug'));
$this
->assertSame('ResourceType', $this->router
->getOption('resource_type'));
}
public function testSetOptionsWithUnsupportedOptions() {
$this->router
->setOptions(array(
'cache_dir' => './cache',
'option_foo' => true,
'option_bar' => 'baz',
'resource_type' => 'ResourceType',
));
}
public function testSetOptionWithSupportedOption() {
$this->router
->setOption('cache_dir', './cache');
$this
->assertSame('./cache', $this->router
->getOption('cache_dir'));
}
public function testSetOptionWithUnsupportedOption() {
$this->router
->setOption('option_foo', true);
}
public function testGetOptionWithUnsupportedOption() {
$this->router
->getOption('option_foo', true);
}
public function testThatRouteCollectionIsLoaded() {
$this->router
->setOption('resource_type', 'ResourceType');
$routeCollection = $this
->getMock('Symfony\\Component\\Routing\\RouteCollection');
$this->loader
->expects($this
->once())
->method('load')
->with('routing.yml', 'ResourceType')
->will($this
->returnValue($routeCollection));
$this
->assertSame($routeCollection, $this->router
->getRouteCollection());
}
public function testMatcherIsCreatedIfCacheIsNotConfigured($option) {
$this->router
->setOption($option, null);
$this->loader
->expects($this
->once())
->method('load')
->with('routing.yml', null)
->will($this
->returnValue($this
->getMock('Symfony\\Component\\Routing\\RouteCollection')));
$this
->assertInstanceOf('Symfony\\Component\\Routing\\Matcher\\UrlMatcher', $this->router
->getMatcher());
}
public function provideMatcherOptionsPreventingCaching() {
return array(
array(
'cache_dir',
),
array(
'matcher_cache_class',
),
);
}
public function testGeneratorIsCreatedIfCacheIsNotConfigured($option) {
$this->router
->setOption($option, null);
$this->loader
->expects($this
->once())
->method('load')
->with('routing.yml', null)
->will($this
->returnValue($this
->getMock('Symfony\\Component\\Routing\\RouteCollection')));
$this
->assertInstanceOf('Symfony\\Component\\Routing\\Generator\\UrlGenerator', $this->router
->getGenerator());
}
public function provideGeneratorOptionsPreventingCaching() {
return array(
array(
'cache_dir',
),
array(
'generator_cache_class',
),
);
}
}