123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- <?php
- /*
- * This file is part of the Sonata package.
- *
- * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Sonata\AdminBundle\Tests\Route;
- use Sonata\AdminBundle\Route\RouteCollection;
- class RouteCollectionTest extends \PHPUnit_Framework_TestCase
- {
- public function testGetter()
- {
- $routeCollection = new RouteCollection('base.Code.Route', 'baseRouteName', 'baseRoutePattern', 'baseControllerName');
- $this->assertEquals('base.Code.Route', $routeCollection->getBaseCodeRoute());
- $this->assertEquals('baseRouteName', $routeCollection->getBaseRouteName());
- $this->assertEquals('baseRoutePattern', $routeCollection->getBaseRoutePattern());
- $this->assertEquals('baseControllerName', $routeCollection->getBaseControllerName());
- }
- public function testActionify()
- {
- $routeCollection = new RouteCollection('base.Code.Route', 'baseRouteName', 'baseRoutePattern', 'BundleName:ControllerName');
- $this->assertEquals('fooBar', $routeCollection->actionify('Foo bar'));
- $this->assertEquals('bar', $routeCollection->actionify('Foo.bar'));
- }
- public function testActionifyService()
- {
- $routeCollection = new RouteCollection('base.Code.Route', 'baseRouteName', 'baseRoutePattern', 'baseControllerService');
- $this->assertEquals('fooBarAction', $routeCollection->actionify('Foo bar'));
- $this->assertEquals('barAction', $routeCollection->actionify('Foo.bar'));
- }
- public function testCode()
- {
- $routeCollection = new RouteCollection('base.Code.Route', 'baseRouteName', 'baseRoutePattern', 'baseControllerName');
- $this->assertEquals('base.Code.Route.test', $routeCollection->getCode('test'));
- $this->assertEquals('base.Code.Route.test', $routeCollection->getCode('base.Code.Route.test'));
- }
- public function testCollection()
- {
- $routeCollection = new RouteCollection('base.Code.Route', 'baseRouteName', 'baseRoutePattern', 'baseControllerName');
- $routeCollection->add('view');
- $this->assertTrue($routeCollection->has('view'));
- $routeCollection->remove('view');
- $this->assertFalse($routeCollection->has('view'));
- $routeCollection->add('create');
- $route = $routeCollection->get('create');
- $this->assertInstanceOf('Symfony\Component\Routing\Route', $route);
- $routeCollection->add('view');
- $routeCollection->add('edit');
- $routeCollection->clear();
- $this->assertFalse($routeCollection->has('create'));
- $this->assertFalse($routeCollection->has('view'));
- $this->assertFalse($routeCollection->has('edit'));
- $routeCollection->add('create');
- $routeCollection->add('view');
- $routeCollection->add('edit');
- $routeCollection->add('list');
- $routeCollection->clearExcept(array('create', 'edit'));
- $this->assertTrue($routeCollection->has('create'));
- $this->assertTrue($routeCollection->has('edit'));
- $this->assertFalse($routeCollection->has('view'));
- $this->assertFalse($routeCollection->has('list'));
- }
- public function testGetWithException()
- {
- $this->setExpectedException('\InvalidArgumentException', 'Element "foo" does not exist.');
- $routeCollection = new RouteCollection('base.Code.Route', 'baseRouteName', 'baseRoutePattern', 'baseControllerName');
- $routeCollection->get('foo');
- }
- public function testChildCollection()
- {
- $childCollection = new RouteCollection('baseCodeRouteChild', 'baseRouteNameChild', 'baseRoutePatternChild', 'baseControllerNameChild');
- $childCollection->add('view');
- $childCollection->add('create');
- $parentCollection = new RouteCollection('baseCodeRoute', 'baseRouteName', 'baseRoutePattern', 'baseControllerName');
- $parentCollection->add('view');
- $parentCollection->add('edit');
- $parentCollection->addCollection($childCollection);
- $this->assertTrue($parentCollection->has('view'));
- $this->assertTrue($parentCollection->has('edit'));
- $this->assertFalse($parentCollection->has('create'));
- $this->assertFalse($parentCollection->has('baseCodeRouteChild.edit'));
- }
- public function testRoute()
- {
- $routeCollection = new RouteCollection('baseCodeRoute', 'baseRouteName', 'baseRoutePattern', 'BundleName:ControllerName');
- $routeCollection->add('view');
- $route = $routeCollection->get('view');
- $this->assertEquals('BundleName:ControllerName:view', $route->getDefault('_controller'));
- $this->assertEquals('baseCodeRoute', $route->getDefault('_sonata_admin'));
- $this->assertEquals('baseRouteName_view', $route->getDefault('_sonata_name'));
- }
- public function testRouteWithAllConstructorParameters()
- {
- $baseCodeRoute = 'baseCodeRoute';
- $baseRouteName = 'baseRouteName';
- $baseRoutePattern = 'baseRoutePattern';
- $routeCollection = new RouteCollection($baseCodeRoute, $baseRouteName, $baseRoutePattern, 'BundleName:ControllerName');
- $name = 'view';
- $pattern = 'view';
- $defaults = array(
- '_controller' => 'BundleName:ControllerName:viewAction',
- );
- $requirements = array(
- 'page' => '\d+',
- );
- $options = array(
- 'debug' => true,
- );
- $host = 'test.local';
- $schemes = array(
- 'https',
- );
- $methods = array(
- 'GET',
- 'POST',
- );
- $condition = "context.getMethod() in ['GET', 'HEAD'] and request.headers.get('User-Agent') matches '/firefox/i'";
- $routeCollection->add($name, $pattern, $defaults, $requirements, $options, $host, $schemes, $methods, $condition);
- $route = $routeCollection->get($name);
- $combinedPattern = '/'.$baseRoutePattern.'/'.($pattern ?: $name);
- $this->assertSame($combinedPattern, $route->getPath());
- $this->assertArrayHasKey('_controller', $route->getDefaults());
- $this->assertArrayHasKey('page', $route->getRequirements());
- $this->assertArrayHasKey('debug', $route->getOptions());
- $this->assertSame($host, $route->getHost());
- $this->assertEquals($methods, $route->getMethods());
- if (method_exists($route, 'getCondition')) {
- $this->assertSame($condition, $route->getCondition());
- }
- }
- public function testRouteControllerService()
- {
- $routeCollection = new RouteCollection('baseCodeRoute', 'baseRouteName', 'baseRoutePattern', 'baseControllerServiceName');
- $routeCollection->add('view');
- $route = $routeCollection->get('view');
- $this->assertEquals('baseControllerServiceName:viewAction', $route->getDefault('_controller'));
- $this->assertEquals('baseCodeRoute', $route->getDefault('_sonata_admin'));
- $this->assertEquals('baseRouteName_view', $route->getDefault('_sonata_name'));
- }
- }
|